关于firewall-cmd对docker无效的问题

查看 60|回复 5
作者:yhsiao   
事情是这样的,搭建了mysql主从集群,分别位于两台机器上,并对数据库的3306端口做了映射,映射到主机的1089.搭建成功,主库和从库都可以通过1089访问,主从复制正常。后来,将docker的"iptables"值设置为false,让docker不添加iptables规则,主库和从库使用firewall-cmd放行1089端口。使用相同的步骤和配置搭建主从集群,搭建完成后客户端也可以正常通过1089端口连接到主库和从库,但是主库和从库间复制异常,登录从库查询从库状态,发现 Slave_IO_Running:一直处于Connecting状态,也就是从库连接不到主库。
大佬们,帮忙分析下问题出在哪里,谢谢。

主从, 端口, 集群

32MB.CN   
那就改回去,你不想让外网访问,映射端口时加上本地IP -p 127.0.0.1:8080:80
朱元璋   
根据您的描述,当您使用iptables为Docker添加规则时,主从复制正常工作。但是,当您将Docker的iptables设置为false,并使用firewall-cmd放行端口时,主库和从库之间的复制出现了问题。从库的`Slave_IO_Running`状态一直处于`Connecting`状态,即从库无法连接到主库。
这种情况可能是由于防火墙配置或网络连接问题导致的。请确保按照以下步骤进行排查:
1. 确认主库和从库的网络连接正常。确保主库和从库可以相互访问,并且没有任何网络层面的问题。
2. 检查主库和从库的防火墙配置。确保主库和从库的防火墙允许通过1089端口的流量。您可以使用以下命令检查防火墙规则:
   ```
   sudo firewall-cmd --list-all
   ```
   确认是否存在针对1089端口的允许规则。
3. 检查主库和从库的MySQL配置。确保在主库和从库的MySQL配置文件中,`bind-address` 参数设置为正确的 IP 地址,并且 `port` 参数设置为 1089。
4. 检查主库和从库的MySQL用户授权。确保在主库和从库上,使用正确的用户和密码进行授权,以便从库可以连接到主库。
5. 检查主库的二进制日志配置。在主库的MySQL配置文件中,确认以下参数是否正确设置:
   ```
   log-bin=mysql-bin
   server-id=1
   ```
   确保 `log-bin` 参数启用了二进制日志,并且 `server-id` 参数设置为唯一的值。
6. 检查从库的主从复制配置。在从库的MySQL配置文件中,确认以下参数是否正确设置:
   ```
   server-id=2
   relay-log=mysql-relay-bin
   ```
   确保 `server-id` 参数设置为唯一的值,并且 `relay-log` 参数启用了中继日志。
7. 检查从库的主从复制用户配置。在从库上,确保使用正确的用户和密码配置主从复制。
完成上述步骤后,重新启动主库和从库,并检查从库的状态是否正常。如果问题仍然存在,可以查看主库和从库的日志文件,以获取更多的错误信息来进行排查。
帮你问了ChatGPT
yhsiao
OP
  

32MB.CN 发表于 2023-7-19 21:23
那就改回去,你不想让外网访问,映射端口时加上本地IP -p 127.0.0.1:8080:80

我主要是想通过firewall-cmd来管理主机的防火墙。实现弄不清楚,为什么可以通过1089访问主库和从库,但从库却连不上主库
yhsiao
OP
  

朱元璋 发表于 2023-7-19 21:24
根据您的描述,当您使用iptables为Docker添加规则时,主从复制正常工作。但是,当您将Docker的iptables设置 ...

我也问过好几次GPT了,他给出的可能原因都不是,都排查了
charm   
docker本来就不遵守iptables 和ufw的规则,他自己有自己的一套,应该是在docker里设置他自己的规则。建议谷歌 有相应解决办法
您需要登录后才可以回帖 登录 | 立即注册

返回顶部