DRS无法连接ECS自建的MySQL数据库DRS.KE0004
问题现象
业务需要将ECS上自建的MySQL数据库迁移到RDS for MySQL,使用DRS进行迁移任务,在测试源端数据库连接时失败,提示:DRS.KE0004:数据库不可用。
业务使用navicat客户端工具,用同样的账号、密码是可以正常连接数据库的。
排查思路
DRS需要分别连接源和目的数据库,可以将DRS视为一个云上的数据库客户端。
云上数据库连接不通数据库,常见的原因就是数据库的安全组未放通客户端的IP访问数据库服务端口(默认是3306端口),如果连接正常到了MySQL服务端了还是无法连接,则需要看服务端的日志来协助定位。
问题排查
1、排查ECS自建MySQL的安全组策略
发现已经将所有的端口都放通了。如何判断放开;或者如果没有放开,怎么配置放开的方法请参考 https://support.huaweicloud.com/qs-rds/rds_02_0004.html。
2、登录源MySQL所在的ECS,通过tcpdump抓包或message日志,发现已经收到了DRS对3306端口的请求,但是mysqld_drop掉了这些请求包,在 /var/log/messages 日志中发现有mysqld_drop的字眼,遂查看iptables规则。下图为message日志关联内容:
3、ECS的iptables情况:
发现多出来 IN_HIDS_MYSQLD_BIP_DROP 和 IN_HIDS_MYSQLD_DENY_DROP 2条链,通过规则可以看出来自测试服的ip访问3306被丢弃+记录日志。
4、查找所有规则,并删除异常多余的规则
iptables -L IN_HIDS_MYSQLD_DENY_DROP --line-numbers
iptables -D IN_HIDS_MYSQLD_DENY_DROP 2
iptables -D IN_HIDS_MYSQLD_DENY_DROP 1
5、此时问题解决
问题根因
华为ECS上有自带hostguard(HSS企业主机安全服务),若30秒内,mysql账户暴力破解次数达到5次及以上,或者3600秒内,账户暴力破解次数达到15次及以上,hostguard就会拦截该源IP。
问题解决
查找所有规则,并删除异常多余的规则
iptables -L IN_HIDS_MYSQLD_DENY_DROP --line-numbers
iptables -D IN_HIDS_MYSQLD_DENY_DROP 2
iptables -D IN_HIDS_MYSQLD_DENY_DROP 1
- 点赞
- 收藏
- 关注作者
评论(0)