redis通過哨兵模式實現主從切換

環境:

  • server1:172.25.70.1 master
  • server2:172.25.70.2 slave
  • server3:172.25.70.3 slave

一、配置一主多從環境

1.解壓

[root@server1 ~]# tar zxf redis-5.0.3.tar.gz 
[root@server1 ~]# ls
redis-5.0.3  redis-5.0.3.tar.gz
[root@server1 ~]# 

2.下載安裝編譯所需gcc

yum install -y gcc

3.make && make install

[root@server1 ~]# cd redis-5.0.3/
[root@server1 redis-5.0.3]# ls
00-RELEASENOTES  INSTALL     runtest           tests
BUGS             Makefile    runtest-cluster   utils
CONTRIBUTING     MANIFESTO   runtest-sentinel
COPYING          README.md   sentinel.conf
deps             redis.conf  src
[root@server1 redis-5.0.3]# make 
[root@server1 ~]# cd src/
[root@server1 src]# make install 

在這裏插入圖片描述

4.安裝

[root@server1 redis-5.0.3]# cd utils/
[root@server1 utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

在這裏插入圖片描述

5.修改配置文件,並重啓服務

[root@server1 utils]# vim /etc/redis/6379.conf
=====================
  70 bind 0.0.0.0
========================
[root@server1 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...

#查看端口

[root@server1 utils]# netstat -antlupe | grep 6379
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      0          100152     7413/redis-server 0

在這裏插入圖片描述
在這裏插入圖片描述

6.將make完的redis發送給server2、server3

[root@server1 ~]# scp -r redis-5.0.3 root@server2:
[root@server1 ~]# scp -r redis-5.0.3 root@server3:

在這裏插入圖片描述
在這裏插入圖片描述

7.安裝配置server2、server3

[root@server2 redis-5.0.3]# cd src/
[root@server2 src]# make install
[root@server2 src]# cd ../utils/
[root@server2 utils]# ./install_server.sh 

[root@server2 utils]# vim /etc/redis/6379.conf
===============================================
  70 bind 0.0.0.0


1379 slaveof 172.25.70.1 6379
=================================================

[root@server2 utils]# /etc/init.d/redis_6379 restart

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

#在server1上查看主從狀態

[root@server1 redis-5.0.3]# redis-cli
127.0.0.1:6379> info
'''
# Replication
role:master
connected_slaves:2
slave0:ip=172.25.70.2,port=6379,state=online,offset=630,lag=1
slave1:ip=172.25.70.3,port=6379,state=online,offset=630,lag=1

在這裏插入圖片描述
server3操作同server2
在這裏插入圖片描述
在這裏插入圖片描述
server1上再次查看主從
在這裏插入圖片描述

  • server2
    在這裏插入圖片描述
  • server3
    在這裏插入圖片描述

二、哨兵機制

1.複製哨兵配置文件到redis配置文件目錄

[root@server1 ~]# cd redis-5.0.3/
[root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis/

2.修改哨兵配置文件

vim /etc/redis/sentinel.conf
====================================================
84 sentinel monitor mymaster 172.25.70.1 6379 2
...
113 sentinel down-after-milliseconds mymaster 10000

在這裏插入圖片描述
在這裏插入圖片描述

3.給server2、server3發送哨兵文件

[root@server1 redis-5.0.3]# cd /etc/redis/
[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
sentinel.conf             100% 9712     9.5KB/s   00:00    
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/
sentinel.conf             100% 9712     9.5KB/s   00:00    
[root@server1 redis]# 

在這裏插入圖片描述

4.server1-3執行哨兵

  • server1:
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel

在這裏插入圖片描述
在這裏插入圖片描述

  • server2:
[root@server2 utils]#  redis-server /etc/redis/sentinel.conf --sentinel

在這裏插入圖片描述
在這裏插入圖片描述

  • server3:
[root@server3 utils]#  redis-server /etc/redis/sentinel.conf --sentinel

在這裏插入圖片描述
在這裏插入圖片描述
可以看到信息,server1爲master,server2-3都是slave節點。

5.測試

1.重新開啓一個終端遠程連接server1查看端口發現哨兵26379進程開啓:

[root@server1 ~]# netstat -antulpe

在這裏插入圖片描述
2.查看26479端口

[root@server1 ~]# redis-cli -p 26379

在這裏插入圖片描述
注意:此時顯示主是server1,sentinels=3表示成功
3.將server1的redis-cli關閉

[root@server1 ~]# redis-cli 
127.0.0.1:6379> SHUTDOWN
not connected> 

在這裏插入圖片描述
4.查看哨兵狀態
在這裏插入圖片描述
我們可以看到此時哨兵爲我們挑選了server3作爲新的master

5.連接server2,查看redis狀態
在這裏插入圖片描述
server3成爲master

我們在新的master上寫入信息,再在server2上查看:
在這裏插入圖片描述

  • server2
    在這裏插入圖片描述
    哨兵模式配置完畢
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章