redis11----監控工具 sentinel
阿新 • • 發佈:2018-01-14
不能 pri rec 運行 moni 頻繁 edi ati 就是
當master宕機了要把slave1變為master,並把slave2指向slave1。 運行時更改master-slave,config set/get,修改一臺slave(設為A)為new master 1)命令該服務不做其他redis服務的slave,命令: slaveof no one 2)修改其readonly為yes,其他的slave再指向new master A 1)命令該服務為new master A的slave,命令格式 slaveof IP port 6379:>shutdown 6378,6377>info replication "# Replicationrole:slave master_host:127.0.0.1 master_port:6379 master_link_status:down 6378:0>slaveof no one //不在是從服務器 "OK" 6378:0>info replication //現在已經是主服務器了,0個從 "# Replication role:master connected_slaves:0 6378:0>config get slave-read-only //不能是readonly的 1) "slave-read-only" 2) "yes" 6378:0>config setslave-read-only no "OK" 6378:0>config get slave-read-only 1) "slave-read-only" 2) "no" 6377:0>slaveof 127.0.0.1 6378 "OK" //原來6377,6378指向6379,現在6379宕機6378變為master6377變為6378的slave 6379:0>info replication "# Replication role:master connected_slaves:0 6378:0>info replication "# Replication role:master connected_slaves:1 slave0:ip=127.0.0.1,port=6377,state=online,offset=408,lag=0 6377:0>info replication "# Replication role:slave master_host:127.0.0.1 master_port:6378
監控工具 sentinel(就是剛才手工的操作) sentinel monitor mymaster 127.0.0.1 6379 2 //2個sentinel監控到失效了 sentinel auth-pass mymaster 012_345^678-90 ##master被當前sentinel實例認定為“失效”的間隔時間 ##如果當前sentinel與master直接的通訊中,在指定時間內沒有響應或者響應錯誤代碼,那麽當前sentinel就認為master失效(SDOWN,“主觀”失效) ##<mastername> <millseconds> 默認為30秒 sentinel down-after-milliseconds mymaster 30000 //30000毫秒,30秒 ##當前sentinel實例是否允許實施“failover”(故障轉移,把不把slave變為master) ##no表示當前sentinel為“觀察者”(只參與"投票".不參與實施failover),(一般是多臺sentinel監控一臺master,只有一臺sentinel可以修改slave為master,多臺sentlnel不能一起改。有2臺發現宕機了就宕機了),##全局中至少有一個為yes只能一個sentinel來修改。 sentinel can-failover mymaster yes // ##sentinel notification-script mymaster /var/redis/notify.sh
Sentinel不斷與master通信,獲取master的slave信息,監聽master與slave的狀態 如果某slave失效,直接通知master去除該slave,如果master失效,,是按照slave優先級(可配置), 選取1個slave做 new master,把其他slave--> new master 疑問: sentinel與master通信,如果某次因為master IO操作頻繁,導致超時, 此時,認為master失效,很武斷.解決: sentnel允許多個實例看守1個master, 當N臺(N可設置)sentinel都認為master失效,才正式失效. Sentinel.conf 選項配置: port 26379 # 端口 sentinel monitor mymaster 127.0.0.1 6379 2 , //給主機起的名字(不重即可), 當2個sentinel實例都認為master失效時,正式失效 sentinel down-after-milliseconds mymaster 30000 #多少毫秒後連接不到master認為斷開 sentinel can-failover mymaster yes #是否允許sentinel修改slave->master. 如為no,則只能監控,無權修改./ sentinel parallel-syncs mymaster 1 , #一次性修改幾個slave指向新的new master.1表示是一臺一臺的來,防止新的masterio過高而宕機 sentinel failover-timeout mymaster 900000 //15分鐘之內沒有完成剛才的所有操作則表示操作失敗,然後發送短信什麽的。 sentinel client-reconfig-script mymaster /var/redis/reconfig.sh ,# 在重新配置new master,new slave過程,可以觸發的腳本 Redis-server ./Sentinel.conf --sentinel //啟動
slave-priority 10 //多個slave的時候可以選擇哪個優先作為master,越小越靠前。 //同一個redis實例裏面復制多個配置文件,就可以開啟多個redis實例和sentinel。
80是主,77,78,79是從。80宕機後79是主,並且是改了配置文件,也就是說重啟後79仍然是主(通過info replication查看主從信息)。如果79 的數據比80 少,那麽79做主後80的數據跟79同步,那麽79的數據也會丟失。Sentinel 的配置文件也改了,
redis11----監控工具 sentinel