如何使用三台redis做主从+哨兵功能
小编给大家分享一下如何使用三台redis做主从+哨兵功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
一、背景说明
这里采用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.72、make3、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-servernetstat -natp | grep 6379
开、关redis与sentinal命令
1、redis-server /etc/redis/6379.conf2、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 6379masterauth linlin #如果做故障切换,不论主从节点都要填写密码且要保持一致requirepass linlin
2,添加slave1(6380.conf)配置文件必要参数
port 6380slaveof 10.211.55.7 6379 # ip为主redis的ipmasterauth linlin #如果做故障切换,不论主从节点都要填写密码且要保持一致requirepass linlin
2,添加slave2(6381.conf)配置文件必要参数
port 6381slaveof 10.211.55.7 6381 # ip为主redis的ipmasterauth linlin #如果做故障切换,不论主从节点都要填写密码且要保持一致requirepass linlin
验证主从数据是否一致
redis-cli -h 10.211.55.7 -p 6381auth linlininfo
三、安装redis哨兵
cp sentinel.conf /usr/local/redis/conf/sentinel-26379.conf #复制源码中的哨兵配置文件,复制出三个文件:
修改文件(vim /usr/local/redis/conf/sentinel-26379.conf):
port 26379sentinel monitor mymaster 10.211.55.7 6379 2sentinel auth-pass mymaster linlin
vim /usr/local/redis/conf/sentinel-26380.conf
port 26380sentinel monitor mymaster 10.211.55.7 6379 2sentinel auth-pass mymaster linlin
vim /usr/local/redis/conf/sentinel-26381.conf
port 26381sentinel monitor mymaster 10.211.55.7 6379 2sentinel 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 注释掉
看完了这篇文章,相信你对"如何使用三台redis做主从+哨兵功能"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!