RDS SQL Server支持通过设置分布式事务白名单确保事务一致性和隔离性。您需首先在RDS实例中配置分布式事务白名单,精准授权特定ECS实例访问并参与RDS SQL Server的事务处理;其次对应调整ECS实例的安全组规则,确保ECS实例的网络配置与RDS端的白名单策略相匹配,从而构建一个安全稳定的分布式事务环境,便于后续排查解决事务一致性问题等。
前提条件
RDS SQL Server实例需满足如下条件:
- 数据库版本:2022 企业集群版、2019 企业集群版、2017 企业集群版、2016 企业版、2014 企业版、2012 企业版、2022 标准版、2019 标准版、2017 标准版、2016 标准版、2014 标准版、2012 标准版、2008 R2 云盘版 
- 规格族:通用型、独享型(不支持共享型) 
- 计费方式:包年包月或按量付费(不支持Serverless实例) 
您可以前往实例基本信息页面查看以上信息。
注意事项
如果您对RDS SQL Server实例执行了大版本升级、小版本升级或迁移可用区操作,RDS实例底层所在ECS实例的主机名和IP地址可能发生变化,您需要重新配置分布式事务白名单,以匹配新的IP地址。
可访问RDS实例详情页页面,查看当前主机名和IP地址。
RDS设置
步骤一:设置白名单分组
在RDS实例中设置白名单分组,以允许特定ECS实例通过其IP地址访问RDS实例。
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。 
- 在左侧导航栏单击白名单与安全组,然后在 - default白名单分组右侧单击修改,填写ECS实例的IP地址。说明- 如果ECS与RDS在相同VPC内,请填写ECS的私有IP。 
- 如果ECS与RDS在不同VPC内,请填写ECS的公网IP,且需要为RDS实例申请外网地址。 
- 您可以在ECS实例的实例详情页面查看私有IP或公网IP地址。 
 - ECS实例的IP获取页面如下:  
- 单击确定。 
步骤二:设置分布式事务白名单
在RDS实例中设置分布式事务白名单,明确哪些ECS实例可以通过计算机名参与分布式事务。
- 在RDS实例详情页的左侧导航栏单击数据安全性,然后单击分布式事务白名单页签。 
- 单击添加白名单分组,设置如下参数后,单击确定。 - 参数 - 说明 - 分组名称: - 长度为2~32个字符。由数字、小写字母以及下划线(_)组成。由小写字母开头,结尾必须是字母或数字。 - 组内白名单 - 填写 - ECS实例IP地址,ECS实例上Windows系统的计算机名(Hostname),以英文逗号(,)分隔。例如:- 192.168.1.100,k3ecstest。 如果有多个ECS实例添加,请分行填写。- Hostname查看方法:在ECS实例上Windows系统的页面查看。  
ECS设置
调整ECS实例的安全组规则,开放必要端口,以确保ECS实例侧的网络配置与RDS侧的白名单设置相匹配,共同实现安全的分布式事务环境。
- 登录ECS管理控制台。 
- 在左侧选择。 
- 在页面左上角,选择实例所在地域。 
- 找到目标实例,单击实例ID。 
- 在顶部导航栏中,选择安全组。 
- 单击目标安全组操作列下的管理规则。 
- 选择入方向页签,单击增加规则。 
- 设置如下参数,单击确定。 - 参数 - 说明 - 授权策略 - 选择允许。 - 优先级 - 保持默认值:1。 - 协议 - 选择自定义 TCP。 - 访问来源 - 访问RDS实例的页面,将RDS实例信息的2个IP地址(即RDS SQL Server实例底层所在ECS实例的IP)填写到授权对象框。  说明 说明- 您也可以通过DescribeDBInstanceIpHostname接口查询IP地址。 - 访问目的 - 选择端口并填写135。 说明- 135是RPC服务的固定端口。 - 描述 - 长度为2~256个字符,不能以 - http://或- https://开头。
- 再次配置安全组规则,访问目的的端口填写1024/65535,其他参数与步骤8配置项相同。 
相关文档
- 分布式事务的相关最佳实践,请参见金蝶K/3 WISE 接入阿里云RDS SQL Server。 
- 白名单的更多操作场景,请参见设置白名单。 
- 安全组的概念、使用限制、最佳实践等详情,请参见安全组概述。 
常见报错
应用程序与分布式事务管理器通信失败,报错Communication with the underlying transaction manager has failed.如何解决?
| 可能报错原因 | 解决方案 | 
| RDS实例IP地址和主机名发生变化 | 如果您对RDS SQL Server实例执行了大版本升级、小版本升级或迁移可用区操作,RDS实例底层所在ECS实例的主机名和IP地址可能发生变化,您需要重新配置分布式事务白名单,以匹配新的IP地址。 可访问RDS实例详情页页面,查看当前主机名和IP地址。 | 
| 事务管理器服务状态异常等 | 若IP地址正确,但事务管理器未正常运行(例如因配置错误、权限问题或服务器资源不足)、网络连接不稳定或中断,也会导致通信失败。 |