关于keepalived的详细介绍,请移步本人相关博客:
功能 | ip地址 | 安装软件 |
主redis | 10.13.6.13 | redis,keepalived |
从redis | 10.13.6.16 | redis,keepalived |
VIP | 10.13.6.17 |
1.redis安装
本文通过yum源的安装方式来安装(需要配置epel源),也可以通过源码编译的方式来安装
[root@P2Pp_Red01 ~]# yum install -y redis[root@P2Pp_Red02 ~]# yum install -y redis
2.修改配置文件
①、主redis需要修改的文件及内容
[root@P2Pp_Red01 ~]# vi /etc/redis.confbind 0.0.0.0其余都可以安装默认状态
②、从redis需要修改的文件及内容
[root@P2Pp_Red02 ~]# vi /etc/redis.confbind 0.0.0.0slaveof 10.13.6.13 6379 //指定主redis的地址与端口
3.查看主从状态
[root@P2Pp_Red01 ~]# redis-cli INFO |grep role -A 3role:masterslave0:10.13.6.16,45270,onlinedb0:keys=6,expires=0[root@P2Pp_Red02 ~]# redis-cli INFO |grep role -A 3role:slavemaster_host:10.13.6.13master_port:6379master_link_status:up
二、使用keepalived对redis做高可用
1.安装keepalived,两台机器都需要安装
[root@P2Pp_Red01 ~]# yum install -y keepalived[root@P2Pp_Red02 ~]# yum install -y keepalived
2.准备配置文件
①、主redis的配置文件,关于各行代表的意思,请移步我的另外一篇文档,链接见文章开头
[root@P2Pp_Red01 scripts]# vi /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 10.13.4.17 smtp_connect_timeout 30 router_id LVS_DEVEL}vrrp_script chk_redis { script "killall -0 redis-server" interval 2}vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 100 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.13.6.17 }track_script { chk_redis} 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}~[root@P2Pp_Red01 ~]# vi /etc/keepalived/scripts/redis_master.sh #!/bin/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[master]" >> $LOGFILEdate >> $LOGFILEecho "Being master...." >> $LOGFILE 2>&1echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 10.13.4.13 6379 >> $LOGFILE 2>&1sleep 10#延迟10秒以后待数据同步完成后再取消同步状态echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1~[root@P2Pp_Red01 ~]# vi /etc/keepalived/scripts/redis_backup.sh #!/bin/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[backup]" >> $LOGFILEdate >> $LOGFILEecho "Being slave...." >> $LOGFILE 2>&1sleep 15#延迟15秒待数据被对方同步完成之后再切换主从角色echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 10.13.4.13 6379 >> $LOGFILE 2>&1[root@P2Pp_Red01 scripts]# vi /etc/keepalived/scripts/redis_stop.sh #!/bin/bashLOGFILE=/var/log/keepalived-redis-state.logecho "[stop]" >> $LOGFILEdate >> $LOGFILE[root@P2Pp_Red01 scripts]# vi /etc/keepalived/scripts/redis_fault.sh #!/bin/bashGFILE=/var/log/keepalived-redis-state.logecho "[fault]" >> $LOGFILEdate >> $LOGFILE~
②、准备从redis的配置文件
[root@P2Pp_Red02 ~]# vi /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 10.13.4.13 smtp_connect_timeout 30 router_id LVS_DEVEL}vrrp_script chk_redis { script "killall -0 redis-server" interval 1}vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 100 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.13.6.17 }#track_script {# chk_redis#}# 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[root@P2Pp_Red02 ~]# vi /etc/keepalived/scripts/redis_master.sh #!/bin/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[master]" >> $LOGFILEdate >> $LOGFILEecho "Being master...." >> $LOGFILE 2>&1echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 10.13.6.13 6379 >> $LOGFILE 2>&1sleep 10#延迟10秒以后待数据同步完成后再取消同步状态echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE$REDISCLI SLAVEOF NO ONE >> $LOGFILE 2>&1~[root@P2Pp_Red02 ~]# vi /etc/keepalived/scripts/redis_backup.sh #!/bin/bashREDISCLI="/usr/bin/redis-cli"LOGFILE="/var/log/keepalived-redis-state.log"echo "[backup]" >> $LOGFILEdate >> $LOGFILEecho "Being slave....sleep 15#延迟15秒待数据被对方同步完成之后再切换主从角色echo "Run SLAVEOF cmd ..." >> $LOGFILE$REDISCLI SLAVEOF 10.13.6.13 6379 >> $LOGFILE 2>&1其余的两个文件跟主redis是一样的
本处将不再给模拟故障,但是测试时通过的,现在已经在生产环境中使用