Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移[原創]

配置環境:
OS: CentOS6.1 x86  *  4
Software: redis-2.6.9
內存: 16G
CPU: E5606  @ 2.13GHz *2
------------------
IP分佈情況:
Redis Sentinel   : 192.168.7.46
Redis server主  : 192.168.7.44
Redis server從1: 192.168.7.40
Redis server從2: 192.168.7.142
下面均以尾部表示IP,如 44、46....
結構如圖:
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
------------------
配置過程中,如果沒有4臺機器,那隻要2臺也可以,其中一臺運行Sentinel,另一臺運行3個不同端口的redis服務即可。
集羣最小單位爲:1個Sentinel、2個redis;
------------------
開始:
1.1 啓動Redis-server服務
      #redis的安裝配置就不介紹了,不清楚的可以先google,redis的配置文件可以直接用。
      #啓動 Redis server服務 (IP 44、40、142
      redis-server /usr/local/redis-2.6.9/redis.conf   &
      #配置40、142爲從庫,分別執行
      redis-cli slaveof 192.168.7.44 6379
      #查看主上的主從狀態
      redis-cli -h 192.168.7.44 -p 6379 info Replication
      #可以看到從狀態
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
      #隨意查看一臺從的主從狀態
      redis-cli -h 192.168.7.40 -p 6379 info Replication
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
------------------ 
 1.2啓動Redis Sentinel (ip:46)
      # Sentinel 的配置文件爲sentinel.conf 複製以下配置,修改IP地址即可。
      cat    /usr/local/redis-2.6.9/sentinel.conf
      sentinel monitor test1 192.168.7.40 6379 1 #修改IP地址,IP可以是集羣中的任意一個IP地址。
sentinel down-after-milliseconds test1 5000 #默認1s檢測一次,這裏配置超時5000毫秒爲宕機。
sentinel failover-timeout test1 900000
sentinel can-failover test1 yes
sentinel parallel-syncs test1 2     
 #啓動 Redis Sentinel 
     redis-server /usr/local/redis-2.6.9/sentinel.conf  --sentinel  &
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
      # Sentinel默認端口爲26379 ,Sentinel終端打印 :     * slave  從庫信息 @ master-name 主庫信息 
      # 以上信息表明Sentinel 已經啓動成功,並且已經識別到當前的主從情況。
      # 但是這個只會在終端上顯示,如果你關閉當前終端,就無法顯示。
      # 用命令可以更直接顯示當前狀態。
      # 查詢master狀態
      redis-cli -h 192.168.7.46 -p 26379 info Sentinel
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
      #通過這裏可以獲取到主IP地址
      redis-cli  -h 192.168.7.46 -p 26379  info sentinel| awk -F ',' '/status/ {print $3}'| awk -F '=' '{print $2}'
      # 查詢slave狀態
      redis-cli -h 192.168.7.46 -p 26379 sentinel slaves test1        //test1是sentinel.conf中配置的
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
      #圖中顯示了幾個從庫(name數量),從庫的IP地址和狀態,主庫的IP地址和狀態。
      #還有‘runid’ ,redis的從接管主沒有優先級的參數可以配置,默認使用runid的大小來競爭主庫,所以這裏也可以預測下一個主是哪臺
      #這裏看下一個主爲142.  優先級這個以後作者應該會更新吧。
------------------
1.3演示故障
      #目前狀態:
      # Redis Sentinel   : 192.168.7.46
      # Redis server主  : 192.168.7.44
      # Redis server從1: 192.168.7.40
      # Redis server從2: 192.168.7.142 

      #關閉Redis server主  : 192.168.7.44
      redis-cli -h 192.168.7.44 -p 6379 shutdown
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
      #查看Sentinel狀態
      redis-cli -h 192.168.7.46 -p 26379 info Sentinel
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
      #可以看到Redis server主的IP地址已經變成192.168.7.142。
      #查看192.168.7.40的狀態,如果配置正常,它的主爲142 
Redis Sentinel;Redis Sentinel配置;redis集羣;redis故障轉移 - 李坤山 - 李坤山VS斷懸
      # OK 自動切換已經實現了。
      # 如果不是主宕機,而是從宕機,那麼不會發生切換行爲,只會把宕機的那臺從集羣中剔除。
      # 已宕機的機器,如果再次加入集羣,只要它成爲了當前主的從機,則Sentinel會自動發現,並將其加入集羣成員。
      # 可以自己動手實驗下。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章