声明: 此文中所用配置方式和脚本逻辑并非原创, 脚本和配置都经过本人测试和优化
基础信息
软件版本:
CentOS7.2.1511 Keepalived v1.3.4 Redis3.2.4
IP 信息:
- master: 192.168.56.11
- slave: 192.168.56.12
- vip: 192.168.56.100
Redis 配置:
安装目录:/usr/local/redis
数据目录:/data4/redisdata
配置文件:/usr/local/redis/redis.conf
Keepalived 配置:
安装目录:/usr/local/keepalived
配置文件:/etc/keepalived/keepalived.conf
脚本软件包: http://down.51cto.com/data/2444547
master 脚本压缩包放在 master 主机, slave 脚本压缩包放在 slave 主机
初始环境配置 (master 和 slave 上都进行操作)
关闭防火墙, SeLinux, 配置 yum 源
安装必要的软件:
yum -y install gcc gcc+ openssl openssl-devel tcl wget -y
安装 redis
- cd /home
- wget http://download.redis.io/releases/redis-3.2.4.tar.gz
- tar -xf ./redis-3.2.4.tar.gz
- mv redis-3.2.4 /usr/local/
- cd /usr/local/redis-3.2.4/deps/
- make hiredis lua jemalloc linenoise
- cd ..
- make test
- make
- make install
- mkdir -p /usr/local/redis/bin
- mkdir -p /data4/redisdata
- cd /usr/local/redis-3.2.4/src
- cp redis-benchmark redis-check-aof redis-cli redis-server mkreleasehdr.sh /usr/local/redis/bin/
- cd /usr/local/redis-3.2.4
- cp redis.conf /usr/local/redis/
- cp /usr/local/bin/redis-cli /usr/bin/
安装 keepalived
- cd /home
- wget http://www.keepalived.org/software/keepalived-1.3.4.tar.gz
- tar xf keepalived-1.3.4.tar.gz
- cd keepalived-1.3.4
- ./configure
- make
- make install
Redis 主从配置
在 master 上修改配置文件
/usr/local/redis/redis.conf
参数
- bind 0.0.0.0
- daemonize yes
- dir /data4/redisdata
slave 上修改相同的信息, 并添加 slaveof 的配置:
- bind 0.0.0.0
- daemonize yes
- dir /data4/redisdata
- slaveof 192.168.56.11 6379
master 和 slave 上为 redis 配置单独用户并启动服务
- useradd redisuser
- passwd redisuser
- chown -R redisuser:redisuser /usr/local/redis/redis.conf
- chown -R redisuser:redisuser /usr/local/redis/bin/redis-server
- chown redisuser /data4/redisdata
- su - redisuser
- cd /usr/local/redis
- ./bin/redis-server ./redis.conf
Redis 口令信息:
- username: redisuser
- password: redi13%&
Keepalived 主备配置
在 master 节点修改
/etc/keepalived/keepalived.conf
为如下配置:
- global_defs {
- lvs_id LVS_redis
- }
- vrrp_script chk_redis {
- script "/etc/keepalived/scripts/redis_check.sh"
- weight -20
- interval 2
- }
- vrrp_instance VI_1 {
- state backup
- interface eth0
- virtual_router_id 51
- nopreempt
- priority 200
- advert_int 5
- track_script {
- chk_redis
- }
- virtual_ipaddress {
- 192.168.56.100
- }
- notify_master /etc/keepalived/scripts/redis_master.sh
- notify_backup /etc/keepalived/scripts/redis_backup.sh
- notify_fault /etc/keepalived/scripts/redis_fault.sh
- notify_stop /etc/keepalived/scripts/redis_stop.sh
- }
Keepalived 的 Backup 节点修改
/etc/keepalived/keepalived.conf
配置文件内容为如下配置:
- global_defs {
- lvs_id LVS_redis
- }
- vrrp_script chk_redis {
- script "/etc/keepalived/scripts/redis_check.sh"
- weight -20
- interval 2
- }
- vrrp_instance VI_1 {
- state backup
- interface eth0
- virtual_router_id 51
- priority 190
- advert_int 5
- track_script {
- chk_redis
- }
- virtual_ipaddress {
- 192.168.56.100
- }
- notify_master /etc/keepalived/scripts/redis_master.sh
- notify_backup /etc/keepalived/scripts/redis_backup.sh
- notify_fault /etc/keepalived/scripts/redis_fault.sh
- notify_stop /etc/keepalived/scripts/redis_stop.sh
- }
添加主备 keepalived 状态脚本文件
上传脚本压缩包到 / etc/keepalived / 目录下, 解压到 scripts 目录, 并添加脚本执行权限
创建日志记录目录:
mkdir /var/log/keepalived/
启动 keepalived
先启动主节点 keepalved, 再启动 slave 节点
systemctl start keepalived
查看 keepalived 和 redis 工作状态
主节点上查看有 vip, 从节点上无 vip
ip a|grep gl
主 redis 为 master 状态, 从节点为 slave 状态
redis-cli info replication
测试 redis+keepalived 主从是否正常
分别依次关闭 master 上的 redis 和 keepalived, 查看主从状态和 vip 飘移情况
查看 master 和 slave 上的各项日志情况:
- tail -f /var/log/keepalived/redis-state.log
- tail -f /var/log/messages
故障处理
当 redis-master 出现问题停机或者应用终止后, 需要对进行故障排查, 正确的恢复启动顺序如下:
使用 redisuser 启动 masrer, 并与当前的 slave(此时已经切换为 master) 进行数据同步:
- su - redisuser
- cd /usr/local/redis
- ./bin/redis-server ./redis.conf #启动 redis
- netstat -lntp
- sh /etc/keepalived/scripts/redis_backup.sh # 使用脚本同步 redis
- redis-cli info replication #查看同步状态
同步完成之后切换为 root, 启动 keepalived, 此时由于是不抢占模式, VIP 仍然在 slave 上
- [root@ost-redis1 ~]# systemctl start keepalived
- [root@ost-redis1 ~]# redis-cli INFO replication
重启备用节点的 keepalived, 脚本自动完成主备切换
- [root@ost-redis2 ~]# systemctl restart keepalived
- [root@ost-redis2 ~]# redis-cli INFO replication
来源: http://www.bubuko.com/infodetail-2544411.html