1. 程式人生 > >AutoScaling 彈性伸縮附加與分離RDS實例

AutoScaling 彈性伸縮附加與分離RDS實例

完成 一次 new pid 全部 社區 ppa 線數據 lin

阿裏雲彈性伸縮服務(AutoScaling)推出新功能:AttachDBInstances和DetachDBInstances。新功能使得您可以自由的對伸縮組附加和移除Rds實例。

本文將為您介紹如何將 Rds 實例附加到和分離出伸縮組。

RDS
RDS是阿裏雲提供的一種穩定可靠的在線數據庫服務,支持MySQL、SQL Server、PostgreSQL 和 PPAS引擎,並且提供了容災、備份、恢復、監控、遷移等方面的全套解決方案,徹底解決數據庫運維的煩惱。RDS 與 彈性伸縮相結合時,通過將伸縮組內的實例自動加入到 RDS 實例的白名單,實現組內實例能夠安全訪問 RDS實例。

關於 RDS 實例更詳細的介紹您可以參考 什麽是RDS,訪問控制。

將 RDS 實例附加到伸縮組
將 RDS 實例附加到伸縮組時,根據您指定的 forceAttch 參數值,附加過程有以下兩種行為:

forceAttach 為true,將 RDS 實例附加到伸縮組時,會把伸縮組中當前擁有的所有實例私網IP都加入到 RDS 實例的IP白名單中。
forceAttach 為false,將 RDS 實例附加到伸縮組時,不會嘗試將伸縮組中已有實例私網IP加入到 RDS 實例的IP白名單中。
對於上述 RDS 附加過程,如果您將一個已經存在伸縮組中的 RDS 實例再次附加到伸縮組,此時,組內 RDS 實例數量不會改變,僅會嘗試把當前伸縮組內的實例私網IP全部加入其IP白名單中。

您需要註意,將 RDS 實例附加到伸縮組,RDS 實例需要滿足一下限制:

RDS 實例必須是用戶擁有的未刪除實例。
RDS 實例必須為 UNLOCK。
RDS 實例運行狀態必須為 RUNNING。
RDS default分組的IP白名單總數在完成添加後不能超過1000個。
將 RDS 實例分離出伸縮組
將 RDS 實例從伸縮組中分離時,根據您指定的forceDetach參數,將有以下兩種行為:

forceDetach 為true,將 RDS 實例從伸縮組移除的同時,將把 RDS 白名單中與伸縮組關聯的實例IP移除。
forceDetach 為false,將 RDS 實例從伸縮組移除的同時,不會把 RDS 白名單中與伸縮組關聯的實例IP移除。

您可以根據您的實際需要確定 forceDetach 的設置,需要註意的是,您無法對同一個 RDS 實例重復執行移除操作。

最佳實踐
SDK進行Attach/Detach RDS
AutoScaling 提供了 AttachDBInstances,DetachDBInstances 兩個openapi,您可以通過使用 SDK 來進行 RDS 實例附加/移除伸縮組的操作。

此處,以 AutoScaling java SDK 為例,向您介紹了如何使用 openapi 完成 RDS 實例附加與移除伸縮組。

在使用sdk之前,首先需要下載相應的依賴,您可以在阿裏雲 SDK 中查找 java SDK ,下載所需依賴。如果您使用maven管理您的項目,您只需要在項目中添加如下依賴信息:

      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.0.2</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-ess</artifactId>
        <version>2.2.1</version>
    </dependency>     

AttachDBInstances:

IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "yourAk", "yourSecret")
IAcsClient client = new DefaultAcsClient(profile);
AttachDBInstancesRequest request = new AttachDBInstancesRequest();
request.setScalingGroupId(scalingGroupId); // 伸縮組id
request.setDBInstances(Arrays.asList(dBInstanceId));//附加的Rds實例列表
request.setForceAttach(ForceAttach);
AttachDBInstancesResponse response = client.getAcsResponse(request);

DetachDBInstances:

IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "yourAk", "yourSecret")
IAcsClient client = new DefaultAcsClient(profile);
DetachDBInstancesRequest request = new DetachDBInstancesRequest();
request.setScalingGroupId(scalingGroupId); // 伸縮組id
request.setDBInstances(Arrays.asList(dBInstanceId));//移除的Rds實例列表
request.setForceDetach(ForceDetach);

DetachDBInstancesResponse response = client.getAcsResponse(request);
通過 openapi 的方式進行 RDS 的附加和移除操作,目前支持一次最多操作5個RDS實例。

寫在最後
AttachDBInstances 和 DetachDBInstances 操作,使得 RDS 實例與伸縮組不再強綁定在一起,您可以根據您的需要調整伸縮組內的 RDS 實例,大大增加了您使用上的靈活性與實用性。

http://click.aliyun.com/m/1000007317/http://click.aliyun.com/m/1000007317/
本文為雲棲社區原創內容,未經允許不得轉載

AutoScaling 彈性伸縮附加與分離RDS實例