阿里云弹性伸缩服务 (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/
来源: http://www.bubuko.com/infodetail-2691537.html