1. 程式人生 > >部署redis主從叢集並開啟哨兵模式

部署redis主從叢集並開啟哨兵模式

一、部署環境
系統:centos7
通過在Linux系統上啟動兩個不同的redis例項來完成主從叢集的部署
yum源已部署

二、redis的下載與安裝
1、下載:官網下載
2、安裝
建立/app/目錄,redis安裝在/app/目錄下

[[email protected] ~]# mkdir /app
[[email protected] ~]# cd /usr/local/src/
[[email protected] src]# ls
redis-4.0.11.tar.gz
[[email protected] src]# tar zxf redis-4.0.11.tar.gz -C /app/
[
[email protected]
~]# yum install -y gcc* [[email protected] ~]# cd /app/redis-4.0.11/ [[email protected] redis-4.0.11]# make [[email protected] redis-4.0.11]# make install 3、通過配置不同埠,來啟動不同例項 [[email protected] ~]# mkdir /app/redis_replication [[email protected] ~]# mkdir /app/redis_replication/7001_master [
[email protected]
~]# mkdir /app/redis_replication/7002_slave [[email protected] ~]# cp /app/redis-4.0.11/redis.conf /app/redis_replication/7001_master/ [[email protected] ~]# cp /app/redis-4.0.11/redis.conf /app/redis_replication/7002_slave/

編輯master配置檔案

[[email protected] ~]# cd /app/redis_replication/
[[email protected]
redis_replication]# vim 7001_master/redis.conf #修改埠6379為7001 dir /app/redis_replication/7001_master pidfile /var/run/redis_7001.pid logfile "/app/redis_replication/7001_master/7001.log" protected-mode no ##yes改為no 關閉安全模式 daemonize yes ##以守護程序方式啟動 requirepass qwer1234 ##開啟密碼認證 masterauth qwer1234 ##當開啟哨兵模式時需要新增,以免slave升級為master時不能同步

編輯slave配置檔案

[[email protected] redis_replication]# vim 7001_master/redis.conf
    #埠改為7002
    dir /app/redis_replication/7002_slave
    pidfile /var/run/redis_7002.pid
    logfile "/app/redis_replication/7002_slave/7002.log"
    protected-mode no
    masterauth qwer1234   ##同步master時所需密碼
    requirepass qwer1234   ##開啟密碼認證
    slaveof 127.0.0.1 7001  ##新增

啟動redis

[[email protected] redis_replication]# redis-server 7001_master/redis.conf 
2521:C 03 Dec 15:50:54.660 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2521:C 03 Dec 15:50:54.661 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=2521, just started
2521:C 03 Dec 15:50:54.661 # Configuration loaded
[[email protected] redis_replication]# redis-server 7002_slave/redis.conf 
2530:C 03 Dec 15:51:07.037 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2530:C 03 Dec 15:51:07.037 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=2530, just started
2530:C 03 Dec 15:51:07.037 # Configuration loaded

4、驗證

[[email protected] redis_replication]# redis-cli -p 7001 -a qwer1234 info replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=7002,state=online,offset=70,lag=1

[[email protected] redis_replication]# redis-cli -p 7002 -a qwer1234 info replication
master_host:127.0.0.1
master_port:7001
...

在master建立KEY檢視slave是否同步

[[email protected] ~]# redis-cli -p 7001 -a qwer1234 set k1 t1
OK
[[email protected] ~]# redis-cli -p 7002 -a qwer1234 get k1
"t1"

至此,redis主從配置完成

三、配置redis主從哨兵模式

[[email protected] app]# cp redis-4.0.11/sentinel.conf redis_replication/
[[email protected] app]# vim redis_replication/sentinel.conf 

protected-mode no  ##關閉安全模式
sentinel monitor mymaster 127.0.0.1 7002 1 
sentinel auth-pass mymaster qwer1234 ##當redis主從叢集有密碼驗證時開啟

啟動

 [[email protected] app]# redis-sentinel redis_replication/sentinel.conf 

驗證

關閉master7001埠,檢視7002埠是否通過哨兵升級為master

[[email protected] redis_replication]# redis-cli -p 7001 -a qwer1234 shutdown

當master關閉時,可看到哨兵的輸出內容

...
2138:X 04 Dec 09:59:15.625 # +failover-end master mymaster 127.0.0.1 7001
2138:X 04 Dec 09:59:15.625 # +switch-master mymaster 127.0.0.1 7001 127.0.0.1 7002
2138:X 04 Dec 09:59:15.625 * +slave slave 127.0.0.1:7001 127.0.0.1 7001 @ mymaster 127.0.0.1 7002
2138:X 04 Dec 09:59:18.645 # +sdown slave 127.0.0.1:7001 127.0.0.1 7001 @ mymaster 127.0.0.1 7002

[[email protected] redis_replication]# redis-cli -p 7002 -a qwer1234 info replication

role:master
connected_slaves:0

可以看到原來的slave7002已升級為master,再次啟動7001例項

[[email protected] redis_replication]# redis-server 7001_master/redis.conf 

[[email protected] redis_replication]# redis-cli -p 7001 -a qwer1234 info replication

role:slave
master_host:127.0.0.1
master_port:7002

7001已變為7002的從庫,至此,驗證成功