基于HA机制的Mycat高可用
环境
- 操作系统:CentOS 7
- Mycat版本:Mycat1.6.7.6
- HAproxy版本:1.5.18
- Keepalived版本:1.4.2
准备
- Mycat安装:CentOS安装Keepalived
- HAproxy安装:CentOS安装HAproxy
- Keepalived:Mycat1.6.7.6安装与启动
高可用方案
在实际项目中,Mycat服务也需要考虑高可用性,如果Mycat所在服务器出现宕机,或Mycat服务故障,需要有备机提供服务,需要考虑Mycat集群,可以使用 HAProxy + Keepalived 配合两台+Mycat搭起Mycat集群实现高可用性。HAProxy实现了MyCat多节点的集群高可用和负载均衡,而HAProxy自身的高可用则可以通过Keepalived来实现
HAproxy配置
global |
配置完HAproxy,可以先验证一下负载均衡,把配置的Mycat服务都启动起来,我这里只配置了两台Mycat服务,根据实际需求可更改,启动Mycat,再启动HAproxy,以访问Mycat的形式访问,把端口号和IP改为HAproxy的,举例
mysql -umycat -p123456 -h192.168.100.13 -P8081 |
访问HAproxyWeb端页面地址:http://192.168.100.13:8082/admin 用户名:admin,密码:123456,界面截图略过 这里配置一台HAproxy之后,配置多台Mycat服务,到这里已经可以达到一定抗风险能力,此时就可以把原来操作Mycat服务链接改成HAproxy,让原来走Mycat服务操作数据库更改为通过HAproxy访问,此时流程应该是这样 经测试,手动模拟其中一台Mycat服务宕机,通过HAproxy依然能够访问数据
注意
如果以下Keepalived配置“IP漂移”不成功,只配置HAproxy也是可以的,网络上大多数配置Keepalived的“IP漂移”都是建立在虚拟机上,很少有文章讲在真实服务器上如何配置,至少作者是没遇到一个讲解在真实服务器如何配置,详情见下方Keepalived配置 注:如果需要继续配置使用Keepalived,两台HAproxy配置要保持一致
Keepalived配置
! Configuration File for keepalived |
按照在虚拟机上配置,这里配置完之后,启动Mycat,启动Haproxy,启动keepalived之后,就可以通过keepalived中配置的虚拟IP访问数据 举例,此时访问数据是如下
mysql -umycat -p123456 -h192.168.100.20 -P8081 |
关于虚拟IP
先说要实现的效果,一切顺利的话,到这里已经完成了文章开头插入的效果,应用服务通过虚拟IP访问数据,算了我还是上个图吧… 图解文字:MASTER主机没有挂掉之前,都是通过MASTER访问,只有MASTER宕机,IP才会飘移至BACKUP备机,此时我们的应用依旧是固定配置的虚拟IP,不需要改变 重点来了,在虚拟机上我们机器IP都是可以定的,如果是虚拟机做测试,虚拟IP要是和Keepalived中配置的服务在同一个网段,比如本文配置的是192.168.100.13和192.168.100.14,虚拟IP就需要配置192.168.100.xx ,但是在真实云服务器上怎么配置呢?比如使用的服务器是阿里云、腾讯、华为等等厂商的,大多是通过弹性公网IP绑定到云主机,通过固定的服务器IP来访问真实服务器
华为云服务器测试
起初没配置之前感觉这TM就是在扯淡,通过虚拟IP访问的通???怎么可能访问的通这不是把智商按在地上摩擦吗? 带着不可能的疑惑一顿操作,作者使用测试的是华为弹性云服务器,在真实服务器上做测试,keepalived配置中的虚拟IP不知道配置什么,只是知道要在同一网段,但是服务器买的时候弹性公网IP要挨着买? 于是就先ifconfig看一下网卡的地址,虚拟IP就随便设置了一个和网卡地址相同网段的IP,重启两台机器的Keepalived,访问测试,不通,两台机器更不用说通过虚拟IP通信了,最终经过摸索,能够在一台机器上通过虚拟IP访问数据,但是两台不能通信 一台真实服务器通过虚拟IP操作数据的情况配置 修改Keepalived配置中,虚拟IP和virtual_server后面的IP不要配置相同,但是要在一个网段,如下配置,仅能在安装Keepalived的这台本机通过虚拟IP访问数据,如果只能这样,Keepalived只起到了保护真实数据服务IP的作用,主备切换就没实现,倒还不如直接通过HAproxy访问数据
virtual_ipaddress { |
最后经过探索查阅才知道,比如作者是华为云厂商的服务器,就需要到华为云控制台去手动申请一个虚拟IP地址,然后经过一系列操作才能达到以上在虚拟机中实现的能主备切换,达到高可用,最终因为缺少一个弹性公网IP没去实现真实服务器IP漂移,只能等到后续业务真正需要的时候再来实现,到时候再来更新
后记
如果想去捣鼓,这里奉上华为云申请虚拟IP的官方操作文档:虚拟私有云VPC 华为私有云VPC操作PDF版本下载:https://support.huaweicloud.com/usermanual-vpc/vpc-usermanual.pdf 建议查看PDF版本,PDF版本有实例更为详细,如果你真是服务器环境搞出来了,记得艾特我!至少给我发个邮件:satisfied: :envelope:邮箱:gitlab@111.com 互相学习!