與 Elastic CodeDeploy Load Balancing 整合 - AWS CodeDeploy

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

與 Elastic CodeDeploy Load Balancing 整合

在 CodeDeploy 部署期間,負載平衡器可防止網際網路流量在尚未就緒、目前部署至執行個體或不再需要做為環境的一部分時,將網際網路流量路由至執行個體。負載平衡器扮演的確切角色,卻取決於它是用於藍/綠部署或就地部署。

注意

在藍/綠部署中必須使用 Elastic Load Balancing 負載平衡器,而在就地部署中則是選用的。

Elastic Load Balancing 類型

Elastic Load Balancing 提供三種類型的負載平衡器,可用於 CodeDeploy 部署:傳統負載平衡器、應用程式負載平衡器和網路負載平衡器。

Classic Load Balancer

在傳輸層 (TCP/SSL) 或應用程式層 (HTTP/HTTPS) 進行路由及負載平衡。它支持 VPC。

注意

Amazon ECS 部署不支援傳統負載平衡器。

Application Load Balancer

在應用程式層 (HTTP/HTTPS) 的路由及負載平衡並支援以路徑為基礎的路由。此類型的負載平衡器能夠將請求路由至虛擬私有雲端 (VPC) 中的每個 EC2 執行個體或容器執行個體。

注意

應用程式負載平衡器目標群組必須具有 EC2 執行個體上部署和 Fargate 部署的instance目標類型IP為。如需詳細資訊,請參閱目標類型

Network Load Balancer

根據從 TCP 封包標頭擷取的位址資訊 (而非封包內容),在傳輸層 (TCP/UDP 第 4 層) 進行路由和負載平衡。Network Load Balancer 可以處理流量暴增、保留用戶端的來源 IP,並在負載平衡器生命週期中使用固定 IP。

若要深入了解 Elastic Load Balancing 器,請參閱下列主題:

藍/綠部署

在 Elastic Load Balancing 負載平衡器後方重新路由傳送執行個體流量是 CodeDeploy藍/綠部署的基礎。

在藍/綠部署期間,根據您指定的規則,負載平衡器可讓流量路由到部署群組中的新執行個體,而這個群組也是部署最新應用程式修訂版 (替代環境) 的群組,然後將流量從之前的應用程式修訂版所執行的舊執行個體 (原始環境) 區隔開來。

在取代環境中的執行個體向一或多個負載平衡器註冊之後,原始環境中的執行個體會取消註冊,並在您選擇的情況下終止。

對於藍/綠部署,您可以在部署群組中指定一或多個傳統負載平衡器、應用程式負載平衡器目標群組或 Network Load Balancer 目標群組。您可以使用 CodeDeploy 主控台或 AWS CLI 將負載平衡器新增至部署群組。

如需有關藍/綠部署中的負載平衡器詳細資訊,請參閱下列主題:

就地部署:

在就地部署期間,負載平衡器會防止網際網路流量路由至即將部署到的目標執行個體,並會在部署到該執行個體完成後,讓執行個體再次開始接受流量。

如果在就地部署期間未使用負載平衡器,網際網路流量仍會在部署過程中導向到執行個體。因此,您的客戶可能會遇到中斷、不完整或過期的 Web 應用程式。當您在就地部署中使用 Elastic Load Balancing 器時,部署群組中的執行個體會從負載平衡器中取消註冊、更新為最新的應用程式修訂版,然後在部署成功後重新向負載平衡器註冊為相同部署群組的一部分。 CodeDeploy 將等待最多 1 個小時,讓執行個體在負載平衡器之後變得健康狀態良好。如果負載平衡器在等待期間未將執行個體標示為狀 CodeDeploy 況良好,則根據部署組態,移至下一個執行個體或部署失敗。

對於就地部署,您可以指定一或多個傳統負載平衡器、Application Load Balancer 目標群組或 Network Load Balancer 目標群組。您可以指定負載平衡器做為部署群組組態的一部分,也可以使用提供的指令碼 CodeDeploy 來實作負載平衡器。

使用部署群組指定就地部署負載平衡器

若要將負載平衡器新增至部署群組,請使用主 CodeDeploy 控台或 AWS CLI. 針對就地部署之有關在部署群組中指定負載平衡器的詳細資訊,請參閱下列主題:

使用指令碼指定就地部署負載平衡器

使用以下程序中的步驟來使用部署生命週期指令碼,以針對就地部署設定負載平衡。

注意

您應該使用 CodeDeployDefault. OneAtATime 部署組態僅當您使用指令碼為就地部署設定負載平衡器時。不支援並行執行,而且 CodeDeployDefault. OneAtATIME 設置可確保腳本的串行執行。如需部署組態的詳細資訊,請參閱使用中的部署組態 CodeDeploy

在的 CodeDeploy 範例存放庫中 GitHub,我們提供可調整以使用 E CodeDeploy lastic Load Balancing 負載平衡器的指示和範例。這些儲存庫包含三個範例 script— register_with_elb.sh deregister_from_elb.sh、和 common_functions.sh —,這些指令碼提供您所需要的所有程式碼。只需在這三個指令碼中編輯預留位置,然後從您的 appspec.yml 檔案參考這些指令碼。

若要在 CodeDeploy 使用 Elastic Load Balancing 負載平衡器註冊的 Amazon EC2 執行個體中設定就地部署,請執行以下操作:

  1. 下載您要用於就地部署之負載平衡器類型的範例:

  2. 確保您的每個目標 Amazon EC2 執行個體都已 AWS CLI 安裝。

  3. 確保每個目標 Amazon EC2 執行個體都具有 IAM 執行個體設定檔,至少連接了彈性負載平衡 * 和自動擴展:* 許可。

  4. 在您的應用程式原始碼目錄中包含了部署生命週期事件指令碼 (register_with_elb.shderegister_from_elb.shcommon_functions.sh)。

  5. 在應用程式修訂版本的中,提供在事件期間執行指register_with_elb.sh令碼的指示, CodeDeploy 以及在ApplicationStart事件期間執行ApplicationStopderegister_from_elb.sh令碼。appspec.yml

  6. 如果執行個體是 Amazon EC2 Auto Scaling 群組的一部分,您可以略過此步驟。

    common_functions.sh 指令碼中:

    • 如果您使用的是 C lassic Load Balancer,請在中指定 Elastic Load Balancing 負載平衡器的名稱ELB_LIST="",並對檔案中其他部署設定進行所需的任何變更。

    • 如果您使用的是「Ap plication Load Balancer」或「Network Load Balancer」,請在中指定「Elastic Load Balancing」目標群組名稱的名稱TARGET_GROUP_LIST="",然後對檔案中的其他部署設定進行必要的變更。

  7. 將應用程式的原始碼、appspec.yml 以及部署生命週期事件指令碼配套成一個應用程式修訂版,然後上傳修訂版。將修訂部署到 Amazon EC2 執行個體。在部署期間,部署生命週期事件指令碼會取消向負載平衡器註銷 Amazon EC2 執行個體,等待連線耗盡,然後在部署完成後向負載平衡器重新註冊 Amazon EC2 執行個體。