首先感謝“吧喱公路”的引導(dǎo),打開了我對哨兵的理解思路,再次謝謝。

Redis的哨兵(sentinel) ??
哨兵適用于非集群結(jié)構(gòu)的redis環(huán)境,比如:redis主從環(huán)境。
關(guān)于哨兵集群,我這里就不做實驗了,網(wǎng)上有大量的配置方法。
哨兵集群的核心思想,就是解決哨兵的單點故障問題。
個人認為,有做哨兵集群的經(jīng)費,不如直接做個redis集群了。
環(huán)境描述:(主從從結(jié)構(gòu))
master:192.168.2.100:6379 ? ? ?#單節(jié)點sentinel運行在這個環(huán)境上
slave:192.168.2.200:6379 ??
savle:192.168.2.201:6379 ? ?
redis安裝路徑:/usr/local/redis-3.0.6-6379
redis.conf關(guān)鍵配置:(這里不絮訴基本配置了,主從配置參考:https://blog.51cto.com/13690439/2118890)
master:
# vim redis.conf
requirepass "123456" ? ? ? ?//設(shè)置連接master密碼
masterauth "123456" ? ? ? //登錄master時,調(diào)用該參數(shù)
slave:
# vim etc/redis.conf
slaveof 192.168.2.100 6379 ? ? ? ? ?//指定主庫IP和端口
requirepass "123456" ? ? ? ?//之所以3個redis都這樣寫,是為了故障切換后,info replication顯示slave0信息
masterauth 123456 ? ? ? ? ?//登錄master時,調(diào)用該參數(shù)
哨兵關(guān)鍵配置:(sentinel.conf)
# vim sentinel.conf
port 26379 ? ? ? ?//端口
sentinel monitor mymaster 192.168.2.100 6379 1 ? ? ??
//master-name可以自定義、監(jiān)聽IP:port ?幾個sentinel認為故障時,才算真正的故障
sentinel down-after-milliseconds mymaster 3000
//哨兵發(fā)送PING消息,等待PONG消息的時間,超過設(shè)定時間表示故障;毫秒
sentinel failover-timeout mymaster 10000 ? ? ?
//故障轉(zhuǎn)移(failover)超時時間,超過設(shè)定時間表示故障轉(zhuǎn)移失敗;毫秒
sentinel auth-pass mymaster 123456 ? ? ? ? ?//設(shè)置連接master需要的密碼
啟動master的redis:
# redis-server redis.conf
啟動哨兵:(新開一個xshell)
# redis-sentinel sentinel.conf?
啟動slave的redis:
# redis-server redis.conf
哨兵的輸出:
# Sentinel runid is e49df1197325687d9a40508c00f466a8c6e596db
//哨兵ID
# +monitor master mymaster 192.168.2.100 6379 quorum 1
//+monitor:增加了一個master監(jiān)控,后面就是master的信息
* +slave slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379
//+salve:增加了一個salve監(jiān)控,后面是salve的信息
* +slave slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379
//+salve:增加了一個salve監(jiān)控,后面是salve的信息
master上登錄redis:
# redis-cli -h 192.168.2.100 -p 6379 -a 123456
192.168.2.100:6379> set name zhangsan
OK
192.168.2.100:6379> set age 26
OK
192.168.2.100:6379> set home beijing
OK
192.168.2.100:6379> keys *
1) "name"
2) "home"
3) "age"
salve上登錄redis:(兩個salve登錄查看,數(shù)據(jù)同步正常)
# redis-cli -h 192.168.2.200 -p 6379 -a 123456
192.168.2.200:6379> keys *
1) "name"
2) "home"
3) "age"
停止master的redis:(注意觀察哨兵的輸出)
# ps -ef |grep redis
root ? ? ?11467 ? ? ?1 ?0 17:12 ? ? ? ? ?00:00:00 redis-server *:6379
root ? ? ?11473 ? 4650 ?0 17:12 pts/1 ? ?00:00:00 redis-sentinel *:26379 [sentinel]
root ? ? ?11513 ? 4339 ?0 17:16 pts/0 ? ?00:00:00 grep --color=auto redis
# kill 11467
哨兵的輸出:
# +sdown master mymaster 192.168.2.100 6379
//+sdown:master節(jié)點掛了。后面是master信息
# +odown master mymaster 192.168.2.100 6379 #quorum 1/1
# +new-epoch 14
# +try-failover master mymaster 192.168.2.100 6379
//開始恢復(fù)故障
# +vote-for-leader e49df1197325687d9a40508c00f466a8c6e596db 14
//投票選舉節(jié)點的哨兵信息,因為我們就一個哨兵,所以就是自己 leader
# +elected-leader master mymaster 192.168.2.100 6379
//選舉節(jié)點后替換誰
# +failover-state-select-slave master mymaster 192.168.2.100 6379
//開始為故障的master選舉
# +selected-slave slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379
//節(jié)點選舉結(jié)果,選中192.168.2.200:6379來替換master
* +failover-state-send-slaveof-noone slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379
//確認節(jié)點選舉結(jié)果
* +failover-state-wait-promotion slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379
//選中的節(jié)點正在升級為master
# +promoted-slave slave 192.168.2.200:6379 192.168.2.200 6379 @ mymaster 192.168.2.100 6379
//選中的節(jié)點已成功升級為master
# +failover-state-reconf-slaves master mymaster 192.168.2.100 6379
//切換故障master的狀態(tài)
* +slave-reconf-sent slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379
//
* +slave-reconf-inprog slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379
//其他節(jié)點同步故障master信息
* +slave-reconf-done slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.100 6379
//其他節(jié)點完成故障master的同步
# +failover-end master mymaster 192.168.2.100 6379
//故障恢復(fù)完成
# +switch-master mymaster 192.168.2.100 6379 192.168.2.200 6379
//master從192.168.2.100:6379 ?變?yōu)?192.168.2.200:6379
* +slave slave 192.168.2.201:6379 192.168.2.201 6379 @ mymaster 192.168.2.200 6379
//其他節(jié)點指定新的master
* +slave slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379
//故障master指定新的master
# +sdown slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379
//192.168.2.100:6379宕機,待恢復(fù)
啟動master的redis(注意觀察哨兵的輸出)
# redis-server redis.conf
哨兵的輸出:
# -sdown slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379
//故障master節(jié)點已經(jīng)恢復(fù)
* +convert-to-slave slave 192.168.2.100:6379 192.168.2.100 6379 @ mymaster 192.168.2.200 6379
//故障master節(jié)點變?yōu)閟alve,他的master為192.168.2.200:6379
現(xiàn)在我們查看主從的狀態(tài):
192.168.2.100上查看:
# redis-cli -h 192.168.2.100 -p 6379 -a 123456
192.168.2.100:6379> info replication
# Replication
role:slave
master_host:192.168.2.200
master_port:6379
master_link_status:up
192.168.2.100:6379> set ab 123
(error) READONLY You can't write against a read only slave.
192.168.2.100:6379> get name
"zhagnsan"
192.168.2.201上查看:
# redis-cli -h 192.168.2.201 -p 6379 -a 123456
192.168.2.201:6379> info replication
# Replication
role:slave
master_host:192.168.2.200
master_port:6379
master_link_status:up
192.168.2.201:6379> set ab 123
(error) READONLY You can't write against a read only slave.
192.168.2.201:6379> get name
"zhagnsan"
192.168.2.200上查看:
# redis-cli -h 192.168.2.200 -p 6379 -a 123456
192.168.2.200:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.2.201,port=6379,state=online,offset=24990,lag=1
slave1:ip=192.168.2.100,port=6379,state=online,offset=24990,lag=0
192.168.2.200:6379> set ab 123
OK
192.168.2.200:6379> keys *
1) "name"
2) "home"
3) "age"
4) "ab"
總結(jié):通過哨兵(sentinel)實現(xiàn)了主從從環(huán)境高可用效果。
? ? ?master在宕機后,通過哨兵自動將其中一個salve提升為master,切換過程中,數(shù)據(jù)保存完整。
? ? ?但我們也發(fā)現(xiàn),原master不能繼續(xù)插入key了, 而客戶端連接還是會連原master,
? ? ?這時,我們就需要在數(shù)據(jù)庫連接池做一些規(guī)則設(shè)置了。
? ? ?由于目前我能力有限,無法解釋連接池問題,還請見諒。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
                當(dāng)前題目:Redis哨兵部署(sentinel)(實驗)-創(chuàng)新互聯(lián)
                
                新聞來源:http://chinadenli.net/article0/djooio.html
            
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、企業(yè)網(wǎng)站制作、企業(yè)建站、網(wǎng)站導(dǎo)航、軟件開發(fā)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)