说明(MyCat的HA):
2台MyCat:2台MyCat一致的配置,同时连接到MySQL1和MySQL2。
2台Haproxy:2台Haproxy一致的配置,同时连接到MyCat1和MyCat2。
2台Keepalived:1台主(MASTER)Keepalived,1台备(BACKUP)Keepalived,当主Keepalived宕机时虚拟IP自动部署到备Keepalived(反之一样),当主Keepalived绑定的Haproxy主机宕机时虚拟IP自动部署到备Keepalived(反之一样)。
一、MyCat安装:
MySQL1主机:192.168.233.141:3066
MySQL2主机:192.168.233.142:3066
MyCat1主机:192.168.233.143:8066
MyCat2主机:192.168.233.145:8066
1.安装/配置/启动MyCat(第一、二、四章):
https://blog.csdn.net/a526001650a/article/details/103949574
二、Haproxy安装/配置:
在以下2台主机上安装/配置haproxy(配置一致):
haproxy1主机:192.168.233.141:5000
haproxy2主机:192.168.233.142:5000
1.安装haproxy:
[root@localhost ~]# yum -y install haproxy.x86_64
2.配置haproxy路由到2台MyCat主机(cd /etc/haproxy):
[root@localhost haproxy]# vi haproxy.cfg
内容如下:
defaults
mode tcp #改为TCP协议
...
option tcplog #改为tcplog
...
#注释掉以下2条HTTP的配置
#option http-server-close
#option forwardfor except 127.0.0.0/8
frontend main *:5000 #注释掉以下3条HTTP的配置
#acl url_static path_beg -i /static /images /javascript /stylesheets
#acl url_static path_end -i .jpg .gif .png .css .js
#use_backend static if url_static
#...
backend app
balance roundrobin #负载均衡为轮询
server app1 192.168.233.143:8066 check #配置MyCat1主机的IP+端口
server app2 192.168.233.145:8066 check #配置MyCat2主机的IP+端口
3.启动haproxy(cd /etc/haproxy):
[root@localhost haproxy]# haproxy -f haproxy.cfg
4.查看进程:
[root@localhost haproxy]# ps -ef|grep haproxy
5.使用Navicat连接远程的haproxy主机(此处测试了haproxy1主机,实际访问的是MyCat逻辑库):
(1)打开Navicat软件,点击"连接"按钮,在下拉列表中选择"MySQL...":
(2)新建连接,填入远程haproxy的主机IP、haproxy端口(5000)、MyCat登录用户+密码,确定:
三、keepalived主备安装/配置:
在以下2台主机上安装/配置keepalived:
keepalived1主机(MASTER):192.168.233.141:
keepalived2备机(BACKUP):192.168.233.142:
1.在2台主机上安装keepalived(第一章):
https://blog.csdn.net/a526001650a/article/details/120695963
2.配置keepalived1主机+keepalived2备机:
(1)配置keepalived1主机(cd /etc/keepalived,vi keepalived.conf):
global_defs {
... #其他配置保持原样
#vrrp_strict #注释此行
... #其他配置保持原样
}
vrrp_script haproxy_check { #监测haproxy是否宕机,haproxy_check为自定义方法名
script "killall -0 haproxy" #杀死haproxy所有进程
interval 2 #定期执行间隔时间,单位为秒
}
vrrp_instance VI_1 { #与第2台VI_1配套
state MASTER #设置为第1台MASTER主机,与第2台BACKUP对应
interface ens33 #设置绑定的网卡,此处网卡为eth0
virtual_router_id 51 #第1个虚拟路由id,此处和第2台VI_1的virtual_router_id一样
priority 100 #设置权重,MASTER主机值要大于BACKUP备机值
advert_int 1 #主机与备机同步检查间隔,单位为秒
authentication { #设置认证权限
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.233.100 #虚拟IP,此处和第2台VI_1的virtual_ipaddress一样,默认绑定第1台MASTER,第1台MASTER宕机时绑定第2台BACKUP
}
track_script {
haproxy_check #调用上述定义的haproxy_check方法
}
}
virtual_server 192.168.233.100 8000 { #配置虚拟IP与端口
delay_loop 6 #haproxy健康检查时间,单位为秒
lb_algo rr #负载均衡为轮询方式
lb_kind NAT #模式为NAT
persistence_timeout 5 #会话持久化间隔时间
protocol TCP #协议 -t
real_server 192.168.233.141 5000 { #haproxy1主机的IP与端口
weight 1
}
}
(2)配置keepalived2备机(cd /etc/keepalived,vi keepalived.conf):
global_defs {
... #其他配置保持原样
#vrrp_strict #注释此行
... #其他配置保持原样
}
vrrp_script haproxy_check { #监测haproxy是否宕机,haproxy_check为自定义方法名
script "killall -0 haproxy" #杀死haproxy所有进程
interval 2 #定期执行间隔时间,单位为秒
}
vrrp_instance VI_1 {
state BACKUP #设置为BACKUP备机
interface ens33 #设置绑定的网卡
virtual_router_id 51 #备机此值要和主机一样
priority 80 #设置权重,BACKUP备机值要低于MASTER主机值
advert_int 1 #备机与主机同步检查间隔,单位为秒
authentication { #设置认证权限
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.233.100 #生成虚拟IP,备/主机此处保持一致,主机宕机时绑定备机
}
track_script {
haproxy_check #调用上述定义的haproxy_check方法
}
}
virtual_server 192.168.233.100 8000 { #配置虚拟IP与端口
delay_loop 6 #haproxy健康检查时间,单位为秒
lb_algo rr #负载均衡为轮询方式
lb_kind NAT #模式为NAT
persistence_timeout 5 #会话持久化间隔时间
protocol TCP #协议 -t
real_server 192.168.233.142 5000 { #haproxy2主机的IP与端口
weight 1
}
}
3.安装killall命令软件:
[root@localhost keepalived]# yum install -y psmisc.x86_64
4.启动keepalived1主机+keepalived2备机(cd /etc/keepalived/):
[root@localhost keepalived]# systemctl start keepalived
5.查看进程:
[root@localhost keepalived]# ps -ef|grep keepalived
6.使用Navicat连接远程的keepalived虚拟IP(实际访问的是MyCat逻辑库):
(1)打开Navicat软件,点击"连接"按钮,在下拉列表中选择"MySQL...":
(2)新建连接,填入远程keepalived的虚拟IP、keepalived端口(8000)、MyCat登录用户+密码,确定:
四、所有连接如图所示: