redis分佈式環境主從配置及手動切換

NoSQL Redis 文章 技術 極客殿堂 極客殿堂 2017-08-29

前一篇文章講解了redis的偽分佈式的環境搭建,為了應各位朋友的要求寫一篇真分佈式環境的搭建以及手動切換的操作。下面內容只是講解分佈式環境下redis的配置的注意事項,過程比較簡單,暫時還未使用到sentinel來實現自動主從切換的高可用配置,關於sentinel的配置後續也會有相應的文章推出。

在實際公司的生產環境上如果要使用redis,一般也不會直接操作redis,而是採用開源的redis集群架構,例如codis,redis cluster,twemproxy來實現分佈式集群的管理,結合所在公司的項目我們選用的是codis,後續也會介紹codis的詳情、部署以及運維等,敬請期待!

一、環境概述

192.168.28.154為主,啟動一個redis實例,端口號為8381

192.168.16.234為從,啟動一個redis實例,端口號為8381

二、配置文件

1、master

redis分佈式環境主從配置及手動切換

8381.conf的內容如下:

daemonize yes

port 8381

logfile /soft/redis/logs/8381.log

dbfilename 8381.rdb

dir /soft/redis/dumps/

2、slave

slave的配置文件、日誌文件、持久化文件路徑與master一樣

8381.conf的內容如下:

daemonize yes

port 8381

logfile /soft/redis/logs/8381.log

dbfilename 8381.rdb

dir /soft/redis/dumps/

slaveof 192.168.28.154 8381

其中從的配置文件中需要加上:slaveof 192.168.28.154 8381

三、啟動測試

啟動slave:redis-server 8381.conf

redis分佈式環境主從配置及手動切換

啟動master:redis-server 8381.conf

redis分佈式環境主從配置及手動切換

從這裡可以看出已經連接到slave了,並進行了一次同步

1、使用redis-cli連接master

redis分佈式環境主從配置及手動切換

2、在master機器上使用redis-cli來連接slave

redis分佈式環境主從配置及手動切換

發現可以連接,但是執行get a的時候報錯了,這就是真分佈式環境下最有名的錯誤,注意只在redis3.2以上版本出現。從報錯信息中可以看到slave實例是以受保護模式來啟動,這種模式下只允許在本機連接redis,如果在其它機器下連接就不允許。解決辦法也說明了:

1)、在slave上使用命令“CONFIG SET protected-mode no”

2)、修改slave的配置文件,增加"protected-mode no"3)、在slave的配置文件中增加ip地址的綁定,或者增加權限密碼,只允許指定ip的客戶端訪問

下面我的使用第二種方式來修改slave的配置文件,為了一勞永易我們把master的配置文件也修改了。注:這是生產環境下最常用的配置方式增加protected-mode no如下:

redis分佈式環境主從配置及手動切換

然後再到master通過redis-cli來訪問slave,使用get a發現有結果返回redis分佈式環境主從配置及手動切換至此為止主從配置完成。

四、主從手動切換

1、在slave上修改role的狀態為master:

redis分佈式環境主從配置及手動切換

發現已經改為master了

2、在master上修改role為slave:slaveof 192.168.16.234 8381

查看狀態:

redis分佈式環境主從配置及手動切換

至此修改完成,主要是對slaveof命令的使用,詳細的切換過程大家可以看前一篇文章。

相關推薦

推薦中...