真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

AutoScaling生命周期的作用是什么

這篇文章將為大家詳細(xì)講解有關(guān)AutoScaling 生命周期的作用是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

公司主營業(yè)務(wù):做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出秭歸免費(fèi)做網(wǎng)站回饋大家。

LifecycleHook 介紹

LifecycleHook 使用場景

使用 LifecycleHook,可以在伸縮組發(fā)生伸縮活動(dòng)時(shí)將正在擴(kuò)張或即將釋放的 ECS 實(shí)例掛起,執(zhí)行用戶自定義操作,可以更加靈活地管理 ECS 實(shí)例在伸縮組內(nèi)的生命周期。幾個(gè)簡單的 LifecycleHook 應(yīng)用場景:

  • 伸縮組彈出 ECS 實(shí)例后需要延遲一段時(shí)間(測試服務(wù)沒問題以后)掛載到 SLB ,然后對外提供服務(wù)

  • 伸縮組釋放 ECS 實(shí)例時(shí)需要先將實(shí)例從 SLB 后端服務(wù)移除(防止接收新的請求),待檢測已經(jīng)接收到的請求處理完成,停止并釋放實(shí)例

  • 伸縮組釋放 ECS 實(shí)例時(shí)執(zhí)行數(shù)據(jù)備份操作

  • 伸縮組彈性擴(kuò)張或者收縮執(zhí)行一些用戶自定義操作

針對上述第二種場景,如果可以確定每個(gè)請求的最長處理時(shí)間,可以調(diào)用 創(chuàng)建生命周期掛鉤 接口創(chuàng)建生命周期掛鉤,設(shè)置 LifecycleTransition 參數(shù)值為 SCALE_IN,設(shè)置 HeartbeatTimeout 為請求最長處理時(shí)間,不需要設(shè)置通知對象,當(dāng)發(fā)生彈性收縮類型伸縮活動(dòng)時(shí),ECS 實(shí)例從 SLB 移除后會(huì)掛起一段時(shí)間(HeartbeatTimeout),等待請求處理完成。

LifecycleHook 工作方式

當(dāng)伸縮組創(chuàng)建了 LifecycleHook,并發(fā)生 LifecycleHook 配置的伸縮活動(dòng)類型(LifecycleTransition)時(shí),那么伸縮活動(dòng)唄掛起,用戶可以在伸縮活動(dòng)掛起這段時(shí)間內(nèi)執(zhí)行自定義操作,一直到 LifecycleHook 超時(shí)(HeartbeatTimeout),或者通過調(diào)用 CompleteLifecycleAction 接口提前終止伸縮活動(dòng)掛起。

AutoScaling 生命周期的作用是什么

對于彈性擴(kuò)張(SCALE_OUT)伸縮活動(dòng):

ECS 實(shí)例先進(jìn)入 Pending(加入中)狀態(tài),當(dāng)實(shí)例啟動(dòng)成功,并添加到 RDS 白名單(如果伸縮組設(shè)置了 RDS)以后,觸發(fā) LifecycleHook ,ECS 實(shí)例進(jìn)入 Pending:Wait(加入中掛起)狀態(tài)。如果LifecycleHook 配置了通知對象(MNS),則發(fā)送通知內(nèi)容到 MNS,用戶可通過 MNS控制臺 的方式來消費(fèi) MNS 主題或者隊(duì)列中的消息,也可以通過 OpenAPI 的方式消費(fèi),具體可參考 ESS 事件通知#消息接收 章節(jié)。當(dāng)用戶接收到 MNS 消息后可以執(zhí)行自定義操作,例如在 ECS 實(shí)例上安裝軟件、部署服務(wù)等,執(zhí)行完自定義操作以后,用戶可以通過 CompleteLifecycleAction 接口提前結(jié)束掛起的伸縮活動(dòng),也可以等待 LifecycleHook 掛起超時(shí)。LifecycleHook 掛起結(jié)束后有兩個(gè)執(zhí)行方向,CONTINUE or ABANDON,對于彈性擴(kuò)張伸縮活動(dòng),執(zhí)行方向解釋如下:

  • CONTINUE 繼續(xù),ECS 實(shí)例將被投入伸縮組中使用

  • ABANDON 拒絕,伸縮活動(dòng)回滾,ECS 實(shí)例將被釋放

  • 如果伸縮組配置了多個(gè)彈性擴(kuò)張類型的 LifecycleHook,那么發(fā)生彈性擴(kuò)張伸縮活動(dòng)時(shí)會(huì)觸發(fā)多個(gè) LifecycleHook,伸縮活動(dòng)最終的執(zhí)行方向(CONTINUE or ABANDON)以最后一個(gè)結(jié)束的 LifecycleHook 執(zhí)行方向?yàn)闇?zhǔn)。

結(jié)束 LifecycleHook 掛起狀態(tài)以后,如果伸縮組配置了負(fù)載均衡(SLB),那么將 ECS 實(shí)例掛載到 SLB 上以后,實(shí)例進(jìn)入 Inservice(服務(wù)中)狀態(tài),此時(shí)彈性擴(kuò)張伸縮活動(dòng)結(jié)束。

對于彈性收縮(SCALE_IN)伸縮活動(dòng):

ECS 實(shí)例先進(jìn)入 Terminating(移出中)狀態(tài),,將實(shí)例從 SLB 后端服務(wù)器移除以后(如果伸縮組配置了負(fù)載均衡(SLB)),觸發(fā) LifecycleHook ,ECS 實(shí)例進(jìn)入 Terminating:Wait(移出中掛起)狀態(tài)。如果 LifecycleHook 配置了通知對象(MNS),則發(fā)送通知內(nèi)容到 MNS,用戶可通過 MNS控制臺 的方式來消費(fèi) MNS 主題或者隊(duì)列中的消息,也可以通過 OpenAPI 的方式消費(fèi),具體可參考 ESS 事件通知#消息接收 章節(jié)。當(dāng)用戶接收到 MNS 消息后可以執(zhí)行自定義操作,例如檢測 ECS 接收到的請求是否處理完成、停止接收服務(wù)等,執(zhí)行完自定義操作以后,用戶可以通過 CompleteLifecycleAction 接口提前結(jié)束掛起的伸縮活動(dòng),也可以等待 LifecycleHook 掛起超時(shí)。LifecycleHook 掛起結(jié)束后有兩個(gè)執(zhí)行方向,CONTINUE or ABANDON,對于彈性收縮伸縮活動(dòng),執(zhí)行方向解釋如下:

  • CONTINUE 繼續(xù),ECS 實(shí)例將從伸縮組中移出

  • ABANDON 拒絕,ECS 實(shí)例將從伸縮組中移出

  • 如果伸縮組配置了多個(gè)彈性收縮類型的 LifecycleHook,那么發(fā)生彈性收縮活動(dòng)時(shí)會(huì)觸發(fā)多個(gè) LifecycleHook,如果某個(gè) LifecycleHook 掛起結(jié)束執(zhí)行結(jié)果為 ABANDON,則其余掛起的 LifecycleHook 會(huì)被提前結(jié)束掉,ECS 實(shí)例從伸縮組中移出,如果某個(gè) LifecycleHook 掛起結(jié)束執(zhí)行結(jié)果為 CONTINUE,則其余掛起的 LifecycleHook 繼續(xù)掛起,直到最后一個(gè) LifecycleHook 掛起結(jié)束,伸縮活動(dòng)恢復(fù)執(zhí)行。

結(jié)束 LifecycleHook 掛起狀態(tài)以后,彈性伸縮服務(wù)會(huì)將 ECS 實(shí)例先從 RDS 白名單移除(如果伸縮組配置了 RDS),再將 ECS 實(shí)例停止(如果 ECS 實(shí)例是伸縮組彈出來的不是手動(dòng)添加的),然后釋放實(shí)例(如果 ECS 實(shí)例是伸縮組彈出來的不是手動(dòng)添加的),并將實(shí)例從伸縮組中移出。

LifecycleHook 通知方式

如果生命周期掛鉤配置了通知對象,那么當(dāng)伸縮組發(fā)生伸縮活動(dòng)觸發(fā) LifecycleHook 時(shí),通知對象將接收到當(dāng)前的伸縮活動(dòng)詳細(xì)信息,如果生命周期掛鉤沒有配置通知對象,那么當(dāng)伸縮組發(fā)生伸縮活動(dòng)觸發(fā) LifecycleHook 時(shí)不會(huì)發(fā)出任何通知信息。

生命周期掛鉤目前支持以下兩種通知方式:

  • 消息服務(wù)(MNS)隊(duì)列(Queue)

  • 消息服務(wù)(MNS)主題(Topic)

關(guān)于 MNS 主題和隊(duì)列的介紹,您可以參考 隊(duì)列使用幫助、主題使用幫助 來了解主題、隊(duì)列的創(chuàng)建,消息的接收方式,以及如何為主題設(shè)置訂閱等。
需要注意的是,MNS 消息服務(wù)會(huì)收取相應(yīng)的費(fèi)用,具體的收費(fèi)標(biāo)準(zhǔn)可參考 云產(chǎn)品定價(jià)#消息服務(wù) 進(jìn)行詳細(xì)了解。

LifecycleHook 通知內(nèi)容

當(dāng)伸縮組發(fā)生伸縮活動(dòng)觸發(fā) LifecycleHook 時(shí),如果生命周期掛鉤配置了通知對象(目前只支持通知到 MNS),那么通知對象將收到關(guān)于此次伸縮活動(dòng)的詳細(xì)信息,通知內(nèi)容如下:

{
  "content": {
    "defaultResult": "CONTINUE",
    "instanceIds": [
      "i-xxxxxxxxxx1",
      "i-xxxxxxxxxx2",
      "i-xxxxxxxxxx3",
      "i-xxxxxxxxxx4",
      "i-xxxxxxxxxx5"
    ],
    "lifecycleActionToken": "C8BEAE68-CB77-4E60-986D-1E8BBF1A6B99",
    "lifecycleHookId": "ash-wxxxxxxxxxxx",
    "lifecycleHookName": "SCALE_IN_TEST",
    "lifecycleTransition": "SCALE_IN",
    "notificationMetadata": "測試 SCALE_IN HOOK",
    "requestId": "XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX",
    "scalingActivityId": "asa-xxxxxxxxxxxxxxxx",
    "scalingGroupId": "asg-xxxxxxxxxxxxxxxxx",
    "scalingGroupName": "test-hook",
    "scalingRuleId": "asr-xxxxxxxxxxxx",
    "scheduledTaskId": "xxxxxxxxxxxxxx"
  },
  "product": "ESS",
  "regionId": "cn-shenzhen",
  "resourceArn": "acs:ess:cn-shenzhen:111111111111111:scalingGroup/asg-xxxxxxxxxxxxx",
  "time": "2018-06-21T03:07:57.641Z",
  "userId": "111111111111111"
}

上述內(nèi)容中:

  • resourceArn 伸縮組唯一標(biāo)識符,包括了伸縮組所在的 Region 信息,所屬的用戶 ID 信息,以及伸縮組 ID 信息。

  • content 生命周期掛鉤觸發(fā)的伸縮活動(dòng)詳細(xì)信息

    • SCALE_OUT:伸縮組彈性擴(kuò)張活動(dòng)

    • SCALE_IN:伸縮組彈性收縮活動(dòng)

    • CONTINUE 繼續(xù)

    • ABANDON 拒絕

    • defaultResult 生命周期掛鉤默認(rèn)執(zhí)行策略

    • instanceIds 生命周期掛鉤掛起的 ECS 實(shí)例ID

    • lifecycleActionToken 生命周期掛鉤唯一標(biāo)識符,通過獲取該參數(shù)與 lifecycleHookId 參數(shù),可通過調(diào)用 CompleteLifecycleAction 主動(dòng)結(jié)束生命周期活動(dòng)

    • lifecycleHookId 生命周期掛鉤 ID

    • lifecycleHookName 生命周期掛鉤名稱

    • lifecycleTransition 生命周期掛鉤適用的伸縮活動(dòng)類型,取值范圍:

    • notificationMetadata 生命周期掛鉤通知標(biāo)識

    • scalingActivityId 伸縮活動(dòng) ID

    • scalingGroupId 伸縮組ID

    • scalingGroupName 伸縮組名稱

    • scalingRuleId 觸發(fā)伸縮活動(dòng)的伸縮規(guī)則名稱(此參數(shù)不是必帶)

    • scheduledTaskId 定時(shí)任務(wù)ID(只有伸縮活動(dòng)是由定時(shí)任務(wù)觸發(fā)的時(shí)候才會(huì)有此參數(shù))

MNS 隊(duì)列或主題內(nèi)容的消費(fèi)方式,推薦參考 MNS 官方給出的 長輪訓(xùn)最佳實(shí)踐 文檔,使用長輪詢的方式來消費(fèi)隊(duì)列或主題收到的消息內(nèi)容。

最佳實(shí)踐

創(chuàng)建 LifecycleHook 通知對象

在創(chuàng)建 LifecycleHook 時(shí),可以配置通知對象,也可以不配置通知對象,如果需要配置通知對象,需要先創(chuàng)建好通知對象,再創(chuàng)建 LifecycleHook。關(guān)于通知對象(MNS 主題、隊(duì)列)的創(chuàng)建方式,可以參考 ESS 事件通知#創(chuàng)建 MNS 隊(duì)列 章節(jié) 和 ESS 事件通知#創(chuàng)建 MNS 主題 章節(jié)。

創(chuàng)建 LifecycleHook

LifecycleHook 的創(chuàng)建,可以通過 ESS控制臺 完成,也可以通過調(diào)用 CreateLifecycleHook 接口完成。通過接口創(chuàng)建 LifecycleHook,可基于 CreateLifecycleHook 文檔,參考 ESS 事件通知#創(chuàng)建事件通知(OpenAPI) 章節(jié)實(shí)現(xiàn)。通過 ESS控制臺 創(chuàng)建 LifecycleHook 過程如下:

登錄 ESS控制臺,進(jìn)入生命周期掛鉤列表頁,點(diǎn)擊創(chuàng)建生命周期掛鉤按鈕,彈出創(chuàng)建界面如下圖所示:

AutoScaling 生命周期的作用是什么

按提示名稱,通知標(biāo)識,選擇伸縮活動(dòng)類型、執(zhí)行策略和通知方式,點(diǎn)擊確定,如下圖所示:

AutoScaling 生命周期的作用是什么

上圖中,創(chuàng)建了兩個(gè) LifecycleHook,一個(gè)伸縮活動(dòng)擴(kuò)張類型的 LifecycleHook,一個(gè)伸縮活動(dòng)收縮類型的 LifecycleHook。

觸發(fā) LifecycleHook

本章以觸發(fā)彈性收縮活動(dòng)為例,展示 LifecycleHook 工作過程。觸發(fā)伸縮活動(dòng)的方式,可參考 ESS 事件通知#創(chuàng)建事件通知(OpenAPI) 章節(jié)完成。

首先觸發(fā)減少1臺實(shí)例的伸縮活動(dòng),如下圖所示:

AutoScaling 生命周期的作用是什么

查看伸縮組 ECS 實(shí)例列表頁,如下圖所示:

AutoScaling 生命周期的作用是什么

從上圖看出,此時(shí)有一臺 ECS 實(shí)例處于掛起狀態(tài),由于彈性收縮類型的 LifecycleHook 設(shè)置了通知對象,可以登錄 MNS控制臺 查看通知結(jié)果,消息查看方式可參考 ESS 事件通知#MNS 隊(duì)列消息接收) 章節(jié)。

接收到 LifecycleHook 發(fā)送的通知內(nèi)容以后,提取 lifecycleActionToken 、lifecycleHookId 參數(shù),然后通過調(diào)用 CompleteLifecycleAction 接口提前結(jié)束 LifecycleHook 掛起狀態(tài),調(diào)用方式如下:

public class LifecycleHookTest {
    public static final String REGION_ID = "cn-hangzhou";

    public static final String AK        = "xxx";

    public static final String AKS       = "xxx";

    public static void main(String[] args) throws ClientException, Exception {
        IClientProfile clientProfile = DefaultProfile.getProfile(REGION_ID, AK, AKS);
        final IAcsClient client = new DefaultAcsClient(clientProfile);
        completeLifecycleAction(client);
    }

    private static String completeLifecycleAction(IAcsClient client) throws ClientException {
        CompleteLifecycleActionRequest request = new CompleteLifecycleActionRequest();
        request.setLifecycleHookId("ash-xxxxxxxxxxxxx");
        request.setLifecycleActionToken("xxxxxxxxxxxxxxx");
        request.setLifecycleActionResult("CONTINUE");
        CompleteLifecycleActionResponse response = client.getAcsResponse(request);
        return response.getRequestId();
    }
}

使用上述代碼中,需補(bǔ)充個(gè)人 AK 信息,以及 LifecycleActionToken 和 LifecycleHookId 參數(shù)。

LifecycleHook 掛起狀態(tài)結(jié)束以后,ECS 實(shí)例被停止(伸縮組創(chuàng)建的實(shí)例),然后釋放(伸縮組創(chuàng)建的實(shí)例)并移出伸縮組。

需要注意,如果 LifecycleHook 配置的通知對象被刪除,那么當(dāng)前的 LifecycleHook 將不再生效。如果伸縮活動(dòng)觸發(fā) LifecycleHook 被掛起,想要延長伸縮活動(dòng)被掛起的時(shí)間,可以通過調(diào)用 RecordLifecycleActionHeartbeat 延長掛起時(shí)間。

關(guān)于AutoScaling 生命周期的作用是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


新聞名稱:AutoScaling生命周期的作用是什么
新聞來源:http://weahome.cn/article/pooceo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部