Mycat+haproxy中使用keepalived保障haproxy的高可用
Posted on 2020-11-14 13:24 work hard work smart 阅读(212) 评论(0) 收藏 举报整体结构图

一、安装haproxy
1、在192.168.127.135中安装haproxy。
上一节我们在192.168.127.134中安装haproxy,这节我们在192.168.127.135中安装haproxy
安装过程参考MyCat高可用设计
2、修改haproxy 配置
vi /etc/haproxy/haproxy.cfg

针对http的配置注释掉

配置连接两台mycat

3、启动haproxy
haproxy -f /etc/haproxy/haproxy.cfg
进程已经在了,说明启动成功

4、使用Navicat连接haproxy
1) 使用的端口为5000,防火墙开放5000端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=5000/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
2) Navicat连接haproxy

到这里,我们在192.168.127.134和192.168.127.135都安装了haproxy。
二、使用Keepalived保障haproxy的高可用
1、在192.168.127.134安装Keepalived
yum search keepalived
yum install -y keepalived.x86_64
2、修改keepalived配置文件
1) 注释vrrp_strict 将影响虚拟IP
cd /etc/keepalived
vi keepalived.conf

整体配置
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
}
# 配置虚拟IP,一台为Master,另外一台为BACKUP。Master才能得到虚拟IP
vrrp_instance VI_1 {
state MASTER
# ens33为网卡名称 使用ip address查看
interface ens33
virtual_router_id 51
priority 100
# 单播源地址IP
unicast_src_ip 192.168.127.134
unicast_peer {
192.168.127.135 # 单播的目标地址
}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟Ip地址
virtual_ipaddress {
192.168.127.199
}
track_script {
chk_haproxy
}
}
# 虚拟Ip,定义端口为6000
virtual_server 192.168.127.199 6000 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
# 本机地址。5000为haproxy端口
real_server 192.168.127.134 5000 {
weight 1
# 心跳监测,监测haproxy是否存活
}
}
2、在192.168.127.135安装Keepalived。(参考前面的步骤)
整体配置如下
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
}
# 配置虚拟IP,一台为Master,另外一台为Slave。Master才能得到虚拟IP
vrrp_instance VI_1 {
state BACKUP
# ens33为网卡名称 使用ip address查看
interface ens33
virtual_router_id 51
priority 50
# 单播源地址IP
unicast_src_ip 192.168.127.135
unicast_peer {
192.168.127.134 # 单播的目标地址
}
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟Ip地址
virtual_ipaddress {
192.168.127.199
}
track_script {
chk_haproxy
}
}
# 虚拟Ip,定义端口为6000
virtual_server 192.168.127.199 6000 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
# 本机地址。5000为haproxy端口
real_server 192.168.127.135 5000 {
weight 1
# 心跳监测,监测haproxy是否存活
}
}
3、启动Keepalived
分别启动134和135的keepalived
keepalived -f /etc/keepalived/keepalived.conf
使用ps查看是否启动成功

134中查看ip,可以看到多了一个虚拟ip,192.168.127.199

135中查看ip,则没有199的虚拟IP

4、Navicat连接keepalived

密码位mycat的密码
如下图,说明已经连接成功

5、移除134的haproxy

可以发现虚拟IP已经没有

135则由了虚拟IP地址。说明虚拟IP已经由134这台转移到了135这台了。

6、停止134的keepalived,可以发现使用虚拟Ip, keepalived仍然可用。

此时的虚拟IP转移到了135这台, 134则没有了虚拟IP199.
测试完毕后恢复134的keepalived。 测试虚拟地址在134这台。
6、停止134的haproxy, 可以发现192.168.127.199 任然可以访问, 虚拟IP转移到了135。
综上所述,就保证了haproxy的高可用。
作者:Work Hard Work Smart
出处:http://www.cnblogs.com/linlf03/
欢迎任何形式的转载,未经作者同意,请保留此段声明!
浙公网安备 33010602011771号