1. 引子
这是项目当中的一部分,为了服务性能方面的考虑,用了redis做缓存的策略。又为了保证高可用性,所以在Redis主从的基础上,增加了redis sentinel做集群监控,在failover时,可以进行主从切换。
staging环境共有两台虚拟机,分配如下:
- 172.16.1.19:6379 (redis主)
- 172.16.1.20:6379 (redis从)
- 172.16.1.20:26379 (redis sentinel 集群监控)
2. Redis 主从配置
首先更改 主Redis的配置文件 redis.conf :
bind {ip} ##绑定主机ip
protected-mode no ##为之后sentinel监控做准备
port 6379 ##端口
daemonize yes ##启动redis,会将它运行在后台
requirepass {your password} ##访问数据库的密码
appendonly yes ##开启aof持久化方式
appendfilename {dir/xxx.aof} ##aof文件保存路径
appendfsync everysec ##同步策略:每秒同步
然后更改 从Redis的配置文件 redis.conf :
bind {ip} ##绑定主机ip
protected-mode no ##为之后sentinel监控做准备
port 6379 ##端口
daemonize yes ##启动redis,会将它运行在后台
masterauth {master password} ##master的访问密码
slave-read-only yes ##slave允许只读
slaveof {master ip} {master port} ##设置master的ip信息
appendonly yes ##开启aof持久化方式
appendfilename {dir/xxx.aof} ##aof文件保存路径
appendfsync everysec ##同步策略:每秒同步
启动Redis Master和Slave :
//先master后slave
./src/redis-server redis.conf
这里,我用aof持久化方式,因为考虑到服务器故障时丢失数据的问题。aof在这方面做的更好。 想要详细了解aof和rdb两种redis持久化方式的可以看 redis持久化RDB和AOF。
验证:
./src/redis-cli -h {master ip} -p {master port} info Replication
你会看到它的主从信息:
3. Sentinel监控配置
port 26379 ##端口
daemonize yes
logfile {dir/xxx.log} ##设置sentinel日志文件的保存路径
## master
sentinel monitor master {master ip} {master port} 1 ##设置监控master的ip信息,同时设置sentinel的决策数量,当master挂掉后,满足n个sentinel发现此问题时,就会开始主从切换.这里设置为1
sentinel auth-pass master {master password} ##输入RedisMaster的访问密码
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 900000
sentinel can-failover master yes
sentinel parallel-syncs master 2
#master2 可以添加多组主从的redis监听
...
启动sentinel :
./src/redis-sentinel sentinel.config
//or
./src/redis-server sentinel.config --sentinel
验证:
./src/redis-cli -p {sentinel port} info Sentinel
你会看到它所监控的主从信息: