redis哨兵模式实现主从故障切换

  大多数的应用场景是MySQL(主)+Redis(辅),MySQL做为主存储,Redis用于缓存,
加快访问速度。需要高性能的地方使用Redis,不需要高性能的地方使用MySQL。存储
数据在MySQL和Redis之间做同步;
server1 ,server2,server3必须先实现主从复制
Server1(master):
[root@server1 ~]# tar zxf  redis-4.0.8.tar.gz 
[root@server1 ~]# cd redis-4.0.8
[root@server1 redis-4.0.8]# yum install gcc -y
[root@server1 redis-4.0.8]# make
[root@server1 redis-4.0.8]# make install 
[root@server1 edis-4.0.8]# which redis-cli
/usr/local/bin/redis-cli
[root@server1 utils]# cd utils/
[root@server1 utils]# ./install_server.sh

Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

[root@server1 utils]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:6379              0.0.0.0:*                   LISTEN      31887/redis-server  
[root@server1 redis]# vim  /etc/redis/6379.conf 

70 bind 0.0.0.0

[root@server1 redis]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@server1 redis]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@server1 redis]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      31901/redis-server  

[root@server1 redis]# redis-cli
127.0.0.1:6379> set name wzt
OK
127.0.0.1:6379> get name
"wzt"
127.0.0.1:6379> set user1 111
OK
127.0.0.1:6379> get key
(nil)
127.0.0.1:6379> get user1
"111"

Server2(slave):
[root@server2 ~]# tar zxf  redis-4.0.8.tar.gz 
[root@server2 ~]# cd redis-4.0.8
[root@server2 redis-4.0.8]# yum install gcc -y
[root@server2 redis-4.0.8]# make
[root@server2 redis-4.0.8]# make install 
[root@server2 edis-4.0.8]# which redis-cli
/usr/local/bin/redis-cli
[root@server2 utils]# cd utils/
[root@server2 utils]# ./install_server.sh

Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

[root@server2 utils]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:6379              0.0.0.0:*                   LISTEN      31887/redis-server  

[root@server2 redis]# vim  /etc/redis/6379.conf

70 bind 0.0.0.0
283 slaveof 172.25.44.1  6379

[root@server2 utils]#  /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
[root@server2 utils]# redis-cli   #可以同步到server1上的数据
127.0.0.1:6379> get name
"wzt"
127.0.0.1:6379> get user1
"111"

Server3(slave);
同server2

#

#检测三台主机是否同步
[root@server2 utils]# redis-cli 
127.0.0.1:6379> get name
"westos"
127.0.0.1:6379> exit


[root@server3 utils]# redis-cli 
127.0.0.1:6379> get name
"westos"
127.0.0.1:6379> exit

#主从自动切换
[root@server1 redis]# vim /etc/redis/sentinel.conf
 15 bind 0.0.0.0
 17 protected-mode no
 69 sentinel monitor mymaster 172.25.44.1 6379 2

 #注意:千万不能重启
[root@server1 redis]# scp /etc/redis/sentinel.conf  server3:/etc/redis/
sentinel.conf                                  100% 7588     7.4KB/s   00:00    
[root@server1 redis]# scp /etc/redis/sentinel.conf  server2:/etc/redis/
sentinel.conf                                  100% 7588     7.4KB/s   00:00




[root@server1 redis-4.0.8]# redis-server /etc/redis/sentinel.conf --sentinel
32244:X 11 Aug 18:21:20.565 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32244:X 11 Aug 18:21:20.566 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=32244, just started
32244:X 11 Aug 18:21:20.566 # Configuration loaded
32244:X 11 Aug 18:21:20.566 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 4.0.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 32244
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

32244:X 11 Aug 18:21:20.567 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
32244:X 11 Aug 18:21:20.623 # Sentinel ID is 99043549949de0b7dc7824eedb163987230986f0
32244:X 11 Aug 18:21:20.623 # +monitor master mymaster 172.25.44.1 6379 quorum 2
32244:X 11 Aug 18:21:20.624 * +slave slave 172.25.44.3:6379 172.25.44.3 6379 @ mymaster 172.25.44.1 6379
32244:X 11 Aug 18:21:20.649 * +slave slave 172.25.44.2:6379 172.25.44.2 6379 @ mymaster 172.25.44.1 6379


[root@server1 redis]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped


6726:X 11 Aug 18:21:43.907 * +sentinel sentinel 99043549949de0b7dc7824eedb163987230986f0 172.25.44.1 26379 @ mymaster 172.25.44.1 6379
6726:X 11 Aug 18:21:52.431 * +sentinel sentinel 61c1d7df1086ff31029a47c00969d1712081e8ac 172.25.44.3 26379 @ mymaster 172.25.44.1 6379
6726:X 11 Aug 18:22:43.471 # +sdown master mymaster 172.25.44.1 6379
6726:X 11 Aug 18:22:43.524 # +odown master mymaster 172.25.44.1 6379 #quorum 3/2
6726:X 11 Aug 18:22:43.524 # +new-epoch 1



[root@server1 redis]# vim /etc/redis/6379.conf   #配置文件的master已经改变

1310 slaveof 172.25.44.2 6379


[root@server1 redis]# /etc/init.d/redis_6379 start
Starting Redis server...



6726:X 11 Aug 18:22:45.428 * +slave slave 172.25.44.3:6379 172.25.44.3 6379 @ mymaster 172.25.44.2 6379
6726:X 11 Aug 18:22:45.428 * +slave slave 172.25.44.1:6379 172.25.44.1 6379 @ mymaster 172.25.44.2 6379

猜你喜欢

转载自blog.csdn.net/wzt888_/article/details/81639792