1. 程式人生 > >Redis實踐(二)高可用的叢集+哨兵部署

Redis實踐(二)高可用的叢集+哨兵部署

  進入後,輸入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