一、背景说明

这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群。

redis-sentinel四大功能:

通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。
监控:哨兵不断的检查master和slave是否正常的运行。
自动故障转移:如果一个master不正常运行了,哨兵可以启动一个故障转移进程,将一个slave升级成为master,其他的slave被重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。
配置提供者:哨兵作为Redis客户端发现的权威来源:客户端连接到哨兵请求当前可靠的master的地址。如果发生故障,哨兵将报告新地址

二、安装redis主从

1、安装redis环境
最新安装包:redis-5.0.7.tar.gz
系统:Linux
2、操作步骤

第一步:通过远程挂载的办法将 windows上的安装包下载到 Linux本地。
第二步:安装编译工具

1、yum install gcc gcc-c++ make -y

第三步:解压

1、tar zxvf redis-5.0.7.tar.gz -C /opt/

第四步:安装

1、cd redis-5.0.7
2、make
3、make PREFIX=/usr/local/redis install

第五步:创建软连接

ln -s /usr/local/redis/bin/* /usr/local/bin/

第六步:启动安装脚本,查看端口状态

cd  /redis-5.0.7/utils/
./install_server.sh        ###启动脚本,注意:这步一路回车到底就行了
将最后一个文件路径改为: /usr/local/redis/bin/redis-server

netstat -natp | grep 6379

开、关redis与sentinal命令

1、redis-server   /etc/redis/6379.conf
2、redis-sentinel   /etc/redis/sentinel-6381.conf

除此之外,还可以用 redis_6379 控制其开启关闭:

1、/etc/init.d/redis_6379 stop       //关闭
3、/etc/init.d/redis_6379 restart    //重启

三台redis配置:
1,添加master(6379.conf)配置文件必要参数

port   6379
masterauth linlin     
#如果做故障切换,不论主从节点都要填写密码且要保持一致
requirepass linlin

2,添加slave1(6380.conf)配置文件必要参数

port   6380
slaveof  10.211.55.7  6379       
# ip为主redis的ip
masterauth linlin     
#如果做故障切换,不论主从节点都要填写密码且要保持一致
requirepass linlin

2,添加slave2(6381.conf)配置文件必要参数

port   6381
slaveof  10.211.55.7  6381       
# ip为主redis的ip
masterauth linlin     
#如果做故障切换,不论主从节点都要填写密码且要保持一致
requirepass linlin

验证主从数据是否一致

redis-cli  -h   10.211.55.7  -p  6381
auth  linlin
info

三、安装redis哨兵

cp   sentinel.conf   /usr/local/redis/conf/sentinel-26379.conf  
#复制源码中的哨兵配置文件,复制出三个文件:

修改文件(vim /usr/local/redis/conf/sentinel-26379.conf):

port  26379
sentinel monitor mymaster  10.211.55.7  6379  2
sentinel auth-pass mymaster linlin

vim /usr/local/redis/conf/sentinel-26380.conf

port  26380
sentinel monitor mymaster  10.211.55.7  6379  2
sentinel auth-pass mymaster linlin

vim /usr/local/redis/conf/sentinel-26381.conf

port  26381
sentinel monitor mymaster  10.211.55.7  6379  2
sentinel auth-pass mymaster linlin

启动三个sentinal服务命令:

redis-sentinel   /etc/redis/sentinel-6379.conf

验证主redis故障,slave是否能切换顶替master。。。

四、部署过程所遇BUG

一、主从无法切换

 确保sentinel.conf配置文件不是完全拷贝的,这个文件会在运行之后自动添加一些数据,导致拷贝之后没有删除无法自动切换主从

二、确保 redis.conf中两个属性 requirepass masterauth 这两个密码配置都有 ,sentinel.conf中 sentinel auth-pass mymaster (password) 存在。
三、每个redis.conf配置文件中 slaveof ip port 确保从redis配置中都有该项配置,确保sentinel.conf中
sentinel monitor mymaster masterip + port + num(该项为数字 一般设为 1 或者2 ) 确保该项在三台服务器上都一致
四、通过redis-cli 客户端连接上redis 进行auth认证 输入命令 info查看master以及slave情况
五、远程客户端无法连接redis

redis版本在3.2.x之后出现这个问题的 一定是没有把这个配置好    protected-mode no    ; bind 注释掉