笺注:这是在 Keepalived+LVS 的基础上进行的。
以下是做MySQL/MariaDB的集群,使用TCP 3306端口。
master和 slave在服务器池的配置是一样的:
cat >>/etc/keepalived/keepalived.conf<< EOF
virtual_server 192.168.168.180 3306 {
protocol TCP ## 用TCP协议检查realserver的状态
delay_loop 10 ## 每隔10秒检查realserver的状态
lb_algo wlc ## LVS算法
lb_kind DR ## LVS模式
persistence_timeout 60
real_server 192.168.168.135 3306 {
weight 100 ## 权重
TCP_CHECK {
connect_timeout 10 ## 10秒无响应视为超时
connect_port 3306
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.168.154 3306 {
weight 100 ## 权重
TCP_CHECK {
connect_timeout 10 ## 10秒无响应视为超时
connect_port 3306
nb_get_retry 3
delay_before_retry 4
}
}
}
EOF
## 注释:可以使用同一个VIP,但不同端口。
重启Keepalived:
service keepalived restart
创建虚拟服务器:
ipvsadm -A -t 192.168.168.180:3306 -s wlc
添加服务器节点:
ipvsadm -a -t 192.168.168.180:3306 -r 192.168.168.135:3306 -g -w 100
ipvsadm -a -t 192.168.168.180:3306 -r 192.168.168.154:3306 -g -w 100
查看节点状态:( ipvsadm -ln )
保存负载分配策略:
[root@master ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [确定]
确定保存结果:
[root@master ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.168.180:80 -s wlc
-a -t 192.168.168.180:80 -r 192.168.168.135:80 -g -w 100
-a -t 192.168.168.180:80 -r 192.168.168.154:80 -g -w 100
-A -t 192.168.168.180:3306 -s wlc
-a -t 192.168.168.180:3306 -r 192.168.168.135:3306 -g -w 100
-a -t 192.168.168.180:3306 -r 192.168.168.154:3306 -g -w 100
服务器的防火墙都要开启 TCP 3306 端口:
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
web-1:
mysql> grant all on *.* to zhuohua@'%' identified by '888';
Query OK, 0 rows affected (0.00 sec)
mysql> create database db1;
Query OK, 1 row affected (0.05 sec)
注释:服务器的防火墙都要开启 TCP 3306 端口。
web-2:
MariaDB [(none)]> grant all on *.* to zhuohua@'%' identified by '888';
Query OK, 0 rows affected (0.090 sec)
MariaDB [(none)]> create database db2;
Query OK, 1 row affected (0.048 sec)
注释:服务器的防火墙都要开启 TCP 3306 端口。
远程客户端测试:(要访问漂移IP地址)
web-1:
[root@oracle-linux6 ~]# ifdown eth0
web-1:
[root@oracle-linux6 ~]# ifup eth0
web-2:
[root@centos8 ~]# ifdown ens160
相关文章:
Mycat实现MySQL的读写分离 |