Trong mô-đun này, bạn sẽ sử dụng Amazon Elastic Container Service (Amazon ECS) để tạo cụm các phiên bản điện toán EC2 được quản lý và triển khai hình ảnh của bạn dưới dạng một bộ chứa chạy trên cụm. Bắt đầu xây dựng

tổng quan về kiến trúc

a. Máy khách
Máy khách tạo yêu cầu qua cổng 80 đến cân bằng tải.

b. Cân bằng tải
Cân bằng tải phân phối yêu cầu qua tất cả các cổng có sẵn.

c. Nhóm mục tiêu
Các phiên bản đã được đăng ký trong nhóm mục tiêu của ứng dụng.

d. Cổng bộ chứa
Mỗi bộ chứa chạy một quy trình ứng dụng duy nhất liên kết cụm cha mẹ node.js tới cổng 80 trong vùng tên của nó.

e. Đơn khối node.js có trong bộ chứa
Cụm cha mẹ node.js chịu trách nhiệm phân phối lưu lượng cho các trình thực hiện trong ứng dụng đơn khối. Kiến trúc này có trong bộ chứa, nhưng vẫn đơn khối bởi vì mỗi bộ chứa có tất cả các tính năng như các bộ chứa còn lại.

Amazon Elastic Container Service (Amazon ECS) là dịch vụ quản lý bộ chứa hiệu suất cao, có quy mô cực kỳ linh hoạt hỗ trợ các bộ chứa Docker và cho phép bạn dễ dàng chạy ứng dụng trên một cụm phiên bản Amazon EC2 được quản lý. Với lệnh gọi API đơn giản, bạn có thể khởi chạy và dừng các ứng dụng hỗ trợ Docker, truy vấn trạng thái hoàn chỉnh của cụm và truy cập nhiều tính năng quen thuộc như nhóm bảo mật, Elastic Load Balancing, ổ đĩa EBS và vai trò IAM.

Bạn có thể sử dụng Amazon ECS để lên lịch phân bổ bộ chứa trên cụm của bạn dựa trên nhu cầu về tài nguyên và yêu cầu về tính khả dụng. Bạn cũng có thể tích hợp trình lập lịch của riêng bạn hoặc của bên thứ ba để đáp ứng các yêu cầu cụ thể về kinh doanh hoặc ứng dụng.

Chúng tôi không tính thêm phí khi sử dụng Amazon ECS. Bạn chỉ trả phí cho các tài nguyên AWS (ví dụ: phiên bản EC2 hoặc ổ đĩa EBS) mà bạn tạo để lưu và chạy ứng dụng của mình.

Thời gian hoàn thành: 30 phút

Dịch vụ đã sử dụng:


Thực hiện theo các hướng dẫn từng bước dưới đây để triển khai ứng dụng node.js sử dụng Amazon ECS. Chọn số tương ứng của từng bước để mở rộng phần đó.

break-the-monolith
  • Bước 1. Khởi chạy Cụm ECS sử dụng AWS CloudFormation

    Tạo cụm Amazon ECS được triển khai phía sau Application Load Balancer.

    1. Chuyển đến bảng điều khiển AWS CloudFormation.
    2. Chọn Tạo ngăn xếp.
    3. Chọn Tải lên một tệp mẫu và chọn tệp ecs.yml từ dự án GitHub tại amazon-ecs-nodejs-microservice/2-containerized/infrastructure/ecs.yml sau đó chọn Tiếp theo.
    4. Với tên ngăn xếp, nhập BreakTheMonolith-Demo. Xác minh rằng các tham số khác có các giá trị sau:
      1. Công suất mong muốn = 2
      2. Loại phiên bản = t2.micro
      3. Kích thước tối đa = 2
    5. Chọn Tiếp theo.
    6. Trên trang tùy chọn Cấu hình ngăn xếp, giữ các tùy chọn mặc định và cuộn xuống rồi lựa chọn Tiếp theo.
    7. Trên trang Đánh giá BreakTheMonolith-Demo, cuộn xuống cuối trang, xác nhận câu lệnhTính năng bằng cách chọn hộp kiểm và chọn Tạo ngăn xếp.

    Bạn sẽ thấy ngăn xếp của bạn ở trạng thái CREATE_IN_PROGRESS. Bạn có thể chọn nút làm mới ở phía trên bên phải màn hình để kiểm tra tiến trình. Quá trình này thường mất dưới 5 phút.

    tạo ngăn xếp

    ⚐ LƯU Ý: Ngoài ra, bạn có thể sử dụng AWS Command Line Interface (AWS CLI) để triển khai ngăn xếp AWS CloudFormation. Chạy mã sau trong cửa sổ đầu cuối từ thư mục amazon-ecs-nodejs-microservices/3-microservices và thay thế [region] bằng Khu vực AWS của bạn.

    $ aws cloudformation deploy \
       --template-file infrastructure/ecs.yml \
       --region [region] \
       --stack-name BreakTheMonolith-Demo \
       --capabilities CAPABILITY_NAMED_IAM
  • Bước 2. Kiểm tra để đảm bảo Cụm của bạn đang chạy

    Amazon ECS Xác minh Cụm
    • Chọn cụm BreakTheMonolith-Demo, sau đó chọn tab Tác vụ để xác minh rằng không có tác vụ nào đang chạy.
    Cụm tác vụ Amazon ECS
    • Chọn tabPhiên bản ECS để xác minh có hai phiên bản Amazon EC2 được tạo bởi mẫu AWS CloudFormation.
      ⚐ Lưu ý: Nếu bạn nhận thông báo rằng trình đại diện ECS đã lỗi thời, hãy chọn Tìm hiểu thêm để biết các hướng dẫn cập nhật trình đại diện ECS.
    Phiên bản Amazon ECS
  • Bước 3. Ghi Định nghĩa Tác vụ

    Định nghĩa tác vụ xác định cách Amazon ECS triển khai bộ chứa ứng dụng trên toàn cụm.

    • Từ menu điều hướng bên trái củaAmazon ECS, hãy chọn Định nghĩa tác vụ.
    • Chọn Tạo định nghĩa tác vụ mới.
    • Trên trang Chọn tính tương thích loại khởi chạy, hãy chọn tùy chọn EC2, sau đó chọn Bước tiếp theo.
    • Trên trang Định cấu hình định nghĩa tác vụ và bộ chứa, hãy làm như sau:
      • Trong trường Tên định nghĩa tác vụ, nhập api.
      • Cuộn xuống Định nghĩa bộ chứa và chọn Thêm bộ chứa.
      • Trong cửa sổ Thêm bộ chứa:
        • Các tham số không xác định có thể để trống hoặc ở cài đặt mặc định.
        • Trong trường Tên bộ chứa, nhập api.
        • Trong trường Hình ảnh, nhập [account-ID].dkr.ecr.[region].amazonaws.com/api:v1
          Thay thế [account-ID] và [region] bằng thông tin cụ thể của bạn. Đảm bảo thẻ v1 khớp với giá trị bạn đã sử dụng trong Mô-đun 1 để gắn thẻ và đẩy hình ảnh. Đây là URL hình ảnh kho lưu trữ ECR của bạn đã được tạo trong mô-đun trước đó.
        • Trong trường Giới hạn bộ nhớ, xác minh Giới hạn cố định được chọn và nhập giá trị là 256.
        • Dưới phần Ánh xạ cổng, Cổng máy chủ = 0 và Cổng bộ chứa = 3000.
        • Cuộn đến MÔI TRƯỜNG, đơn vị CPU = 256.
    • Chọn Thêm.
      Bạn sẽ trở về trang Định cấu hình định nghĩa tác vụ và bộ chứa.
    • Cuộn xuống cuối trang và chọn Tạo.

    Định nghĩa tác vụ của bạn được liệt kê trong bảng điều khiển.

    định nghĩa tác vụ
  • Bước 4. Định cấu hình Application Load Balancer: Nhóm mục tiêu

    Application Load Balancer (ALB) cho phép dịch vụ của bạn chấp nhận lưu lượng đến. ALB tự động định tuyến lưu lượng đến các phiên bản bộ chứa chạy trên cụm của bạn và sử dụng chúng làm nhóm mục tiêu.

    Kiểm tra tên VPC của bạn: Nếu đây không phải lần đầu bạn sử dụng tài khoản AWS, bạn có thể có nhiều VPC. Việc định cấu hình Nhóm mục tiêu của bạn với VPC chính xác là rất quan trọng.

    • Chuyển đến mục Cân bằng tải của Bảng điều khiển EC2.
    • Xác định vị trí của Cân bằng tải có tên demo.
    • Chọn hộp kiểm cạnh cân bằng tải demo để xem chi tiết Cân bằng tải.
    • Trong tab Mô tả, xác định vị trí thuộc tính VPC (trong định dạng vpc-xxxxxxxxxxxxxxxxx).
      ⚐ Lưu ý: Bạn sẽ cần thuộc tính VPC trong bước tiếp theo khi định cấu hình nhóm mục tiêu ALB.
    thuộc tính vpc

    Định cấu hình Nhóm mục tiêu ALB

    • Chuyển đến mục Nhóm mục tiêu của Bảng điều khiển EC2.
    • Chọn Tạo nhóm mục tiêu.
    • Cấu hình các tham số Nhóm mục tiêu sau đây (đối với các tham số không được liệt kê bên dưới, hãy giữ các giá trị mặc định):
      • Đối với Tên nhóm mục tiêu, nhập api.
      • Đối với Giao thức, chọn HTTP.
      • Đối với Cổng, nhập 80.
      • Đối với VPC, chọn giá trị khớp với giá trị từ mô tả của Cân bằng tải. Đây rất có thể KHÔNG PHẢI là VPC mặc định của bạn.
      • Truy nhập Cài đặt kiểm tra tình trạng nâng cao và chỉnh sửa tham số sau nếu cần: 
        • Đối với Ngưỡng khỏe mạnh, nhập 2.
        • Đối với Ngưỡng không khỏe mạnh, nhập 2.
        • Đối với Thời gian chờ, nhập 5.
        • Đối với Khoảng thời gian, nhập 6.
    • Chọn Tạo.
    tạo nhóm mục tiêu
  • Bước 5. Định cấu hình Application Load Balancer: Listener

    ALB listener kiểm tra các yêu cầu kết nối đến ALB của bạn.

    Thêm một Listener vào ALB

    • Chuyển đến mục Cân bằng tải của Bảng điều khiển EC2.
    • Chọn hộp kiểm cạnh cân bằng tải demo để xem chi tiết Cân bằng tải.
    • Chọn tab Listeners.
    • Chọn Thêm listener và chỉnh sửa tham số sau khi cần:
      • Đối với Giao thức:cổng, chọn HTTP và nhập 80.
      • Đối với (Các) thao tác mặc định , chọn Chuyển tiếp đến và trong trường Nhóm mục tiêu, nhập api.
    • Chọn Lưu.
    listener cho ALB
  • Bước 6. Triển khai đơn khối dưới dạng dịch vụ

    Triển khai đơn khối dưới dạng dịch vụ vào cụm.

    • Chuyển đến Bảng điều khiển Amazon ECS và chọn Cụm từ thanh menu bên trái.
    • Chọn cụm BreakTheMonolith-Demo, chọn tab Dịch vụ sau đó chọn Tạo.
    • Trên trang Định cấu hình dịch vụ, chỉnh sửa các tham số sau (và giữ các giá trị mặc định cho các tham số không được liệt kê bên dưới): 
      • Đối với Loại khởi chạy, chọn EC2.
      • Đối với Tên dịch vụ, nhập api
      • Đối với Số lượng tác vụ, nhập 1.
      • Chọn Bước tiếp theo.
    • Trên trang Cấu hình mạng, mục Cân bằng tải, chọn Application Load Balancer.
      Các tham số bổ sung sẽ xuất hiện: Vai trò IAM dịch vụTên cân bằng tải.
      • Đối với Vai trò IAM dịch vụ, chọn BreakTheMonolith-Demo-ECSServiceRole.
      • Đối với Tên cân bằng tải, xác minh rằng demo đã được chọn.
    • Trong mục Bộ chứa cho cân bằng tải, chọn Thêm vào cân bằng tải.
      Hiển thị thông tin bổ sung có nhãn api:3000.
    • Trong mục api:3000, hãy làm như sau:
      • Đối với trường Cổng Production listener, chọn 80:HTTP.
      • Đối với Tên nhóm mục tiêu, chọn nhóm của bạn: api.
      • Chọn Bước tiếp theo.
    • Trên trang Thiết lập Auto Scaling, để lại cài đặt mặc định và chọn Bước tiếp theo.
    • Trên trang Xem lại, xem lại cài đặt sau đó chọn Tạo dịch vụ.
    • Sau khi tạo dịch vụ, chọn Xem dịch vụ.
    API Dịch vụ Amazon ECS

    Làm tốt lắm! Bạn hiện có một dịch vụ đang chạy. Có thể mất một phút để bộ chứa đăng ký ở trạng thái tốt và bắt đầu nhận lưu lượng.

  • Bước 7. Kiểm tra đơn khối của bạn

    Xác thực triển khai của bạn bằng cách kiểm tra xem dịch vụ có sẵn từ internet không và ping đến dịch vụ.

    Để tìm URL dịch vụ của bạn:

    • Chuyển đến mục Cân bằng tải của Bảng điều khiển EC2.
    • Chọn cân bằng tải demo của bạn.
    • Trong tab Mô tả, sao chép tên DNS và dán vào tab hoặc cửa sổ trình duyệt mới.
    • Bạn nên xem tin nhắn Sẵn sàng nhận yêu cầu.


    Xem mỗi phần của dịch vụ:
    Ứng dụng node.js định tuyến lưu lượng truy cập đến từng trình thực hiện dựa trên URL. Để xem một trình thực hiện, chỉ cần thêm tên trình thực hiện api/[worker-name] vào cuối Tên DNS như sau:

    • http://[DNS name]/api/users
    • http://[DNS name]/api/threads
    • http://[DNS name]/api/posts

    Bạn cũng có thể thêm số bản ghi ở cuối URL để xem chi tiết một bản ghi cụ thể. Ví dụ: http://[DNS name]/api/posts/1 hoặc http://[DNS name]/api/users/2

    bản mẫu người dùng