linux (centos7) 安装redis,主从+哨兵模式搭建

--先搭建主从模式,1主2从

启动三个redis服务
/home/redis-5.0.7/src/redis-server /home/redis-5.0.7/config/master-6379.conf 
/home/redis-5.0.7/src/redis-server /home/redis-5.0.7/config/slave-6380.conf 
/home/redis-5.0.7/src/redis-server /home/redis-5.0.7/config/slave-6381.conf


--配置三个sentinel.conf文件

vi sentinel26379.conf

#保护模式  
protected-mode no    
#端口  
port 26379
#守护进程  
daemonize yes    
#设置pid文件路径  
pidfile /var/run/sentinel26379.pid      
#工作路径,不用改  
dir /tmp        
#设置日志文件路径  
logfile /home/redis-5.0.7/logs/sentinel26379.log    
# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown  
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。  
# slaves是自动发现,不用指定slaves。  
sentinel monitor mymaster 192.168.3.5 6379 2  
  
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。  
sentinel down-after-milliseconds mymaster 30000  
  
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。  
sentinel parallel-syncs mymaster 1  
  
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。  
sentinel failover-timeout mymaster 180000  
  
#设置master和slaves的密码  
sentinel auth-pass mymaster redis123  


vi sentinel26380.conf

#保护模式  
protected-mode no    
#端口  
port 26380
#守护进程  
daemonize yes    
#设置pid文件路径  
pidfile /var/run/sentinel26380.pid      
#工作路径,不用改  
dir /tmp        
#设置日志文件路径  
logfile /home/redis-5.0.7/logs/sentinel26380.log    
# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown  
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。  
# slaves是自动发现,不用指定slaves。  
sentinel monitor mymaster 192.168.3.5 6379 2  
  
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。  
sentinel down-after-milliseconds mymaster 30000  
  
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。  
sentinel parallel-syncs mymaster 1  
  
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。  
sentinel failover-timeout mymaster 180000  
  
#设置master和slaves的密码  
sentinel auth-pass mymaster redis123  

vi sentinel26381.conf

#保护模式  
protected-mode no    
#端口  
port 26381
#守护进程  
daemonize yes    
#设置pid文件路径  
pidfile /var/run/sentinel26381.pid      
#工作路径,不用改  
dir /tmp        
#设置日志文件路径  
logfile /home/redis-5.0.7/logs/sentinel26381.log    
# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown  
# (objective down客观down;相对应的存在sdown,subjective down,主观down)状态。  
# slaves是自动发现,不用指定slaves。  
sentinel monitor mymaster 192.168.3.5 6379 2  
  
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。  
sentinel down-after-milliseconds mymaster 30000  
  
#选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。  
sentinel parallel-syncs mymaster 1  
  
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。  
sentinel failover-timeout mymaster 180000  
  
#设置master和slaves的密码  
sentinel auth-pass mymaster redis123  

--启动sentinel
redis-sentinel  /home/redis-5.0.7/config/sentinel26379.conf
redis-sentinel  /home/redis-5.0.7/config/sentinel26380.conf
redis-sentinel  /home/redis-5.0.7/config/sentinel26381.conf


--模拟主节点6379 down机
kill -9 44862


--观察6380的日志,发现主节点切换到6380
44975:X 02 Jan 2020 16:04:08.829 # +new-epoch 1
44975:X 02 Jan 2020 16:04:08.830 # +vote-for-leader 761a9eb056794c6d65e3858b1deac9a4ee24903a 1
44975:X 02 Jan 2020 16:04:08.832 # +sdown master mymaster 192.168.3.5 6379
44975:X 02 Jan 2020 16:04:08.909 # +odown master mymaster 192.168.3.5 6379 #quorum 3/2
44975:X 02 Jan 2020 16:04:08.909 # Next failover delay: I will not start a failover before Thu Jan  2 16:10:09 2020
44975:X 02 Jan 2020 16:04:09.128 # +config-update-from sentinel 761a9eb056794c6d65e3858b1deac9a4ee24903a 192.168.3.5 26381 @ mymaster 192.168.3.5 6379
44975:X 02 Jan 2020 16:04:09.128 # +switch-master mymaster 192.168.3.5 6379 192.168.3.5 6380
44975:X 02 Jan 2020 16:04:09.128 * +slave slave 192.168.3.5:6381 192.168.3.5 6381 @ mymaster 192.168.3.5 6380
44975:X 02 Jan 2020 16:04:09.128 * +slave slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380
44975:X 02 Jan 2020 16:04:39.154 # +sdown slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380

--登陆redis验证
# redis-cli -p 6380
127.0.0.1:6380> info

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.3.5,port=6381,state=online,offset=323618,lag=1
master_replid:4619c7a69d5828a94169e4bf5c4037e20c68da94
master_replid2:1add70bc388d5c1626aec411e9f1288a69243334
master_repl_offset:323892
second_repl_offset:284559
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:323892

--重启6379节点后,观察6379节点日志,恢复成6380的slave节点
44955:X 02 Jan 2020 16:09:15.073 # -sdown slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380
44955:X 02 Jan 2020 16:09:25.014 * +convert-to-slave slave 192.168.3.5:6379 192.168.3.5 6379 @ mymaster 192.168.3.5 6380


 

你可能感兴趣的:(redis)