redis的哨兵機制是官方推薦的一種高可用(HA)方案,我們在使用Redis的主從結(jié)構(gòu)時,如果主節(jié)點掛掉,這時是不能自動進行主備切換和通知客戶端主節(jié)點下線的。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、祥符網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為祥符等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
Redis-Sentinel機制主要用三個功能:
(1)監(jiān)控:不停監(jiān)控Redis主從節(jié)點是否安裝預(yù)期運行
(2)提醒:如果Redis運行出現(xiàn)問題可以 按照配置文件中的配置項 通知客戶端或者集群管理員
(3)自動故障轉(zhuǎn)移:當(dāng)主節(jié)點下線之后,哨兵可以從主節(jié)點的多個從節(jié)點中選出一個為主節(jié)點,并更新配置文件和其他從節(jié)點的主節(jié)點信息。
這里先把哨兵機制的配置文件sentinel.conf中的各個配置項先說一下
# Example sentinel.conf # 哨兵sentinel實例運行的端口 默認(rèn)26379 port 26379 # 哨兵sentinel的工作目錄 dir /tmp # 哨兵sentinel監(jiān)控的redis主節(jié)點的 ip port # master-name 可以自己命名的主節(jié)點名字 只能由字母A-z、數(shù)字0-9 、這三個字符".-_"組成。 # quorum 當(dāng)這些quorum個數(shù)sentinel哨兵認(rèn)為master主節(jié)點失聯(lián) 那么這時 客觀上認(rèn)為主節(jié)點失聯(lián)了 # sentinel monitor <master-name> <ip> <redis-port> <quorum> sentinel monitor mymaster 127.0.0.1 6379 2 # 當(dāng)在Redis實例中開啟了requirepass foobared 授權(quán)密碼 這樣所有連接Redis實例的客戶端都要提供密碼 # 設(shè)置哨兵sentinel 連接主從的密碼 注意必須為主從設(shè)置一樣的驗證密碼 # sentinel auth-pass <master-name> <password> sentinel auth-pass mymaster MySUPER--secret-0123passw0rd # 指定多少毫秒之后 主節(jié)點沒有應(yīng)答哨兵sentinel 此時 哨兵主觀上認(rèn)為主節(jié)點下線 默認(rèn)30秒 # sentinel down-after-milliseconds <master-name> <milliseconds> sentinel down-after-milliseconds mymaster 30000 # 這個配置項指定了在發(fā)生failover主備切換時最多可以有多少個slave同時對新的master進行 同步, 這個數(shù)字越小,完成failover所需的時間就越長, 但是如果這個數(shù)字越大,就意味著越 多的slave因為replication而不可用。 可以通過將這個值設(shè)為 1 來保證每次只有一個slave 處于不能處理命令請求的狀態(tài)。 # sentinel parallel-syncs <master-name> <numslaves> sentinel parallel-syncs mymaster 1 # 故障轉(zhuǎn)移的超時時間 failover-timeout 可以用在以下這些方面: #1. 同一個sentinel對同一個master兩次failover之間的間隔時間。 #2. 當(dāng)一個slave從一個錯誤的master那里同步數(shù)據(jù)開始計算時間。直到slave被糾正為向正確的master那里同步數(shù)據(jù)時。 #3.當(dāng)想要取消一個正在進行的failover所需要的時間。 #4.當(dāng)進行failover時,配置所有slaves指向新的master所需的最大時間。不過,即使過了這個超時,slaves依然會被正確配置為指向master,但是就不按parallel-syncs所配置的規(guī)則來了 # 默認(rèn)三分鐘 # sentinel failover-timeout <master-name> <milliseconds> sentinel failover-timeout mymaster 180000 # SCRIPTS EXECUTION #配置當(dāng)某一事件發(fā)生時所需要執(zhí)行的腳本,可以通過腳本來通知管理員,例如當(dāng)系統(tǒng)運行不正常時發(fā)郵件通知相關(guān)人員。 #對于腳本的運行結(jié)果有以下規(guī)則: #若腳本執(zhí)行后返回1,那么該腳本稍后將會被再次執(zhí)行,重復(fù)次數(shù)目前默認(rèn)為10 #若腳本執(zhí)行后返回2,或者比2更高的一個返回值,腳本將不會重復(fù)執(zhí)行。 #如果腳本在執(zhí)行過程中由于收到系統(tǒng)中斷信號被終止了,則同返回值為1時的行為相同。 #一個腳本的最大執(zhí)行時間為60s,如果超過這個時間,腳本將會被一個SIGKILL信號終止,之后重新執(zhí)行。 #通知型腳本:當(dāng)sentinel有任何警告級別的事件發(fā)生時(比如說redis實例的主觀失效和客觀失效等等),將會去調(diào)用這個腳本, 這時這個腳本應(yīng)該通過郵件,SMS等方式去通知系統(tǒng)管理員關(guān)于系統(tǒng)不正常運行的信息。調(diào)用該腳本時,將傳給腳本兩個參數(shù), 一個是事件的類型, 一個是事件的描述。 如果sentinel.conf配置文件中配置了這個腳本路徑,那么必須保證這個腳本存在于這個路徑,并且是可執(zhí)行的,否則sentinel無法正常啟動成功。 #通知腳本 # sentinel notification-script <master-name> <script-path> sentinel notification-script mymaster /var/redis/notify.sh # 客戶端重新配置主節(jié)點參數(shù)腳本 # 當(dāng)一個master由于failover而發(fā)生改變時,這個腳本將會被調(diào)用,通知相關(guān)的客戶端關(guān)于master地址已經(jīng)發(fā)生改變的信息。 # 以下參數(shù)將會在調(diào)用腳本時傳給腳本: # <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port> # 目前<state>總是“failover”, # <role>是“l(fā)eader”或者“observer”中的一個。 # 參數(shù) from-ip, from-port, to-ip, to-port是用來和舊的master和新的master(即舊的slave)通信的 # 這個腳本應(yīng)該是通用的,能被多次調(diào)用,不是針對性的。 # sentinel client-reconfig-script <master-name> <script-path> sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
網(wǎng)站題目:Redis高可用方案哨兵機制------配置文件sentinel.conf詳解
標(biāo)題URL:http://www.rwnh.cn/article0/ippoio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、小程序開發(fā)、網(wǎng)站設(shè)計公司、域名注冊、微信公眾號、電子商務(wù)
聲明:本網(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)