概述.
项目中经常使用缓存来提高应用的效率,但是经常都是单机缓存,最近项目POC案例需要,搭建个哨兵集群。
生产环境,为保证业务连续性,一般是不允许单机部署方式,而是采用集群或哨兵模式。网上资源参差不齐,通过官方文档及一些资料参考,
整理出来哨兵模式部署方式步骤,包括redis服务、哨兵服务配置文件参数修改、服务启动、主从关系验证、高可用测试,实验机器部署
ip 为 10.7.29.140 、10.7.29.142、10.7.29.145,
其中 10.7.29.140 为master节点,需提前创建 /home/galaxy/app/redis-5.0.5/data 目录。
一. 准备工作
1.1 检查环境,redis编译需要gcc 环境,
请确保安装gcc 检查 gcc -v
若是没有安装,执行命令安装 yum install gcc
若是没有gcc环境直接后面解压编译,那么最后的src包下就没有 redis-service 和 redis-cli, 只有后缀是 -c的redis-service文件。
redis启动和客户端连接命令自然也就不生效,找不到文件。
1.2 上传 redis-5.0.5.tar.gz,并解压
tar -zxvf redis-5.0.5.tar.gz
进入 redia-5.0.5 make 编译.
二. 参数配置,修改配置文件
2.1 redis.conf (redis服务) Master 节点(10.7.29.140)
#如果连接数不够,修改此参数,默认为 10000
maxclients 10000
port 6379
#后台运行
daemonize yes
pidfile /home/galaxy/app/redis-5.0.5/redis_6379.pid
logfile "/home/galaxy/app/redis-5.0.5/redis6379.log"
dbfilename dump-6379.rdb
dir /home/galaxy/app/redis-5.0.5/data
requirepass 123456 #连接密码
#master节点设置该属性后,所有redis节点均需配masterauth属性
masterauth 123456
bind 0.0.0.0 #本机 ip 地址
protected-mode no
2.2 Slave 节点(slave节点共两台,10.7.29.142、10.7.29.145),2台配置参数选项一样,
bind 本服务器IP
protected-mode no ## 设置为 no
port 6379
daemonize yes ## 设置为 yes
pidfile /home/galaxy/app/redis-5.0.5/redis_6379.pid
logfile "/home/galaxy/app/redis-5.0.5/redis6379.log"
dbfilename dump-6379.rdb
dir /home/galaxy/app/redis-5.0.5/data
#master节点设置该属性后,所有redis节点均需配masterauth属性
masterauth 123456
requirepass 123456
slaveof 10.7.29.140 6379 #slaveof 节点标识,Master的服务IP
2.3 哨兵配置文件,sentinel.conf (哨兵服务 sentinel), 哨兵配置文件三台均一样
protected-mode no
port 26379
daemonize yes
pidfile /home/galaxy/app/redis-5.0.5/redis_26379.pid
logfile "redis26379.log"
dir /home/galaxy/app/redis-5.0.5/data
sentinel monitor mymaster 172.168.1.43 6379 2 #监控地址,哨兵名称
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
三.启动redis服务
3.1 执行启动命令
cd redis-5.0.5/src
./redis-server ../redis.conf >/dev/null 2>&1 &
查看端口或者日志看启动情况。 ps -ef|gerp redis
3.2 验证主从关系
cd redis-5.0.5/src
./redis-cli -h 10.7.29.140 -p 6379 -a 123456 info replication
# -h 指定ip节点,-p 指定端口号,-a 指定认证密码
3.3 启动sentinel服务,执行启动命令
哨兵模式不需要后台运行,默认后台运行
cd redis-5.0.5/src
./redis-sentinel ../sentinel.conf
3.4 验证哨兵节点
cd redis-5.0.5/src
./redis-cli -h 10.7.29.140 -p 26379 info Sentinel
3.5 验证高可用
验证场景
a.将master节点主进程杀掉,查看其它节点中一台是否可以切换到 master
b.重启该节点,查看是否由 master 切换到 slave
杀掉 master 节点 redis 服务,如下
ps -ef|gerp redis
kill -9 PID
ps -ef|gerp redis 再次查询下端口情况
重启该机器redis服务后,查看节点信息,由 master 切换为 slave(10.7.29.142)
./redis-server ../redis.conf >/dev/null 2>&1 & ## 重启140 Master服务。
3.6 客户端连接.测试数据的连通性。
./redis-cli -h 10.7.29.142 -p 6379 -a 123456
测试,主服务set a mynah
从服务器,服务获取就可以看到设置的数据。get mynah