AMI Amazon Machine Image trong AWS EC2 - oPhamThiDao/Devops GitHub Wiki
AMI là gì?
Hiểu đơn giản thì AMI chính là OS mà bạn lựa chọn sử dụng khi khởi tạo máy chủ ảo Instance.
Bạn cần phải chỉ định rõ nguồn AMI khi bạn muốn tạo một máy chủ ảo Instance EC2. Bạn có thể tạo nhiều Instance từ 1 nguồn AMI duy nhất khi bạn cần nhiều Instance có chung cấu hình. Hay bạn cũng có thể sử dụng những AMI khác nhau để tạo các Instance với những cấu hình riêng biệt.
Một AMI sẽ bao gồm các đặc điểm sau :
- Một hoặc nhiều EBS, hoặc instance-store-backed AMIs, template cho root volume của máy chủ ảo Instance ví dụ như hệ điều hành (OS), application server, hay những application cần thiết…
- Launch permissions : quyền kiểm soát tài khoản AWS nào được phép sử dụng AMI để khởi tạo máy chủ ảo Instance.
- Block Device Mapping: chỉ định volumes nào sẽ được map với instance khi instance khởi tạo.
Using an AMI
Sơ đồ sau sẽ tóm tắt vòng đời của AMI. Sau khi bạn tạo và đăng ký AMI, bạn có thể sử dụng nó để khởi chạy các phiên bản mới. (Bạn cũng có thể khởi chạy các phiên bản từ AMI nếu chủ sở hữu AMI cấp cho bạn quyền khởi chạy.) Bạn có thể sao chép một AMI trong cùng một Khu vực hoặc sang các Khu vực khác nhau. Khi bạn không còn yêu cầu AMI nữa, bạn có thể hủy đăng ký nó.
Sau khi tạo 1 instance từ AMI bạn có thể kết nối tới nó. Khi đã kết nối thành công, bạn có thể sử dụng instance này giống như bất ký máy chủ khác.
Creating your own AMI
Bạn có thể khởi chạy instance từ AMI hiện có, tùy chỉnh instance và lưu cấu hình cập nhật này làm AMI tùy chỉnh.
Root storage device của instance xác định quy trình bạn làm theo để tạo AMI. Roo volume của một instance là một Amazon EBS volumn hoặc instance store volume.
Buying, sharing, and selling AMIs
Sau khi bạn tạo một AMI, bạn có thể giữ nó ở chế độ riêng tư (private) để chỉ bạn mới có thể sử dụng nó hoặc bạn có thể chia sẻ nó với một danh sách tài khoản AWS được chỉ định. Bạn cũng có thể đặt tùy chỉnh AMI của mình ở chế độ công khai (public) để cộng đồng có thể sử dụng nó. Xây dựng một AMI an toàn, bảo mật, có thể sử dụng được cho cộng đồng là cả một quá trình không hề đơn giản. Đó được gọi là “Shared AMI“.
Bạn có thể mua AMI từ bên thứ ba, bao gồm các AMI đi kèm với hợp đồng dịch vụ từ các tổ chức như Red Hat. Bạn cũng có thể tạo một AMI và bán nó cho người dùng Amazon EC2 khác. Để biết thêm thông tin về việc mua hoặc bán AMI, hãy xem “Paid AMI“.
Amazon Machine Image
Bạn có thể hủy đăng ký một AMI khi đã hoàn thành nó. Sau khi hủy đăng ký AMI, bạn sẽ không khởi chạy được instance mới từ AMI này nhưng với instance được tạo từ AMI này trước đó thì không bị ảnh hưởng gì.
AMI types
Khi lựa chọn AMI bạn sẽ cần dựa trên các tiêu chí sau để tạo AMI phù hợp với server của mình:
-
Region (see Regions and Zones): chia theo khu vực mà AMI cho phép sử dụng hoặc hỗ trợ sử dụng , giống region của máy chủ ảo Instance EC2.
-
Operating system: chia theo hệ điều hành gồm Linux, Windows,…
-
Architecture (32-bit or 64-bit): kiến trúc vi xử lý mà bạn lựa chọn là 32bit hay 64bit
-
Launch permissions: quyền truy cập và sử dụng AMI của bạn.
-
Storage for the root device: phân chia theo nơi lưu trữ Root Device.
Launch permissions
Quyền khởi chạy được phân 3 loại sau:
Loại quyền | Mô tar |
---|---|
public | cho phép truy cập sử dụng AMI từ tất cả tài khoản AWS. |
explicit | cấp phép sử dụng cho tài khoản AWS sử dụng AMI. |
implicit | chỉ có người sở hữu của AMI mới được sử dụng. |
Storage for the Root Device
Trong những tiêu chí trên thì Storage cho Root Device là cái bạn cần quan tâm nhất bởi nó ảnh hưởng lớn đến việc khởi động, lưu trữ.. của instance.
Tất cả AMIs được phần loại thành Amazon EBS-backed và Amazon instance store-backed:
- Amazon EBS-backed: Root device cho một instance được khởi chạy từ AMI là một ổ đĩa Amazon EBS được tạo từ một Amazon EBS snapshot.
- Amazon instance store-backed: root device cho một instance được khởi chạy từ một AMI là một ổ đĩa lưu trữ instance được tạo từ một template được lưu trữ trên Amazone S3
Dưới đây là sự so sánh khác nhau giữa 2 loại AMI naỳ
Đặc điểm | Amazon EBS-backed | Amazon instance store-backed |
---|---|---|
Thời gian Boot | Thường ít hơn 1 phút | Thường ít hơn 5 phút |
Giới hạn dữ liệu | 16TiB | 10TiB |
Upgrade Instance | Có thể thay đổi instance type, kernel, ram… khi instance stop | Không thể thay đổi thuộc tính của instance |
Phí tổn | Tính phí cho phần sử dụng instance, sử dụng Amazon EBS volume và lưu trữ AMI | Tính phí cho phần sử dụng instance và lưu AMI trên S3 |
Tạo AMI | Chỉ cần sử dụng 1 câu command | Yêu cầu cài đặt và sử dụng AMI tools |
Stop State | Instance có thể đưa về stop state | Instance không thể đưa về stop state |
Virtualization Types
Linux AMI của AWS sử dụng một trong 2 loại ảo hoá gồm : Paravirtual (PV) và Hardware Virtual Machine (HVM).
Sự khác biệt chính giữa PV và HVM là cách thức mà chúng boot OS cũng như những ưu điểm lợi thế về thành phần phần cứng bổ sung như (CPU, Network, Storage,…) để đạt được hiệu suất tốt nhất.
Shared AMIs
Shared AMI là AMI mà một nhà phát triển đã tạo và cung cấp cho các nhà phát triển khác sử dụng. Một trong những cách dễ nhất để bắt đầu với Amazon EC2 là sử dụng AMI được chia sẻ có các thành phần bạn cần và sau đó thêm nội dung tùy chỉnh. Bạn cũng có thể tạo AMI của riêng mình và chia sẻ chúng với những người khác.
Bạn có thể gặp rủi ro khi sử dụng Shared AMI. Amazon không thể đảm bảo tính toàn vẹn hoặc bảo mật của AMI được chia sẻ bởi những người dùng Amazon EC2 khác. Do đó, bạn nên coi các AMI được chia sẻ như với bất kỳ mã nước ngoài nào mà bạn có thể cân nhắc triển khai trong trung tâm dữ liệu của riêng mình và thực hiện thẩm định thích hợp. Vậy nên, bạn nên lấy AMI từ một nguồn đáng tin cậy.
Amazon Linux
Amazon có tự build một số bản Linux Distro dựa trên nhân Red Hat Enterprise Linux. Các bản Distro này được gọi chung là Amazon Linux AMI do chính chủ Amazon build, hỗ trợ và bảo trì. Một số ưu điểm của các Amazon Linux AMI như sau :
- Ổn định, bảo mật và môi trường tối ưu hoạt động cho ứng dụng khi chạy trên máy chủ ảo AWS EC2 hơn do chính Amazon đặt ra các tiêu chuẩn khi build AMI riêng.
- Cung cấp repository riêng cho các phiên bản chương trình phổ biến như : MySQL, PostgreSQL, Python, Ruby, Tomcat và một số chương trình khác.
- Đã cài đặt sẵn các chương trình tích hợp tương tác với dịch vụ AWS như : AWS Cli, Amazon EC2 API, AMI Tools, thư viện Boto cho Python, Elastic Load Balacing tool,..