主从结构,读写分离

这里只是演示keepalived安装
proxysql 安装参考:ProxySQL 代理Mysql实现读写分离-CSDN博客
mysql主从安装参考:Docker mysql主从同步_docker mysql8主从同步跟随docker自启动无需配置-CSDN博客
分别在131 、110两台机写好启动的配置挂载文件
javascript
cd /usr/local/
mkdir keepalived
vim keepalived.conf
javascript
-------------- 主节点配置---------------
global_defs {
router_id PROXY_131 # 131是为了标记日志从那台机子产生
}
vrrp_script chk_proxysql {
# 直接用 nc 检查本机 6032 端口 (ProxySQL 管理端口)
script "/bin/bash -c 'nc -z 127.0.0.1 6032'"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER # 记得备机改成 BACKUP
interface ens33 # 记得改成你的网卡名
virtual_router_id 51
priority 150 # 记得备机要比主机小 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 2. 关联上面的脚本
track_script {
chk_proxysql
}
virtual_ipaddress {
192.168.208.200
}
}
javascript
-------------- 备机配置---------------
global_defs {
router_id PROXY_110
}
vrrp_script chk_proxysql {
# 直接用 nc 检查本机 6032 端口 (ProxySQL 管理端口)
script "/bin/bash -c 'nc -z 127.0.0.1 6032'"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 2. 关联上面的脚本
track_script {
chk_proxysql
}
virtual_ipaddress {
192.168.208.200
}
}
分别在131、110上执行
javascript
docker run -d \
--name keepalived \
--restart=always \
--net=host \
--cap-add=NET_ADMIN \
-v /usr/local/keepalived/keepalived.conf:/etc/keepalived/keepalived.conf \
osixia/keepalived:latest
验证:
在131 输入 ip addr 会看到 ens33 下会挂载 一个200结尾的vip,而110是没有的,只有当131上的keepaalived 挂掉才飘逸到110这台机;
Keepalived 的机制是"抢占式"的:
(主机) 优先级高(Priority 150),只要它活着,VIP 就必须在他手上。
(备机) 优先级低(Priority 100),它发现 131 活着,就会乖乖当小弟,绝对不会去抢 VIP。
- 打开 110 的终端,输入这个命令,盯着看:
javascript
watch -n 1 'ip addr show ens33 | grep 200'
- 在 131(主机)上"搞破坏"
javascript
docker stop keepalived
- 回头看 110
你会看到,大概 1-3秒后,110 的屏幕上会突然刷出这一行:
inet 192.168.208.200/32 scope global ens33