為 CodeDeploy Amazon ECS 部署設定負載平衡器、目標群組和接聽程式 - AWS CodeDeploy

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為 CodeDeploy Amazon ECS 部署設定負載平衡器、目標群組和接聽程式

在使用 Amazon ECS 運算平台執行部署之前,您必須建立 Application Load Balancer 或 Network Load Balancer、兩個目標群組以及一或兩個接聽程式。本主題說明如何建立應用程式負載平衡器。如需詳細資訊,請參閱 在您開始 Amazon ECS 部署之前

其中一個目標群組會將流量導向 Amazon ECS 應用程式的原始任務集。另一個目標群組會將流量導向其替換任務集。在部署期間, CodeDeploy 會建立取代工作集,並將原始工作集的流量重新路由傳送至新工作集。 CodeDeploy 決定每個作業集使用哪個目標群組。

接聽程式供負載平衡器用來將流量導向到您的目標群組。一個生產接聽程式為必要項目。您可以指定選用的測試接聽程式,負責在您執行驗證測試時引導流量到您的替換任務。

負載平衡器必須使用 VPC 搭配不同可用區域中的兩個子網路。以下步驟說明如何確認預設 VPC、建立 Amazon EC2 Application Load Balancer,然後為負載平衡器建立兩個目標群組。如需詳細資訊,請參閱網路負載平衡器的目標群組

驗證您的預設 VPC、公用子網路和安全性群組

本主題說明如何建立 Amazon EC2 Application Load Balancer、兩個目標群組以及兩個可在 Amazon ECS 卸載期間使用的連接埠。其中一個連接埠是選用的,且只有在部署期間將流量導向測試連接埠進行驗證測試時才需要。

  1. 登入 AWS Management Console 並開啟 Amazon VPC 主控台,網址為 https://console.aws.amazon.com/vpc/

  2. 驗證要使用的預設 VPC。在導覽窗格中,選擇 Your VPCs (您的 VPC)。請注意,哪個 VPC 在 Default VPC (預設 VPC) 欄中顯示 Yes (是)。這是您的預設 VPC。其中包含您使用的預設子網路。

  3. 選擇 Subnets (子網路)。記下在 Default subnet (預設子網路) 欄中顯示 Yes (是) 的兩個子網路的子網路 ID。當您建立負載平衡器時會使用這些 ID。

  4. 選擇每個子網路,然後選擇 Description (描述) 標籤。驗證您想要使用的子網路是否位於不同的可用區域中。

  5. 選擇子網路,然後選擇 Route Table (路由表) 標籤。若要驗證您想要使用的每個子網路是否為公有子網路,請確認路由表中有一列具有網際網路閘道的連結。

  6. 登入 AWS Management Console 並開啟 Amazon EC2 主控台,網址為 https://console.aws.amazon.com/ec2/

  7. 從導覽窗格中,選擇 Security Groups (安全群組)

  8. 確認您想要使用的安全群組可用,並記下其群組 ID (例如,sg-abcd1234)。您在建立負載平衡器時會使用此項目。

建立 Amazon EC2 Application Load Balancer、兩個目標群組和接聽程式 (主控台)

若要使用 Amazon EC2 主控台建立 Amazon EC2 Application Load Balancer:

  1. 登入 AWS Management Console 並開啟 Amazon EC2 主控台,網址為 https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選擇 Create Load Balancer (建立負載平衡器)

  4. 選擇 Application Load Balancer (應用程式負載平衡器),然後選擇 Create (建立)

  5. Name (名稱) 中,輸入負載平衡器的名稱。

  6. Scheme (結構描述) 中,選擇 internet-facing (面向網際網路)

  7. IP address type (IP 地址) 中,選擇 ipv4

  8. (選用) 為您的負載平衡器設定第二個接聽程式連接埠。您可以使用轉發至此連接埠的測試流量來執行部署驗證測試。

    1. Load Balancer Protocol (負載平衡器通訊協定) 下,選擇 Add listener (新增接聽程式)

    2. 在第二個接聽程式的 Load Balancer Protocol (負載平衡器通訊協定) 下,選擇 HTTP

    3. Load Balancer Port (負載平衡器連接埠) 下,輸入 8080

  9. Availability Zones (可用區域) 下的 VPC 中,選擇預設 VPC,然後選取您要使用的兩個預設子網路。

  10. 選擇 Next: Configure Security Settings (下一步:設定安全設定)

  11. 選擇 Next: Configure Security Groups (下一步:設定安全群組)

  12. 選擇 Select an existing security group (選取現有的安全群組),選擇預設安全群組,然後記下其 ID。

  13. 選擇 Next: Configure Routing (下一步:設定路由)

  14. Target group (目標群組) 中,選擇 New target group (新增目標群組),然後設定您的第一個目標群組:

    1. Name (名稱) 中,輸入目標群組名稱 (例如,target-group-1)。

    2. Target type (目標類型) 中,選擇 IP

    3. Protocol (通訊協定) 中,選擇 HTTP。在 Port (連接埠) 中,輸入 80

    4. 選擇 Next: Register Targets (下一步:註冊目標)

  15. 選擇 Next: Review (下一步:檢視),然後選擇 Create (建立)

為您的負載平衡器建立第二個目標群組
  1. 佈建負載平衡器後,開啟 Amazon EC2 主控台。在導覽窗格中,選擇 Target Groups (目標群組)

  2. 選擇 Create target group (建立目標群組)

  3. Name (名稱) 中,輸入目標群組名稱 (例如,target-group-2)。

  4. Target type (目標類型) 中,選擇 IP

  5. Protocol (通訊協定) 中,選擇 HTTP。在 Port (連接埠) 中,輸入 80

  6. VPC 中,選擇預設 VPC。

  7. 選擇建立

    注意

    您必須為負載平衡器建立兩個目標群組,才能執行 Amazon ECS 部署。建立 Amazon ECS 服務時,您可以使用其中一個目標群組的 ARN。如需詳細資訊,請參閱 Amazon ECS 使用者指南中的步驟 4:建立 Amazon ECS 服務

建立 Amazon EC2 Application Load Balancer、兩個目標群組和接聽程式 (CLI)

若要使用建立應用程式負載平衡器 AWS CLI:

  1. 使用命create-load-balancer令建立應用程式負載平衡器。指定兩個不在相同可用區域中的子網路和一個安全群組。

    aws elbv2 create-load-balancer --name bluegreen-alb \ --subnets subnet-abcd1234 subnet-abcd5678 --security-groups sg-abcd1234 --region us-east-1

    輸出包含負載平衡器的 Amazon Resource Name (ARN),格式如下:

    arn:aws:elasticloadbalancing:region:aws_account_id:loadbalancer/app/bluegreen-alb/e5ba62739c16e642
  2. 使用指create-target-group令建立第一個目標群組。 CodeDeploy 將此目標群組的流量路由至服務中設定的原始或取代工作。

    aws elbv2 create-target-group --name bluegreentarget1 --protocol HTTP --port 80 \ --target-type ip --vpc-id vpc-abcd1234 --region us-east-1

    輸出包含第一個目標群組的 ARN,格式如下:

    arn:aws:elasticloadbalancing:region:aws_account_id:targetgroup/bluegreentarget1/209a844cd01825a4
  3. 使用指create-target-group令建立第二個目標群組。 CodeDeploy 將目標群組的流量路由至第一個目標群組未提供服務的任務集。例如,如果您的第一個目標群組將流量路由到原始任務集,此目標群組會將流量路由到替換任務集。

    aws elbv2 create-target-group --name bluegreentarget2 --protocol HTTP --port 80 \ --target-type ip --vpc-id vpc-abcd1234 --region us-east-1

    輸出包含第二個目標群組的 ARN,格式如下:

    arn:aws:elasticloadbalancing:region:aws_account_id:targetgroup/bluegreentarget2/209a844cd01825a4
  4. 使用 create-listener 命令,以預設規則建立接聽程式,將生產流量轉送至 8080 埠。

    aws elbv2 create-listener --load-balancer-arn arn:aws:elasticloadbalancing:region:aws_account_id:loadbalancer/app/bluegreen-alb/e5ba62739c16e642 \ --protocol HTTP --port 80 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:aws_account_id:targetgroup/bluegreentarget1/209a844cd01825a4 --region us-east-1

    輸出包含接聽程式的 ARN,格式如下:

    arn:aws:elasticloadbalancing:region:aws_account_id:listener/app/bluegreen-alb/e5ba62739c16e642/665750bec1b03bd4
  5. (選用) 使用 create-listener 命令,以預設規則建立第二個接聽程式,將測試流量轉送至 8080 埠。您可以使用轉發至此連接埠的測試流量來執行部署驗證測試。

    aws elbv2 create-listener --load-balancer-arn arn:aws:elasticloadbalancing:region:aws_account_id:loadbalancer/app/bluegreen-alb/e5ba62739c16e642 \ --protocol HTTP --port 8080 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:aws_account_id:targetgroup/bluegreentarget2/209a844cd01825a4 --region us-east-1

    輸出包含接聽程式的 ARN,格式如下:

    arn:aws:elasticloadbalancing:region:aws_account_id:listener/app/bluegreen-alb/e5ba62739c16e642/665750bec1b03bd4