Keepalived 笔记
文章目录
两个 haproxy 不抢占
- 环境
- haproxy 服务器
- haproxy101: 10.1.1.101
- haproxy102: 10.1.1.102
- 虚拟地址
- ip: 10.1.1.100
- haproxy 服务器
- 在全部 haproxy 服务器上安装 keepalived
1
yum install keepalived
- 在全部 haproxy 服务器上配置 haproxy 和 keepalived 自启动
1 2
systemctl enable haproxy systemctl enable keepalived
- MASTER/BACKUP 完整配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
global_defs { router_id haproxy101 #BACKUP 这里是 haproxy102 script_user root enable_script_security } vrrp_script chk_haproxy { script "/usr/bin/systemctl status haproxy" interval 2 weight 0 fall 2 rise 2 } vrrp_instance VI_1 { state BACKUP #MASTER 和 BACKUP 这里都是 BACKUP virtual_router_id 1 priority 150 #BACKUP 这里是 100 advert_int 2 nopreempt #BACKUP 优先级低,需注释此行 interface eth0 track_script { chk_haproxy } authentication { auth_type PASS auth_pass 1011100 } virtual_ipaddress { 10.1.1.100/24 dev eth0 } }
两个 LVS-DR 调度器不抢占均衡后端 MySQL 和 Ceph 负载
- 环境
- keepalived 服务器
- ka101: 10.1.1.101
- ka102: 10.1.1.102
- 虚拟地址
- ip: 10.1.1.100
- mysqld 服务器
- mysql103: 10.1.1.103
- mysql104: 10.1.1.104
- mysql105: 10.1.1.105
- ceph-radosgw 服务器
- ceph106: 10.1.1.106
- ceph107: 10.1.1.107
- ceph108: 10.1.1.108
- keepalived 服务器
- 在全部 keepalived 服务器上安装 keepalived
1
yum install keepalived
- 在全部 keepalived 服务器上配置 keepalived 自启动
1
systemctl enable keepalived
- MASTER/BACKUP 完整配置
- 全局和实例配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
global_defs { router_id keepalive101 #BACKUP 配置 keepalive102 } vrrp_instance V1_1 { state BACKUP #BACKUP 也配置 BACKUP interface eth0 virtual_router_id 1 priority 150 #BACKUP 配置 100 advert_int 1 nopreempt #BACKUP 优先级低,需注释此行 authentication { auth_type PASS auth_pass 1011100 } virtual_ipaddress { 10.1.1.100/24 dev eth0 } }
- LVS 均衡 mysql galera cluser 负载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
virtual_server 10.1.1.100 3306 { delay_loop 16 lb_algo sh lb_kind DR protocol TCP real_server 10.1.1.103 3306 { weight 1 TCP_CHECK { connect_timeout 4 delay_before_retry 2 connect_port 3306 } } real_server 10.1.1.104 3306 { weight 1 TCP_CHECK { connect_timeout 4 delay_before_retry 2 connect_port 3306 } } real_server 10.1.1.105 3306 { weight 1 TCP_CHECK { connect_timeout 4 delay_before_retry 2 connect_port 3306 } } }
- LVS 均衡 ceph radosgw 负载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
virtual_server 10.1.1.100 7480 { delay_loop 16 lb_algo sh lb_kind DR protocol TCP real_server 10.1.1.106 7480 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 8 nb_get_retry 2 delay_before_retry 2 connect_port 7480 } } real_server 10.1.1.107 7480 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 8 nb_get_retry 2 delay_before_retry 2 connect_port 7480 } } real_server 10.1.1.108 7480 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 8 nb_get_retry 2 delay_before_retry 2 connect_port 7480 } } }
- 全局和实例配置
- 在全部 mysql 和 ceph-radosgw 服务器上配置虚拟 ip
1 2 3 4 5 6
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce ip addr add 10.1.1.100/32 brd 10.1.1.100 dev lo ip route add 10.1.1.100 dev lo
不抢占自动切换两台 Redis 主从状态
- 环境
- Redis 服务器
- redis101: 10.1.1.101
- redis102: 10.1.1.102
- 虚拟地址
- ip: 10.1.1.100
- Redis 服务器
- 在全部 redis 服务器上安装 keepalived
1
yum install keepalived
- 在全部 redis 服务器上配置 redis 和 keepalived 自启动
1 2
systemctl enable redis systemctl enable keepalived
- MASTER/BACKUP 完整配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
global_defs { router_id redis101 #BACKUP 这里是 redis102 script_user root enable_script_security } vrrp_script chk_redis { script "/usr/bin/systemctl status redis" interval 2 weight 0 fall 2 rise 2 } vrrp_instance VI_1 { state BACKUP #MASTER 和 BACKUP 这里都是 BACKUP virtual_router_id 51 priority 150 #BACKUP 这里是 100 advert_int 1 nopreempt #BACKUP 优先级低,需注释此行 interface eth0 notify_master /etc/keepalived/scripts/master.sh notify_backup /etc/keepalived/scripts/backup.sh track_script { chk_redis } authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 10.1.1.100/24 dev eth0 } }
- 在全部 redis 服务器上创建 /etc/keepalived/scripts/master.sh 脚本,内容如下
1 2 3 4
#!/bin/bash # /usr/bin/sed -i '/^slaveof/d' /etc/redis.conf /usr/bin/systemctl restart redis
- 在 redis101 上创建 /etc/keepalived/scripts/backup.sh 脚本,内容如下
1 2 3 4 5
#!/bin/bash # /usr/bin/sed -i '/^slaveof/d' /etc/redis.conf echo 'slaveof 10.1.1.102 6379' >> /etc/redis.conf /usr/bin/systemctl restart redis
- 在 redis102 上创建 /etc/keepalived/scripts/backup.sh 脚本,内容如下
1 2 3 4 5
#!/bin/bash # /usr/bin/sed -i '/^slaveof/d' /etc/redis.conf echo 'slaveof 10.1.1.101 6379' >> /etc/redis.conf /usr/bin/systemctl restart redis
- 在全部 redis 服务器上赋予脚本可执行权限
1
chmod 0755 /etc/keepalived/scripts/*.sh
- 修改 redis 配置
1 2 3 4
requirepass redis_password maxclients 1000 maxmemory 4294967296 maxmemory-policy volatile-lru
- 在全部 redis 服务器上启动 redis 和 keepalived 服务
1 2
systemctl start redis systemctl start keepalived
文章作者 Colben
上次更新 2019-10-30