硬件:至少两台linux
步骤:
1、安装redis(主从)
略
2、安装keeplived(主从)
yum install -y keepalived //yum安装软件 systemctl start keepalived //启动 keepalived systemctl enable keepalived //加入开机启动 keepalived systemctl restart keepalived //重新启动 keepalived systemctl status keepalived //查看 keepalived 状态
3、配置redis
略
4、配置keeplived
keeplived.conf(主从机器的配置需要调换ip地址即可)
#全局配置 global_defs { #负载均衡标识,局域网内唯一 router_id redis_SLB #运行脚本的用户 script_user redis enable_script_security } #周期性执行的脚本,脚本的退出状态码会被调用它的所有的VRRP Instance记录 vrrp_script chk_redis { #要执行的脚本的路径 script "/home/script/redis_check.sh passwd 111.111.111.111 6392" #脚本执行的间隔,单位是秒 interval 5 #在多少秒后,脚本被认为执行失败 timeout 3 #执行失败多少次才认为失败 fall 3 #1. 如果脚本执行成功(退出状态码为0),weight大于0,则priority增加。 #2. 如果脚本执行失败(退出状态码为非0),weight小于0,则priority减少。 #3. 其他情况下,priority不变 weight -20 } #同步服务绑定的VRRP实例 vrrp_instance redis { #指定该keepalived节点的初始状态 state BACKUP #vrrp实例绑定的接口 interface eth0 #指定VRRP实例ID virtual_router_id 100 #指定优先级,优先级高的将成为MASTER priority 90 #Nopreempt # no seize,must add advert_int 1 authentication { #all node must same #指定认证方式。PASS简单密码认证 auth_type PASS auth_pass passwd } #指定源IP地址 unicast_src_ip 111.111.111.111 #邻居IP unicast_peer { 111.111.111.112 } #虚拟ip virtual_ipaddress { 111.111.111.113 } #循环执行脚本 track_script { chk_redis } #当切换到master时执行 notify_master "/home/script/redis_master.sh 111.111.111.111 111.111.111.112 6392 passwd" #当切换到back时执行 notify_backup "/home/script/redis_backup.sh 111.111.111.111 111.111.111.112 6392 passwd" #发生故障时执行 notify_fault /home/script/redis_fault.sh #服务终止时执行 notify_stop /home/script/redis_stop.sh }
5、制作脚本
redis_backup.sh
#!/bin/sh REDISCLI="/soft/redis/bin/redis-cli -a $4 -h $1 -p $3" LOGFILE="/log/keepalived/keepalived-redis-state.log" echo "[backup]" >> $LOGFILE date >> $LOGFILE echo "Run SLAVEOF cmd ..." >> $LOGFILE $REDISCLI SLAVEOF $2 $3 >> $LOGFILE 2>&1 # echo "Being slave...." >> $LOGFILE 2>&1 sleep 15 #delay 15 s wait data SYNc exchange role
redis_check.sh
#!/bin/sh ALIVE=`/soft/redis/bin/redis-cli -a $1 -h $2 -p $3 PING` LOGFILE="/log/keepalived/keepalived-redis-check.log" echo "[CHECK]" >> $LOGFILE date >> $LOGFILE if [[ $ALIVE == "PONG" ]]; then : echo "SUCCESS:reidis-cli -h $2 -p $3 PING $ALIVE" >> $LOGFILE 2>&1 exit 0 else echo "FAILED:redis-cli -h $2 -p $3 PING $ALIVE" >> $LOGFILE 2>&1 exit 1 fi
redis_fault.sh
#!/bin/sh LOGFILE=/log/keepalived/keepalived-redis-state.log echo "[fault]" >> $LOGFILE date >> $LOGFILE
redis_master.sh
#!/bin/sh REDISCLI="/soft/redis/bin/redis-cli -a $4 -h $1 -p $3" LOGFILE="/log/keepalived/keepalived-redis-state.log" echo "[master]" >> $LOGFILE date >> $LOGFILE echo "Being master...." >> $LOGFILE 2>&1 echo "Run MASTER cmd ..." >> $LOGFILE 2>&1 $REDISCLI SLAVEOF $2 $3 >> $LOGFILE sleep 10 #delay 10 s wait data async cancel sync echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE $REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1
redis_stop.sh
#!/bin/sh LOGFILE=/log/keepalived/keepalived-redis-state.log echo "[stop]" >> $LOGFILE date >> $LOGFILE
脚本赋权:
chmod 755 ./*.sh
6、启动redis和keeplived服务,通过虚拟ip调用redis:
111.111.111.113
#转载请注明出处!

- 上一篇: redis启动和停止脚本及开机自启动方法
- 下一篇: zookeeper安全加固之白名单
评论
Adoncn
回复果断MARK!!!!!