1、上传并编译
上传redis-3.2.13.tar.gz
tar -zxvf redis-3.2.13.tar.gz
cd redis-3.2.13
make
注意:
可能需要安装gcc 执行yum install gcc-c++)
如果出现zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory这样的错误,则需要 make MALLOC=libc
创建日志目录
mkdir -p /home/jyapp/redis-3.2.13/logs
2、部署建议
建议至少使用3台虚机(1主1从3哨兵)
1、主redis,1个哨兵
2、从redis,1个哨兵
3、1个哨兵
这种情况,当其中一台虚机完全宕机重启的情况下,也能够完成主从切换,使得redis可用
3、修改redis.conf、sentinel.conf 配置文件
主机 redis.conf 配置
daemonize 改为 yes //允许后台运行
protected-mode no //允许从其他主机连接redis端口
port 8379 如果在原有主机上升级部署需要改端口
pidfile 默认不用改
logfile 指定到 redis目录下的 "/home/jyapp/redis-3.2.13/logs/redis.log"
maxclients 4096 增加最大连接的客户端数量配置
tcp-keepalive 修改为 60
requirepass master123 //redis密码
masterauth master123 //主redis密码 主从都需要配置,用于主从同步KEY值
# bind 127.0.0.1 //将bind注释,使redis端口可以绑定到任意IP
从机 redis.conf 配置
daemonize 改为 yes //允许后台运行
protected-mode no//允许从其他主机连接redis端口
port 8379 如果在原有主机上升级部署需要改端口
pidfile 默认不用改
logfile 指定到 redis目录下的 "/home/jyapp/redis-3.2.13/logs/redis.log"
maxclients 4096 增加最大连接的客户端数量配置
tcp-keepalive 修改为 60
masterauth master123 //主redis密码 主从都需要配置,用于主从同步KEY值
requirepass master123 //redis密码
slaveof IP 端口 //注意:IP 为redis主机的服务器IP
# bind 127.0.0.1 //将bind注释,使redis端口可以绑定到任意IP
配置监听服务 sentinel.conf
主机,从机 保持一致即可
可以清空原配置文件,然后直接复制下面信息
主从机 都要配置上主机的IP和端口(如 主机IP 6379为主机的ip和端口):
port 28379
daemonize yes
protected-mode no (3.2版本之后需要添加)
logfile "/home/jyapp/redis-3.2.13/logs/sentinel.log"
dir /home/jyapp/redis-3.2.13/
sentinel monitor mymaster 主机IP 8379 2
sentinel down-after-milliseconds mymaster 8000
sentinel failover-timeout mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel deny-scripts-reconfig yes
sentinel auth-pass mymaster master123 //密码
3、启动
先启动主机的服务,再启动从机的服务
src/redis-server redis.conf
再启动监听服务
src/redis-sentinel sentinel.conf
可以用下列命令 来查看服务
src/redis-cli -p 8379 -a 密码 info
src/redis-cli -p 28379 -a 密码 info
4、验证
在主redis中验证主从同步:
src/redis-cli -p8379 -a 密码
登陆后执行
set test1 12345
使用keys * 查看是否有健值
如有健值,再到从redis上执行keys *查看健值是否己经同步
验证主从切换
将主进程的redis及哨兵进程杀掉,在从redis中执行
src/redis-cli -p 8379 -a 密码 info
验证role是否己经变为master
注意事项:
我遇到的问题,暂没有复现,三哨兵模式时,当哨兵模式启动后,三个哨兵会同步哨兵信息,即会将三个哨兵信息的相关信息同步到哨兵配制文件中sentinel.conf,如果更改新加后哨兵的配置文件,即更换“sentinel monitor mymaster 主机IP 6379 2”中的主机IP后,会出现新加入主机变为从,而原有主机为主的情况。
举例如下:
如 我原有一主一从三哨兵为
131 132 为主从 27为哨兵
当27 的哨兵配置文件修改IP后,准备为将其加入167 168这俩台主从redis中做为哨兵,即sentinel monitor mymaster IP168 6379 2
将27哨兵修改配置文件重启后,出现原132还是主,但原167的主会切换为从的情况,大家在配置时稍为注意一下,不要轻易修改生产哨兵配置,另外切换为从的文件会强制同步redis.conf从的配置文件。