Openstack环境下配置MHA+LVS的注意事项

来源:互联网 发布:php exec java 编辑:程序博客网 时间:2024/04/27 15:42

最近公司在搞Openstack,计划将部分MySQL数据库服务也迁移到Openstack+KVM的环境中。在Openstack环境中搭建MHA+lvs环境时遇到了一个LVS的小麻烦。

我们将在VMware环境下测试好的脚本迁移到Openstack环境下,MHA+lvs环境很快搭好了。


现象:

在lvs+keepalived的主机上:
1.可以ping通LVS后端的real server的真实IP.
2.可以通过mysql客户端访问到提供只读服务的MySQL从库.
3.telnet不通LVS VIP 的3306端口


分析:
1.real server和LVS在同一网段,应该不是LVS跨网段的问题导致。
2.在仔细检查了MHA和LVS的配置后,我们确认不是配置引起的问题。
3.KVM 上的iptables和selinux都已经关闭。



环境的区别:
环境一:VMware+MHA+lVS
环境二:Openstack+MHA+lVS
两个环境唯一的区别是一个是VMware,另一个是Openstack。


问题原因:

会不会是Openstack上有限制呢?找到复制Openstack的同事问了一下,用tcpdump抓包分析后,终于找出了问题的原因。

由于Openstack neutron默认打开了安全组功能。在安全组中有防止dos攻击的功能。导致了LVS在平台内建立tcp连接不成功。



解决方法:
方法一
:使安全组在linux上不生效,修改/etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
sysctl -p


方法二:
修改代码 neutron/agent/linux/iptables_firewall.py(推荐)
注释掉这句即可
#self._drop_invalid_packets(iptables_rules)
0 0