Redis主從同步和哨兵模式配置

sentinel.png

redis主從簡單安裝

1·從redis官網(wǎng)下載redis-4.0.14.tag.gz
2.然后解壓重斑,并進入
3.進入后先安裝

tar xzf redis--4.0.14.tar.gz
cd redis--4.0.14
make && make install

我們只有一臺服務器慎框,要配置主從結構膜毁,必須啟動多實例,我們啟動配置三個redis實例,端口分別為7379张足,8379触创,9379。
7379為主服務器为牍,8379 和9379為從服務器哼绑。
執(zhí)行完 make && make install 會在/usr/local/bin 目錄下創(chuàng)建文件
我們將這些文件都移動到當前redis的bin目錄下

cd /redis/redis7379
mkdir bin
cd /redis/redis7379/bin
mv /usr/local/bin/*  ./

配置redis.conf 端口為7379

port 7379  ##修改端口
bind 172.31.123.211 ##綁定本機Ip 使用ifconfig命令查看
loglevel debug;//修改日志級別
logfile /redis/redis7379/log/redis_7379.log ;//日志的文件路徑
pidfile /redis/redis7379/pid/redis_7379.pid ;//pid的文件路徑 pid安裝并沒有 需要收到創(chuàng)建,默認制定為/var/run/redis_7379.pid
slaveof 172.31.123.211 7379;//配置主服務器為7379

配置完畢之后 進入到bin目錄下

./redis-server ../redis.conf

ps -ef|grep redis 如果成功啟動則會出現(xiàn)下面這種情況

root     29405     1  0 10:51 ?        00:00:41 ./redis-server 172.31.123.211:7379

再次解壓一個redis 重命名為redis8379
配置redis.conf 端口為8379

port 8379  ##修改端口
bind 172.31.123.211 ##綁定本機Ip 使用ifconfig命令查看
loglevel debug;//修改日志級別
logfile /redis/redis7379/log/redis_8379.log ;//日志的文件路徑
pidfile /redis/redis7379/pid/redis_8379.pid ;//pid的文件路徑 pid安裝并沒有 需要收到創(chuàng)建碉咆,默認制定為/var/run/redis_8379.pid
slaveof 172.31.123.211 7379;//配置主服務器為7379

然后啟動./redis-server ../redis.conf

再次解壓一個redis 重命名為redis8379
配置redis.conf 端口為8379

port 8379  ##修改端口
bind 172.31.123.211 ##綁定本機Ip 使用ifconfig命令查看
loglevel debug;//修改日志級別
logfile /redis/redis8379/log/redis_8379.log ;//日志的文件路徑
pidfile /redis/redis8379/pid/redis_8379.pid ;//pid的文件路徑 pid安裝并沒有 需要收到創(chuàng)建抖韩,默認制定為/var/run/redis_8379.pid
slaveof 172.31.123.211 7379;//配置主服務器為7379

修改成功后調用./redis-cli -h 172.31.123.211 -p 7379 連接

[root@iZ8ykv3uxiy4adZ bin]# ./redis-cli -h 172.31.123.211 -p 7379
172.31.123.211:7379> 

則表明連接成功。
使用info Replication 查看

role:master ;//表明為主庫
master_host:172.31.123.211
master_port:7379
master_link_status:up

然后在主庫設置值 從庫讀取值疫铜。是否會同步

哨兵模式配置

在redis 的目錄下有sentinel.conf文件 修改redis7379目錄下的文件

port 27379
sentinel monitor mymaster 172.31.123.211 7379 1
#設定5秒內沒有響應茂浮,說明服務器掛了
sentinel down-after-milliseconds mymaster 5000
#設定15秒內master沒有活起來,就重新選舉主
sentinel failover-timeout mymaster 15000

redis8389 和redis9379中的sentinel.conf配置文件是差不多的。
Redis主從采用異步復制席揽,那么當主節(jié)點掛掉時顽馋,從節(jié)點可能沒有收到全部的同步消息,這部分未同步的消息可能就丟失了幌羞,如果主從延時過大寸谜,那么丟的消息可能會更多,sentinel(哨兵)無法保證消息不丟失新翎,但是也可能保證消息少都是程帕,他提供兩個參數(shù)住练〉貑可以限制主從延時過大

min-slaves-to-write 1 #主節(jié)點必須至少有一個從節(jié)點在進行正常復制,否則就停止對外服務喪失可用性讲逛,
min-slaves-max-lag 10 #什么時候下是正常復制或者是異常復制亏吝,如果10s內沒有收到從節(jié)點的反饋,就意味著同步不正常了

Redis哨兵模式原理:

Redis Sentinel 是一個分布式系統(tǒng)盏混,可以在一個架構中運行多個 Sentinel 進程(progress)蔚鸥, 這些進程使用流言協(xié)議(gossip protocols)來 接收關于主服務器是否下線的信息, 并使用投票協(xié)議(agreement protocols)來決定是否執(zhí)行自動故 障遷移许赃, 以及選擇哪個從服務器作為新的主服務器止喷。
Redis Sentinel 的三個任務:
1.監(jiān)控:哨兵會不定期檢查主服務器和從服務器是否運作正常。
2.提醒:當被監(jiān)控的某個主服務器出現(xiàn)異常混聊,哨兵可以通過API向管理員發(fā)送通知弹谁。
3.故障遷移:當一個主服務器不能正常工作時,哨兵會進行自動故障遷移工作句喜,它會是一個從服務器變成主服務器预愤,當一個客戶端嘗試連接故障服務器的時候,它也會向新客戶端返回新的地址咳胃。

Sentinel.conf配置文件介紹:

1.sentinel monitor <master-name> <ip> <port> <quorum>  
意思是讓哨兵做定期監(jiān)控 master-name 為哨兵的名稱 ip 和端口 quorum為當主服務器出現(xiàn)
2.sentinel down-after-milliseconds <master-name> <times>
每個哨兵節(jié)點會定期發(fā)送ping命令來判斷Redis節(jié)點和其余的哨兵節(jié)點是否是可達的 如果超過了配置的times 時間就會認為是不可達的植康。times為毫秒
3.sentinel parallel-syncs <master-name> <nums>
當主服務器故障時,每次從服務器向新的主服務器發(fā)的復制節(jié)點的個數(shù)
4.sentinel failover-timeout <master-name>  <times>
當發(fā)送故障遷移時展懈,超過了配置的時間就會故障遷移失敗
5.sentinel notification-script <master-name> <script-path>
當redis發(fā)生故障時销睁,將會調用這個腳本 script-path為腳本路徑

哨兵的定時監(jiān)控

當啟動一個哨兵(Sentinel)時會發(fā)生一下情況:
1.每隔一秒每隔哨兵都會向其余的哨兵節(jié)點和主節(jié)點以及從節(jié)點,發(fā)送一次Ping命令存崖,做一次心跳檢測冻记。
2.每隔兩秒redis的哨兵將所有監(jiān)視的主丶從節(jié)點向指定頻道上發(fā)送當前的主節(jié)點信息。
3.每隔哨兵都會每隔10秒都會向主節(jié)點和從節(jié)點發(fā)送info命令金句,獲取最新的拓撲結構圖檩赢。
主觀下線:單個哨兵認為某個服務下線,sentinel配置文件中的down-after-milliseconds設置了判斷主觀下線的時間長度,如果超過了改時間贞瞒,那么該哨兵會認為該實例以及下線了偶房。
客觀下線:當主觀下線的節(jié)點是主節(jié)點時,該節(jié)點會根據(jù)sentinel is-masterdown-by-addr <quorum>命令哨兵會征求其他節(jié)點的哨兵的意見军浆,如果認為主觀下線的票數(shù)大于 quorum棕洋,此時哨兵節(jié)點就會認為該節(jié)點有問題,就會客觀下線了乒融。

哨兵主節(jié)點選取流程

如果主節(jié)點被判定為客觀下線后掰盘,就要選取一個從節(jié)點來當主節(jié)點。
1.每隔從節(jié)點都可能成為主節(jié)點赞季,當他確定主節(jié)點下線后愧捕,會向其他節(jié)點發(fā)送
is-master-down-by-addr 命令,來詢問是否可以將自己設置為主節(jié)點申钩,
2.當其它哨兵收到此命令時次绘,可以同意或者拒絕它成為領導者;
3.如果哨兵3發(fā)現(xiàn)自己在選舉的票數(shù)大于等于num(sentinels)/2+1時撒遣,將成為領導者邮偎,如果沒有超過,繼續(xù)選舉…………

自動故障轉移機制

sentinel狀態(tài)數(shù)據(jù)結構中保存了主服務的所有從服務信息义黎,領頭sentinel按照如下的規(guī)則從服務列表中挑選出新的主服務過濾掉主觀下線的節(jié)點
選擇slave-priority最高的節(jié)點禾进,如果由則返回沒有就繼續(xù)選擇
選擇出復制偏移量最大的系節(jié)點,因為復制便宜量越大則數(shù)據(jù)復制的越完整廉涕,如果由就返回了泻云,沒有就繼續(xù)
選擇run_id最小的節(jié)點

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市火的,隨后出現(xiàn)的幾起案子壶愤,更是在濱河造成了極大的恐慌,老刑警劉巖馏鹤,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件征椒,死亡現(xiàn)場離奇詭異,居然都是意外死亡湃累,警方通過查閱死者的電腦和手機勃救,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來治力,“玉大人蒙秒,你說我怎么就攤上這事∠常” “怎么了晕讲?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我瓢省,道長弄息,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任勤婚,我火速辦了婚禮摹量,結果婚禮上,老公的妹妹穿的比我還像新娘馒胆。我一直安慰自己缨称,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布祝迂。 她就那樣靜靜地躺著睦尽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪液兽。 梳的紋絲不亂的頭發(fā)上骂删,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音四啰,去河邊找鬼。 笑死粗恢,一個胖子當著我的面吹牛柑晒,可吹牛的內容都是我干的。 我是一名探鬼主播眷射,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼匙赞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妖碉?” 一聲冷哼從身側響起涌庭,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎欧宜,沒想到半個月后坐榆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡冗茸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年席镀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夏漱。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡豪诲,死狀恐怖,靈堂內的尸體忽然破棺而出挂绰,到底是詐尸還是另有隱情屎篱,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站交播,受9級特大地震影響专肪,放射性物質發(fā)生泄漏。R本人自食惡果不足惜堪侯,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一嚎尤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧伍宦,春花似錦芽死、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卖毁,卻和暖如春揖曾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亥啦。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工炭剪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翔脱。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓奴拦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親届吁。 傳聞我的和親對象是個殘疾皇子错妖,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容

  • 普通主從架構(讀寫分離) 問題 持久化解決了單機redis的數(shù)據(jù)保存問題,但是redis還是存在以下兩個問題: 假...
    黃二的NPE閱讀 1,623評論 0 8
  • 一疚沐、Redis主從復制 主從復制:主節(jié)點負責寫數(shù)據(jù)暂氯,從節(jié)點負責讀數(shù)據(jù),主節(jié)點定期把數(shù)據(jù)同步到從節(jié)點保證數(shù)據(jù)的一致性...
    愛情小傻蛋閱讀 945評論 0 0
  • 本文將要介紹的哨兵亮蛔,它基于 Redis 主從復制痴施,主要作用便是解決主節(jié)點故障恢復的自動化問題,進一步提高系統(tǒng)的高可...
    java成功之路閱讀 2,201評論 0 4
  • 所謂的強有效市場尔邓,就是在這個市場里拼命研究晾剖,也很難創(chuàng)造超額收益。 像歐美等股票市場就是強有效市場梯嗽,散戶努力研究各種...
    人生金三角閱讀 2,055評論 1 1
  • 今天齿尽,聽了喜馬拉雅FM后在葉武濱老師時間管理那里付費99買了《時間管理10堂課》,并加了一個關于討論交流學習時...
    愛笑Super陸閱讀 113評論 0 1