Redis實踐(二)高可用的叢集+哨兵部署
阿新 • • 發佈:2018-12-25
進入後,輸入shutdown
注意這裡需要新增-h引數,如果不新增此引數,會報告如下異常:
Could not connect to Redis at 127.0.0.1:6379: Connection refused
原因就是在conf檔案中,我們配置 bind 引數
info 命令可以檢視redis的完整資訊。
至此,redis單節點安裝完畢。
為了適應叢集的安裝
1) 首先修改redis conf配置,使之適應
pidfile /var/run/redis-M-6379.pid
##日誌重新整理策略(Master禁用)
#save 900 1
#save 300 10
#save 60 10000
#映象備份檔案的檔名
dbfilename redis-35-M_dump.rdb
##啟用增量(Master禁用)
appendonly no
##slaveof no one
slave-read-only yes
3.1.2 Redis slave 安裝和配置
首先和上面安裝Redis Master 一樣,進行安裝,以及各個目錄建立,可以拷貝144上Mater的配置檔案。
我們這裡假設已經拷貝完成,那麼我們需要修改下面資訊以滿足slave的設定需要。
port 6379
##Redis 預設pid 檔案位置redis.pid,當執行多個 redis 服務時,需要指定不同的 pid 檔案和埠
pidfile redis-S-6379.pid
##日誌重新整理策略(Master禁用)
save 900 1
save 300 10
save 60 10000
#映象備份檔案的檔名
dbfilename redis-S-dump.rdb
##啟用增量(Master禁用)
appendonly yes
##設定該資料庫為其他資料庫的從資料庫,主庫無需設定
slaveof 192.168.136.144 6379
##-----------其他配置和master保持一致-----------##
3.1.3Redis Sentinel 安裝配置
先在redis根目錄下建立conf子目錄,把預設的sentinel.conf檔案複製進來,重新命名為sentinel-16379.conf,並修改以下配置資訊:
進入 /home/nmc/dev/redis/redis-3.2.3,然後執行cp sentinel.conf /usr/local/etc/redis/6379命令
接下來,我們進入 /usr/local/etc/redis/6379 目錄將哨兵配置檔案改名,mv sentinel.conf sentinel-1-16379.conf
修改內容如下:
##sentinel-16379.conf
##sentinel例項之間的通訊埠
port 16379
##指定工作目錄
dir /home/nmc/dev/redis/redis6379/sentinel-1
##顯示監控master節點10.45.47.35,master節點使用埠6379,最後一個數字表示投票需要的"最少法定人數",比如有10個sentinal哨兵都在監控某一個master節點,如果需要至少6個哨兵發現master掛掉後,才認為master真正down掉,那麼這裡就配置為6,最小配置1臺master,1臺slave,在二個機器上都啟動sentinal的情況下,哨兵數只有2個,如果一臺機器物理掛掉,只剩一個sentinal能發現該問題,所以這裡配置成1,至於mymaster只是一個名字,可以隨便起,但要保證下面使用同一個名字
sentinel monitor mymaster 192.168.136.144 6379 1
##表示如果10s內mymaster沒響應,就認為SDOWN
sentinel down-after-milliseconds mymaster 10000
##表示如果master重新選出來後,其它slave節點能同時並行從新master同步快取的臺數有多少個,顯然該值越大,所有slave節點完成同步切換的整體速度越快,但如果此時正好有人在訪問這些slave,可能造成讀取失敗,影響面會更廣。最保定的設定為1,只同一時間,只能有一臺幹這件事,這樣其它slave還能繼續服務,但是所有slave全部完成快取更新同步的程序將變慢。
sentinel parallel-syncs mymaster 1
##表示如果15秒後,mysater仍沒活過來,則啟動failover,從剩下的slave中選一個升級為master
sentinel failover-timeout mymaster 15000
##當failover時,指定一個“通知”指令碼用來告知系統管理員,當前叢集的情況。指令碼被允許執行的最大時間為60秒,如果超時,指令碼將會被終止(KILL) 指令碼執行的結果: 1:稍後重試,最大重試次數為10; 2: 執行結束,無需重試
部署完Sentinel-1 後,我們在144主機上部署Sentinel-2
cp /usr/local/etc/redis/6379/sentinel-1-16379.conf sentinel-2-26379.conf
修改sentinel-2-26379.conf 中如下內容
port 26379
dir /home/nmc/dev/redis/redis6379/sentinel-2
接著,我們在155主機上部署Sentinel-3
進入/usr/local/etc/redis/6379/目錄,執行如下命令
scp [email protected]:/usr/local/etc/redis/6379/sentinel-1-16379.conf .
將遠端144機器上的檔案拷貝到本地
mv sentinel-1-16379.conf sentinel-3-16379.conf
無需修改內容
在155主機上,要建立conf檔案中的目錄
mkdir /home/nmc/dev/redis/redis6379/sentinel-2
3.1.4 啟動驗證:
144、155主機上執行下面的啟動命令:
redis-server /usr/local/etc/redis/6379/redis6379.conf
注意這裡需要新增-h引數,如果不新增此引數,會報告如下異常:
Could not connect to Redis at 127.0.0.1:6379: Connection refused
原因就是在conf檔案中,我們配置 bind 引數
info 命令可以檢視redis的完整資訊。
至此,redis單節點安裝完畢。
為了適應叢集的安裝
1) 首先修改redis conf配置,使之適應
pidfile /var/run/redis-M-6379.pid
##日誌重新整理策略(Master禁用)
#save 900 1
#save 300 10
#save 60 10000
#映象備份檔案的檔名
dbfilename redis-35-M_dump.rdb
##啟用增量(Master禁用)
appendonly no
##slaveof no one
slave-read-only yes
3.1.2 Redis slave 安裝和配置
首先和上面安裝Redis Master 一樣,進行安裝,以及各個目錄建立,可以拷貝144上Mater的配置檔案。
我們這裡假設已經拷貝完成,那麼我們需要修改下面資訊以滿足slave的設定需要。
port 6379
##Redis 預設pid 檔案位置redis.pid,當執行多個 redis 服務時,需要指定不同的 pid 檔案和埠
pidfile redis-S-6379.pid
##日誌重新整理策略(Master禁用)
save 900 1
save 300 10
save 60 10000
#映象備份檔案的檔名
dbfilename redis-S-dump.rdb
##啟用增量(Master禁用)
appendonly yes
##設定該資料庫為其他資料庫的從資料庫,主庫無需設定
slaveof 192.168.136.144 6379
##-----------其他配置和master保持一致-----------##
3.1.3Redis Sentinel 安裝配置
先在redis根目錄下建立conf子目錄,把預設的sentinel.conf檔案複製進來,重新命名為sentinel-16379.conf,並修改以下配置資訊:
進入 /home/nmc/dev/redis/redis-3.2.3,然後執行cp sentinel.conf /usr/local/etc/redis/6379命令
接下來,我們進入 /usr/local/etc/redis/6379 目錄將哨兵配置檔案改名,mv sentinel.conf sentinel-1-16379.conf
修改內容如下:
##sentinel-16379.conf
##sentinel例項之間的通訊埠
port 16379
##指定工作目錄
dir /home/nmc/dev/redis/redis6379/sentinel-1
##顯示監控master節點10.45.47.35,master節點使用埠6379,最後一個數字表示投票需要的"最少法定人數",比如有10個sentinal哨兵都在監控某一個master節點,如果需要至少6個哨兵發現master掛掉後,才認為master真正down掉,那麼這裡就配置為6,最小配置1臺master,1臺slave,在二個機器上都啟動sentinal的情況下,哨兵數只有2個,如果一臺機器物理掛掉,只剩一個sentinal能發現該問題,所以這裡配置成1,至於mymaster只是一個名字,可以隨便起,但要保證下面使用同一個名字
sentinel monitor mymaster 192.168.136.144 6379 1
##表示如果10s內mymaster沒響應,就認為SDOWN
sentinel down-after-milliseconds mymaster 10000
##表示如果master重新選出來後,其它slave節點能同時並行從新master同步快取的臺數有多少個,顯然該值越大,所有slave節點完成同步切換的整體速度越快,但如果此時正好有人在訪問這些slave,可能造成讀取失敗,影響面會更廣。最保定的設定為1,只同一時間,只能有一臺幹這件事,這樣其它slave還能繼續服務,但是所有slave全部完成快取更新同步的程序將變慢。
sentinel parallel-syncs mymaster 1
##表示如果15秒後,mysater仍沒活過來,則啟動failover,從剩下的slave中選一個升級為master
sentinel failover-timeout mymaster 15000
##當failover時,指定一個“通知”指令碼用來告知系統管理員,當前叢集的情況。指令碼被允許執行的最大時間為60秒,如果超時,指令碼將會被終止(KILL) 指令碼執行的結果: 1:稍後重試,最大重試次數為10; 2: 執行結束,無需重試
部署完Sentinel-1 後,我們在144主機上部署Sentinel-2
cp /usr/local/etc/redis/6379/sentinel-1-16379.conf sentinel-2-26379.conf
修改sentinel-2-26379.conf 中如下內容
port 26379
dir /home/nmc/dev/redis/redis6379/sentinel-2
接著,我們在155主機上部署Sentinel-3
進入/usr/local/etc/redis/6379/目錄,執行如下命令
scp
將遠端144機器上的檔案拷貝到本地
mv sentinel-1-16379.conf sentinel-3-16379.conf
無需修改內容
在155主機上,要建立conf檔案中的目錄
mkdir /home/nmc/dev/redis/redis6379/sentinel-2
3.1.4 啟動驗證:
144、155主機上執行下面的啟動命令:
redis-server /usr/local/etc/redis/6379/redis6379.conf