前阵子公司一台服务器被回收,上面安装的redis主从+哨兵也无了,需要重新搭一套。中途一些配置没配好导致出现了一些问题,服务无法正常使用redis,现记录一下。
一、主从复制、哨兵模式
这里不做介绍了,很多技术文档有详细说明,文末举例贴两个链接。
二、搭建配置
下载redis-6.0.6.tar.gz,在一台机器上配置三个端口
1、 建立redis目录解压安装包,命名区分主从便于确认
tar –zxvf redis-6.0.6.tar.gz redis-6.0.6
2、 进入解压后路径编译安装,gcc –v 查看版本,redis 6.0及之后需9.0以上gcc编译
make
cd src
make install PREFIX=/usr/local/redis
3、 编译完成后得到可执行文件
cd /usr/local/redis
4、 进行主从节点及哨兵配置
进入对应主从节点路径下,修改redis.conf与sentinel.conf
(1)主节点 redis6379.conf 修改为以下配置
注释 bind 127.0.0.1 #用于监听其他机器访问
protected-mode no #其他机器连接
daemonize yes #后台执行
pidfile /var/run/redis_6379.pid
logfile “redis6379.log”
dbfilename dump6379.rdb
masterauth eastmoney
masteruser default
requirepass eastmoney
appendonly yes #持久化
appendfilename “appendonly6379.aof”
(2)从节点从redis6379.conf复制,端口做对应修改
redis6380.conf
注释 bind 127.0.0.1 #用于监听其他机器访问
port 6380
protected-mode no #其他机器连接
daemonize yes #后台执行
pidfile /var/run/redis_6380.pid
logfile “redis6380.log”
dbfilename dump6380.rdb
masterauth eastmoney
masteruser default
replicaof 10.10.184.138 6379
requirepass eastmoney
appendonly yes #持久化
appendfilename “appendonly6380.aof”
redis6381.conf
注释 bind 127.0.0.1 #用于监听其他机器访问
port 6381
protected-mode no #其他机器连接
daemonize yes #后台执行
pidfile /var/run/redis_6380.pid
logfile “redis6381.log”
dbfilename dump6381.rdb
masterauth eastmoney
masteruser default
replicaof 10.10.184.138 6379
requirepass eastmoney
appendonly yes #持久化
appendfilename “appendonly6381.aof”
(3)配置哨兵
sentinel26379.conf
port 26379
daemonize yes
pidfile “/var/run/redis-sentinel.pid”
logfile “sentinel26379.log”
sentinel monitor mymaster 10.10.184.138 6379 2
sentinel auth-pass mymaster eastmoney
sentinel auth-user mymaster default
sentinel26380.conf
port 26380
daemonize yes
pidfile “/var/run/redis-sentine2.pid”
logfile “sentinel26380.log”
sentinel monitor mymaster 10.10.184.138 6379 2
sentinel auth-pass mymaster eastmoney
sentinel auth-user mymaster default
sentinel26381.conf
port 26381
daemonize yes
pidfile “/var/run/redis-sentine2.pid”
logfile “sentinel26381.log”
sentinel monitor mymaster 10.10.184.138 6379 2
sentinel auth-pass mymaster eastmoney
sentinel auth-user mymaster default
5、 防火墙打开端口6379,6380,6381,26379,26380,26381后重启
firewall-cmd --zone=public --add-port=6379/tcp –permanent
…
firewall-cmd –reload
firewall-cmd --zone=public --list-ports
6、 启动redis
使用前面步骤中可执行文件在对应路径下按照主节点、从节点、哨兵顺序启动
/usr/local/redis/bin/redis-server redis_master/redis-6.0.6/redis6379.conf
/usr/local/redis/bin/redis-server redis_slaver1/redis-6.0.6/redis6380.conf
/usr/local/redis/bin/redis-server redis_slaver2/redis-6.0.6/redis6381.conf
/usr/local/redis/bin/redis-sentinel redis_master /redis-6.0.6/sentinel26379.conf
/usr/local/redis/bin/redis-sentinel redis_slaver1/redis-6.0.6/sentinel26380.conf
/usr/local/redis/bin/redis-sentinel redis_slaver2/redis-6.0.6/sentinel26381.conf
参考
[1] https://www.jianshu.com/p/c401a3f1b26d
[2] https://zhuanlan.zhihu.com/p/484845934