本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
與 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 執行個體中設定就地部署,請執行以下操作:
-
下載您要用於就地部署之負載平衡器類型的範例:
-
確保您的每個目標 Amazon EC2 執行個體都已 AWS CLI 安裝。
-
確保每個目標 Amazon EC2 執行個體都具有 IAM 執行個體設定檔,至少連接了彈性負載平衡 * 和自動擴展:* 許可。
-
在您的應用程式原始碼目錄中包含了部署生命週期事件指令碼 (
register_with_elb.sh
、deregister_from_elb.sh
和common_functions.sh
)。 -
在應用程式修訂版本的中,提供在事件期間執行指
register_with_elb.sh
令碼的指示, CodeDeploy 以及在ApplicationStart事件期間執行ApplicationStop指deregister_from_elb.sh
令碼。appspec.yml
-
如果執行個體是 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=""
,然後對檔案中的其他部署設定進行必要的變更。
-
-
將應用程式的原始碼、
appspec.yml
以及部署生命週期事件指令碼配套成一個應用程式修訂版,然後上傳修訂版。將修訂部署到 Amazon EC2 執行個體。在部署期間,部署生命週期事件指令碼會取消向負載平衡器註銷 Amazon EC2 執行個體,等待連線耗盡,然後在部署完成後向負載平衡器重新註冊 Amazon EC2 執行個體。