此次搭建redis哨兵集群 一主两从三哨兵 redis 6.0.9版本
先将redis包准备好 在官网下载可以直接下载 地址:https://download.redis.io/releases/
安装包准备好后 使用tar命令解压 并mv到opt目录下重命名为redis
需要注意的是redis6版本以上 gcc版本不能低于5 直接安装会有报错 在网上查到了一个使用scl软件集升级的办法
第一步 yum install centos-release-scl
第二步 yum install devtoolset-7-gcc*
第三步 scl enable devtoolset-7 bash
此时查看gcc版本 gcc -v
gcc版本问题解决 接下来继续安装redis
install完成后 需要编辑一下redis配置文件 修改一些配置
第一个配置bind 我是使用一台主机部署哨兵 我就不做修改了
如果是多台 需要将这个参数修改为主机ip 或者0.0.0.0
第二个配置protected-mode 关闭保护模式
第三个配置daemonize 后台运行
修改完成后 cd到utils目录下 执行脚本
此时会报这个错误
解决方案 vi install_server.sh 注释掉以下几行
重新执行 一路回车 我直接使用默认的端口6379 如要修改可以填写你想要使用的端口
此时ps查看一下 可以看到一个redis服务已经启动
此次我们搭建一主两从三哨兵 所以需要再启动两个redis实例 作为从
此时再次ps查看 可以看到3个redis已经启动 分别占用 我们刚刚指定的端口
接下来将三个redis建立主从关系
有两种方法 一种连接redis服务使用命令指定 另一种修改配置文件 重启redis服务生效
我们使用第二种
在刚刚安装过程中 可以看到每一个redis启动对应生成一个配置文件 我们修改这个配置文件
只需要修改两个用作从的redis的配置文件即可 找到这个参数 指定master地址
修改完成后将两个从redis服务(6380、6381)kill掉 重启服务配置生效
此时 我们通过redis-cli工具进入到redis 通过命令查看一下主从关系 已建立
可以测试一下 我们写一个数据 然后到另外两个redis中查看 是否同步
可以看到 写到master里面的key值已经同步到两个slave中 1主2从搭建完成
接下来我们开始配置哨兵
哨兵可以理解为也是一个redis 但是他的功能不太一样
首先cd到redis的安装目录下 可以看到sentinel.conf 这个文件是redis自带的
我们要启动三个哨兵 所以拷贝三份(只启动一个也可以达到效果)
然后修改sentinel配置文件 拷贝的三份都要修改
第一个配置 哨兵端口 三个分别配置 26379 26380 26381
第二个配置 daemonize 我们只留一个为no 其他两个为yes 用来稍后查看切换的日志信息
第三个配置
mymaster代表监听的这组redis叫mymaster
地址填写要监听redis的master地址是多少
2代表达到两个法定人数认定master故障 才会进行故障切换
第四个配置 这个是配置redis的密码 我们先前没有配置 所以这里也不需要配置
修改完成后 启动哨兵 先启动后面两个 第一个我们配置了前台运行 用来查看哨兵日志
如图
redis哨兵集群以及搭建完成 接下来我们验证一下 master宕掉之后哨兵能否自动故障切换
重新打开一个终端 将master角色的redis宕掉
此时再打开哨兵日志页面 会有一段等待时间 可以看到 哨兵检测到master宕机 进行了选举 6380提升为主 同时 6381 6379也指向了新的主
此时我们再将宕掉的旧主恢复6379 可以看到哨兵日志中 6379恢复 并加入哨兵集群
测试成功 redis哨兵集群以及搭建完成
搭建三个哨兵的原因是如果哨兵也有宕掉 也不会影响 还能正常进行主从切换 除非三个都宕掉