溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AWS的負載均衡器工具如何部署codedeploy

發(fā)布時間:2021-11-18 17:25:23 來源:億速云 閱讀:160 作者:柒染 欄目:云計算

AWS的負載均衡器工具如何部署codedeploy ,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Elastic Load Balancing 提供了三種可用于 CodeDeploy 部署的負載均衡器:Classic Load Balancer、Application Load Balancer 和 Network Load Balancer。

傳統(tǒng)負載均衡器
路由和負載均衡在傳輸層 (TCP/SSL) 或應用程序?qū)?(HTTP/HTTPS) 進行。它支持 EC2-Classic 或 VPC。
應用程序負載均衡器

路由和負載均衡在應用程序?qū)?(HTTP/HTTPS) 進行,并支持基于路徑的路由。它可以將請求路由到您的 Virtual Private Cloud (VPC) 中每個 EC2 實例或容器實例上的端口。

注意

應用程序負載均衡器 目標組必須有一個目標類型 instance;

Network Load Balancer

路由和負載均衡在傳輸層(TCP/UDP 層,即第 4 層)進行,依據(jù)是從 TCP 數(shù)據(jù)包標頭中而非從數(shù)據(jù)包內(nèi)容中提取的地址信息。Network Load Balancer 可以處理突發(fā)流量、保留客戶端的源 IP 以及在負載均衡器的使用壽命內(nèi)使用固定 IP

負載均衡器在 CodeDeploy 部署中的作用

在 CodeDeploy 部署期間,負載均衡器會阻止 Internet 流量路由到未就緒的實例,目前正在部署的實例,或環(huán)境不再需要的實例。但是,負載均衡器的具體作用取決于它是用于藍/綠部署還是就地部署。

注意

Elastic Load Balancing 負載均衡器的使用在藍/綠部署中為必需,在就地部署中為可選。

藍/綠部署

依托于 Elastic Load Balancing 負載均衡器來重新路由實例流量是 CodeDeploy 藍/綠部署的基礎。

在藍/綠部署期間,負載均衡器根據(jù)您指定的規(guī)則,允許將流量路由到已部署最新應用程序修訂的部署組中的新實例 (替換環(huán)境),然后阻止運行較早應用程序修訂的舊實例的流量 (原始環(huán)境)。

替換環(huán)境中的實例注冊負載均衡器后,將取消注冊原始環(huán)境中的實例,并根據(jù)您的需要終止。

對于藍/綠部署,您可以在部署組中指定 傳統(tǒng)負載均衡器、應用程序負載均衡器 或 Network Load Balancer。您可以使用 CodeDeploy 控制臺或 AWS CLI 將負載均衡器添加到部署組。

就地部署

在就地部署的過程中,負載均衡器可以防止 Internet 流量路由到要部署的實例;實例部署完成后,可恢復對該實例的流量路由。

如果就地部署期間未使用負載均衡器,Internet 流量在部署過程中可能仍會引向該實例。因此,您的客戶可能會遇到中斷、不完整或過時的 Web 應用程序。在將 Elastic Load Balancing 負載均衡器用于就地部署時,部署組中的實例將從負載均衡器取消注冊,更新為最新的應用程序修訂,并在部署成功后向負載均衡器重新注冊同一部署組。

對于就地部署,您可以指定 傳統(tǒng)負載均衡器、應用程序負載均衡器 或 Network Load Balancer。您可以在配置部署組的過程中指定負載均衡器,或使用 CodeDeploy 提供的腳本實施負載均衡器。

可以使用 CodeDeploy 控制臺或 AWS CLI 將負載均衡器添加到部署組;

使用腳本為就地部署設置負載均衡器

通過執(zhí)行以下過程中的步驟,使用部署聲明周期腳本為就地部署設置負載均衡。

注意

您應該僅在使用腳本為就地部署設置負載均衡器時使用 CodeDeployDefault.OneAtATime 部署配置。不支持并發(fā)運行,并且 CodeDeployDefault.OneAtATime 設置可確保腳本的順序執(zhí)行;

在 GitHub 上的 CodeDeploy 示例存儲庫中,我們提供了說明和示例,您可進行調(diào)整以使用 CodeDeploy Elastic Load Balancing 負載均衡器。這些存儲庫包含三個示例腳本 — register_with_elb.sh、deregister_from_elb.sh 和 common_functions.sh — 這些腳本提供了開始操作所需的全部代碼。只需編輯這 3 個腳本中的占位符,然后從 appspec.yml 文件中引用這些腳本。

要使用已注冊到 Elastic Load Balancing 負載均衡器的 Amazon EC2 實例設置 CodeDeploy 中的就地部署,請執(zhí)行以下操作:

  1. 下載要用于就地部署的負載均衡器的類型的示例:

    • 傳統(tǒng)負載均衡器

    • 應用程序負載均衡器 或 Network Load Balancer(同一腳本可用于任一類型)

  2. 確保每個目標 Amazon EC2 實例均已安裝 AWS CLI。

  3. 確保每個目標 Amazon EC2 實例均已附加至少一個 IAM 實例配置文件,并且具有 elasticloadbalancing:* 和 autoscaling:* 權(quán)限。

  4. 將部署生命周期事件腳本 (register_with_elb.sh、deregister_from_elb.sh 和 common_functions.sh) 包含在應用程序的源代碼目錄中。

  5. 在應用程序修訂的 appspec.yml 中,提供有關 CodeDeploy 在 ApplicationStart 事件期間運行 register_with_elb.sh 腳本以及在 ApplicationStop 事件期間運行 deregister_from_elb.sh 腳本的說明。

  6. 如果實例屬于某個 Amazon EC2 Auto Scaling 組,則可跳過此步驟。

    在 common_functions.sh 腳本中:

    • 如果您使用的是 傳統(tǒng)負載均衡器,請在 ELB_LIST="" 中指定 Elastic Load Balancing 負載均衡器的名稱,并對文件中的其他部署設置進行所需的任何更改。

  7. 如果您使用的是 應用程序負載均衡器 或 Network Load Balancer,請在 TARGET_GROUP_LIST="" 中指定 Elastic Load Balancing 目標組的名稱,并對文件中的其他部署設置進行所需的任何更改。

  8. 將應用程序的源代碼、appspec.yml 和部署生命周期事件腳本綁定到一個應用程序修訂中,然后上傳該修訂。將該修訂部署到 Amazon EC2 實例。在部署期間,部署生命周期事件腳本將向負載均衡器取消注冊 Amazon EC2 實例,等待連接耗盡,然后在部署完成后向負載均衡器重新注冊 Amazon EC2 實例。

從 GitHub 部署 CodeDeploy 修訂

要將應用程序修訂從 GitHub 存儲庫部署到實例,請執(zhí)行以下步驟:

  1. 創(chuàng)建與 CodeDeploy 和將部署到的 Amazon EC2 實例類型兼容的修訂。

    要創(chuàng)建兼容版本,請按照計劃 CodeDeploy 的修訂和將應用程序規(guī)范文件添加到 CodeDeploy 的修訂中的說明執(zhí)行操作。

  2. 使用 GitHub 賬戶將您的修訂添加到 GitHub 存儲庫。

  3. 使用 CodeDeploy 控制臺中的創(chuàng)建部署頁或使用 AWS CLI create-deployment 命令將修訂從 GitHub 存儲庫部署到已配置為在 CodeDeploy 部署中使用的目標實例。

    如果您需要調(diào)用 create-deployment 命令,則必須先使用此控制臺的創(chuàng)建部署頁,針對指定應用程序為 CodeDeploy 授予代表您的首選 GitHub 賬戶與 GitHub 交互的權(quán)限。每個應用程序只需進行一次這樣的操作。

github和codedeploy之間的交互:

GitHub 對 CodeDeploy 中的應用程序進行的身份驗證

在向 CodeDeploy 提供與 GitHub 交互的權(quán)限后,GitHub 賬戶和應用程序之間的關聯(lián)將存儲在 CodeDeploy 中。您可以將應用程序鏈接到其他 GitHub 賬戶。也可以撤消 CodeDeploy 與 GitHub 交互的權(quán)限。

將 GitHub 賬戶鏈接到 CodeDeploy 中的應用程序

  1. Sign in to the AWS 管理控制臺 and open the CodeDeploy console at https://console.aws.amazon.com/codedeploy.

    注意

    使用您在 CodeDeploy 入門中使用的相同賬戶或 IAM 用戶信息登錄。

  2. 在導航窗格中,展開 Deploy (部署),然后選擇 Applications (應用程序)。

  3. 選擇要鏈接到其他 GitHub 賬戶的應用程序。

  4. 如果應用程序沒有部署組,請選擇創(chuàng)建部署組來創(chuàng)建一個部署組

  5. 部署中,選擇創(chuàng)建部署。

    注意

    無需創(chuàng)建新的部署。這是目前將其他 GitHub 賬戶鏈接到應用程序的唯一方式。

  6. 部署設置中,對于修訂類型,選擇我的應用程序?qū)⒋鎯υ?GitHub 中。

  7. 執(zhí)行以下操作之一:

    • 要為 CodeDeploy 應用程序創(chuàng)建與 GitHub 賬戶的連接,在單獨的 Web 瀏覽器選項卡中注銷 GitHub。在 GitHub 令牌名稱中,鍵入一個名稱來標識此連接,然后選擇連接到 GitHub。該網(wǎng)頁將提示授權(quán) CodeDeploy 與應用程序的 GitHub 進行交互。繼續(xù)執(zhí)行步驟 10。

    • 要使用已創(chuàng)建的連接,請在 GitHub 令牌名稱中,選擇其名稱,然后選擇連接到 GitHub。繼續(xù)執(zhí)行步驟 8。

    • 要創(chuàng)建與其他 GitHub 賬戶的連接,在單獨的 Web 瀏覽器選項卡中注銷 GitHub。在 GitHub 令牌名稱中,鍵入一個名稱來標識此連接,然后選擇連接到 GitHub。該網(wǎng)頁將提示授權(quán) CodeDeploy 與應用程序的 GitHub 進行交互。繼續(xù)執(zhí)行步驟 10。

  8. 如果尚未登錄 GitHub,請按照 Sign in 頁上的說明執(zhí)行操作以使用要將應用程序鏈接到的 GitHub 賬戶進行登錄。

  9. 選擇 Authorize application。GitHub 向 CodeDeploy 提供代表所選應用程序的已登錄 GitHub 賬戶與 GitHub 交互的權(quán)限。

  10. 如果您需要創(chuàng)建部署,請選擇 Cancel

撤消 CodeDeploy 的與 GitHub 交互的權(quán)限

  1. 使用要撤消 CodeDeploy 權(quán)限的 GitHub 賬戶的憑證登錄到 GitHub。

  2. 打開 GitHub 應用程序頁,在已授權(quán)應用程序列表中找到 CodeDeploy,然后按照用于撤消應用程序授權(quán)的 GitHub 過程執(zhí)行操作。

CodeDeploy 與私有和公有 GitHub 存儲庫進行交互

CodeDeploy 支持從私有和公有 GitHub 存儲庫部署應用程序。當您向 CodeDeploy 授予代表您訪問 GitHub 的權(quán)限后,CodeDeploy 針對您的 GitHub 賬戶有權(quán)訪問的所有私有 GitHub 存儲庫都將擁有讀寫訪問權(quán)。不過,CodeDeploy 只能從 GitHub 存儲庫進行讀取。它將不會對任何私有 GitHub 存儲庫進行寫入。

CodeDeploy 與組織托管的 GitHub 存儲庫進行交互

默認情況下,組織托管的 GitHub 存儲庫(與賬戶自己的私有或公有存儲庫相對)未授予對第三方應用程序(包括 CodeDeploy)的訪問權(quán)。如果在 GitHub 中啟用組織的第三方應用程序限制,并且您嘗試從其 GitHub 存儲庫中部署代碼,則部署將失敗??赏ㄟ^兩種方式解決此問題。

作為組織成員,您可以要求組織所有者批準對 CodeDeploy 的訪問權(quán)。請求此訪問權(quán)的步驟取決于您是否已授權(quán)單個賬戶訪問 CodeDeploy

使用 CodeDeploy 自動從 CodePipeline 進行部署

當源代碼發(fā)生更改時,您可以觸發(fā)從 CodePipeline 進行的部署

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI