Redis+哨兵安装部署
步骤
安装redis
源码包安装
配置并启动redis
测试过程
1.安装redis
源码包安装
用4台机器构成一个可用的redis集群,分别安装redis,使用默认端口6379
下载好安装包redis-4.0.1.tar.gz
Root用户下安装,创建/datas目录
#tar xzf redis-4.0.1.tar.gz -C /datas/
#mv redis-4.0.1 redis
#cd /datas /redis
#make
配置并启动redis
修改redis配置文件
vim /datas/redis/redis.conf
主redis配置
daemonize yes
bind 192.168.1.10
port 6379
masterauth 1qaz #当设置了密码保护时,从连接主的密码
requirepass 1qaz #redis客户端登录密码,
从redis1配置
daemonize yes
bind 192.168.1.11
port 6379
slaveof 192.168.31.10 6379 #此项可在redis客户端手动配置
从redis2配置
daemonize yes
bind 192.168.1.12
port 6379
slaveof 192.168.1.10 6379
从redis3配置
daemonize yes
bind 192.168.1.13
port 6379
slaveof 192.168.1.10 6379
配置哨兵sentinel.conf,每台机器都要配置
vim /datas/redis/sentinel.conf
port 26379
sentinel monitor mymaster 192.168.1.13 6379 2 #2表示至少两台哨兵投票
sentinel client-reconfig-script mymaster /var/lib/redis/failover.sh
sentinel auth-pass mymaster 1qaz #设置连接master和slave的密码,要和redis相同
其中/var/lib/redis/failover.sh是redis宕掉时执行的脚本
脚本路径:/var/lib/redis/failover.sh
如下所示sentinel中的参数会传递给脚本
failover.sh脚本
#!/bin/bash
MASTER_IP=$6 #第六个参数是新主redis的ip地址
LOCAL_IP=‘192.168.1.13’ #这里记得要改,每台服务器写自己的本地ip即可
VIP=‘192.168.1.5’ #绑定vip
NETMASK=‘32’ #掩码
INTERFACE=‘eth0’ #网卡接口设备名称
if [ ${MASTER_IP} = ${LOCAL_IP} ];then
/sbin/ip addr add
V
I
P
/
{VIP}/
VIP/{NETMASK} dev ${INTERFACE} #将VIP绑定到该服务器上
/sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE} #arp抑制
exit 0
else
/sbin/ip addr del
V
I
P
/
{VIP}/
VIP/{NETMASK} dev ${INTERFACE} #将VIP从该服务器上删除
exit 0
fi
exit 1
给执行权限
chmod chmod 755 /var/lib/redis/failover.sh
启动redis
#redis-server /datas/redis/redis.conf
启动sentinel
#redis-sentinel /datas/redis/sentinel.conf
配置完毕
测试过程
进入主redis客户端,查看到已经配置好主从关系了
数据同步测试:
在主服务器set一条数据能在从服务器get到
第一次需要手动绑定vip到主redis上
ip addr add 192.168.1.5/32 dev eth0
查看主redis地址ip
故障测试
杀掉主redis进程
查看sentinel投票过程,看是否把192.168.1.11选为主redis
再查看故障后的redis主从关系,
然后再看vip已经成功绑定到192.168.1.11
然后再进行set数据测试
在现在的主redis上设置一条数据set a 1000
故障恢复
把宕掉的redis重新启动,发现已经成为从redis了
而且get a 输出1000
测试完成