Tìm hiểu về EC2 AMI - oPhamThiDao/Devops GitHub Wiki

What is Amazon EC2

Instances and AMIs - (Amazon Machine Image)

Amazon Machine Image là 1 template chứa cấu hình phần mềm (ví dụ: hệ điều hành, máy chủ ứng dụng và các ứng dụng). Từ một AMI bạn có thể khởi chạy 1 instance, bản thân nó là một bản sao của AMI đang chạy dưới dạng máy chủ ảo trên đám mây. Bạn cũng có thể khởi tạo nhiều instances từ một AMI, điều này được thể hiện theo hình ảnh minh họa sau:

[Image]

Instances của bạn sẽ vẫn tiếp tục chạy khi bạn dừng hoặc kết thúc chúng hoặc chúng bị lỗi, Nếu một instance bị lỗi bạn có thể tạo một cái mới từ AMI.

Instances

Mỗi một instance là một server ảo trên đám mây. Cấu hình của nó lúc khởi tạo là bảng sao của AMI mà bạn đã chỉ định khi bạn khởi chạy phiên bản.

Bạn có thể khởi chạy các instances với các loại khác nhau từ một AMI duy nhất. Mỗi loại instance type cơ bản là xác định loại phần cứng cho máy chủ cho phiên bản của bạn và chúng cung cấp khả năng tính toán và bộ nhớ khác nhau. Vì vậy bạn nên chọn instance type dựa trên dụng lượng bộ nhớ và sức mạnh tính toán mà bạn cần cho ứng dụng và phần mềm mà bạn định chạy trên phiên bản đó. Các thông tin thông số kỹ thuật của instance type bạn có thể tham khảo tại Amazon EC2 Instance Type.

Sau khi bạn khởi tạo một instance, nó sẽ trông giống một máy chủ truyền thống, bạn có thể tương tác với nó như bất kỳ máy tính nào và có toàn quyền điều khiển nó. Ví dụ: sử dụng lệnh sudo để chạy lệnh yêu cầu wuyeefn root.

Tài khoản AWS của bạn có giới hạn số lượng instances mà bạn có thể chạy. Để biết nhiều thông tin về giới hạn này bạn có thể tham khảo tại How many instances can I run in Amazon EC2

Tạm dừng và ngừng hoạt động (Stopping and terminating instances)

Bạn có thể dừng hoặc kết thức một instance đang hoạt động trong bất kỳ thời gian nào.

Tạm dừng một instance

Khi một instance bị dừng, instance đó thực hiện tắt bình thường và sau đó chuyển sang trạng thái stopped. Tất cả các Amazon EBS của nó vẫn được đính kèm và bạn có thể có thể bắt đầu instance này một lúc sau.

Bạn không bị tính phí cho việc sử dụng instance bổ sung trong khi nó đang ở trạng thái dừng. Mỗi lần chuyển đổi instance từ trạng thấy stopped sang trạng thái running, instance sẽ được tính phí nếu nó ở trạng thái running tối thiểu là 1 phút. Nếu instance type bị thay đổi trong khi bị stopped, bạn sẽ phải trả mức phí cho loại instance mới sau khi instance được bắt đầu. Tất cả việc sử dụng Amazon EBS liên quan đến instance của bạn bao gồm cả sử dụng root device được lập hóa đơn bằng giá Amazon EBS.

Khi một instance ở trạng thái stopped bạn có thể đinh kèm hoặc tách biệt các Amazon EBS volumes. Bạn cũng có thể tạo một AMI từ instance và có thể thay đổi nhân, RAM ổ cứng, và loại instance.

Ngừng, chấm dứt hoạt động (Terminating an instance)

Khi một instance ngừng - kết thúc (terminated), instance đó thực hiện tắt bình thường. Volume thiết bị gốc mặc định bị xóa, nhưng bất kỳ Amazon EBS volumes được đính kèm mặc định được bảo toàn, được xác định bởi thuộc tính deleteOnTermination của mỗi volume. Bản thân instance này cũng bị xóa, và nó sẽ không thể bắt đầu lại instance đó sau đó.

Để ngăn chặn việc ngừng ngẫu nhiên, bận có thể vô hiệu hóa việc ngừng instance. Để làm được điều đó bạn cần thực hiện cài đặt thuộc tính disableApiTermination thành true cho instance để kiểm soát hành vi tắt instance. Ví dụ: tắt máy trong Window hay Linux shutdown -h.

AMIs

Amazon Web Services (AWS) xuất bản nhiều Amazon Machine Images(AMI) chứa các cấu hình phần mềm phổ biến để sử dụng công khai. Ngoài ra, các thành viên của cộng đồng nhà phát triển AWS đã xuất bản AMI tùy chỉnh của riêng họ. Bạn cũng có thể tạo AMI hoặc AMI tùy chỉnh cho riêng mình, làm như vậy cho phép bạn bắt đầu nhanh chóng và dễ dàng các phiên bản mới có mọi thứ bạn cần. Ví dụ: nếu ứng dụng của bạn là một trang web hoặc một dịch vụ web, AMI của bạn có thể bao gồm một máy chủ web, nội dung tĩnh liên quan và mã cho các trang động. Kết quả là, sau khi bạn khởi chạy một phiên bản từ AMI này, máy chủ web của bạn sẽ khởi động và ứng dụng của bạn sẵn sàng thực hiện các yêu cầu.

Tất cả AMI được phân loại là được hỗ trợ bởi Amazon EBS, có nghĩa là thiết bị gốc cho một phiên bản được khởi chạy từ AMI là một Amazon EBS volume hoặc được hỗ trợ bởi cửa hàng instance, có nghĩa là thiết bị gốc cho một instance được khởi chạy từ AMI là một khối lượng cửa hàng mẫu được tạo từ một mẫu được lưu trữ trong Amazon S3.

Mô tả của AMI cho biết loại thiết bị gốc (ebs hoặc cửa hàng instance). Điều này rất quan trọng vì có sự khác biệt đáng kể về những gì bạn có thể làm với mỗi loại AMI. Để biết thêm thông tin về những khác biệt này, hãy xem tại Storage for the root device

Bạn có thể hủy đăng ký AMI khi bạn đã sử dụng xong. Sau khi hủy đăng ký AMI, bạn không thể sử dụng nó để khởi chạy các phiên bản mới. Các phiên bản hiện tại được khởi chạy từ AMI không bị ảnh hưởng. Do đó, nếu bạn cũng đã hoàn tất các phiên bản khởi chạy từ các AMI này, bạn nên chấm dứt chúng.

Các phương pháp hay áp dụng cho Amazon EC2 (Best practices for Amazon EC2)

Bảo mật (Security best practices)

  • Sử dụng AWS identity và Access Management (IAM) để kiểm soát quyền truy cập tới các nguồn tài nguyên AWS, bao gồm cả instance của bạn. Bạn có thể tạo người dùng và nhóm IAM và chỉ định thông tin xác thực bảo mật cho mỗi người dùng và kiểm soát quyền truy cập tới mỗi tài nguyên và dịch vụ của AWS.
  • Hạn chế quyền truy cập bằng cách chỉ cho phép các máy chủ hoặc mạng đáng tin cậy được phép truy cập tới instance của bạn. Ví dụ: hạn chế quyền truy cập ssh bằng cách hạn chế lưu lượng đến trên cổng 22.
  • Xem lại các quy tắc nhóm bảo mật của bạn thường xuyên và chắc chắn rằng bạn áp dụng nguyên tắc ít đặt quyền nhất, chỉ mở quyền mà bạn yêu cầu. Có thể áp dụng tạo các nhóm bảo mật khác nhau để đáp ứng cho các trường hợp yêu cầu bảo mật khác nhau.
  • Tắt thông tin đăng nhập password-based cho instances được khởi chạy từ AMI của bạn, bởi trường hợp này mật khẩu có thể được tìm thấy hoặc bị bẻ khóa và là một nguy cơ bảo mật.

Lưu trữ (Storage)

  • Thiết bị gốc cho instance của bạn sẽ chứa image được sử dụng để khởi động instance, see more at Amazon EC2 root deivce volume

  • Instance của bạn có thể bao gồm khối lượng bộ nhớ cục bộ (local storage volumes), được gọi là khối lượng lưu trữ phiên bản (instance store volumes), với nó bạn có thể cấu hình tại thời điểm khởi chạy. Sau khi volumes được thêm và hợp nhất với instance của bạn, chúng sẽ sẵn sàng để bạn sử dụng. Nếu instance của bạn bị lỗi hoặc bị dừng hoặc bị chấm dứt dữ liệu trên các volumes này sẽ bị mất. Do đó những volumes này được sử dụng tốt nhất cho những dữ liệu tạp thời. Để giữ an toàn cho dữ liệu quan trọng bạn nên sử dụng chiến lược sao chép trên nhiều trường hợp hoặc lưu trữ dữ liệu liên tục của bạn trong các ổ đĩa Amazon S3 hoặc Amazon EBS.

  • Sử dụng kho lưu trữ phiên bản có sẵn cho phiên bản của bạn để lưu trữ dữ liệu tạm thời. Hãy nhớ rằng dữ liệu được lưu trữ trong cửa hàng phiên bản sẽ bị xóa khi bạn dừng hoặc chấm dứt phiên bản của mình. Nếu bạn sử dụng cửa hàng cá thể để lưu trữ cơ sở dữ liệu, hãy đảm bảo rằng bạn có một cụm với hệ số nhân bản đảm bảo khả năng chịu lỗi.

  • Mã hóa EBS volumes và snapshots.

Quản lý tài nguyên

  • Sử dụng siêu dữ liệu phiên bản và thẻ tài nguyên tùy chỉnh để theo dõi và xác định tài nguyên AWS của bạn.

  • Xem các giới hạn hiện tại của bạn cho Amazon EC2. Lên kế hoạch yêu cầu bất kỳ sự gia tăng giới hạn nào trước thời gian bạn cần.

Sao lưu và phục hồi

  • Thường xuyên sao lưu khối lượng EBS của bạn bằng cách sử dụng Amazon EBS snapshots và tạo Amazon Machine Image (AMI) từ phiên bản của bạn để lưu cấu hình làm mẫu để khởi chạy các phiên bản trong tương lai.

  • Triển khai các thành phần quan trọng của ứng dụng của bạn trên nhiều Availability Zones và sao chép dữ liệu của bạn một cách thích hợp.

  • Thiết kế các ứng dụng của bạn để xử lý địa chỉ IP động khi instance của bạn khởi động lại.

  • Giám sát và phản hồi các sự kiện.

  • Đảm bảo rằng bạn đã sẵn sàng để xử lý chuyển đổi dự phòng. Đối với giải pháp cơ bản, bạn có thể đính kèm thủ công giao diện mạng hoặc địa chỉ Elastic IP vào instance thay thế.

  • Thường xuyên kiểm tra quá trình khôi phục các instance và Amazon EBS volume của bạn nếu chúng không thành công.

Networking

  • Đặt giá trị thời gian time-to-live (TTL) cho các ứng dụng của bạn thành 255, cho IPv4 và IPv6. Nếu bạn sử dụng giá trị nhỏ hơn, có nguy cơ TTL sẽ hết hạn trong khi lưu lượng ứng dụng đang chuyển, gây ra các vấn đề về khả năng tiếp cận cho các phiên bản của bạn.

Tài liệu tham khảo

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html

Tài liệu thực hành

https://docs.google.com/spreadsheets/d/1fkE5CqF0lZ550hhm2OxzU2vehvi2NbKlbxCU7gx5-IY/edit#gid=1840843614