亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
Redis哨兵(sentinel)
哨兵是什麼?
幹什麼?
案例
架構
#步驟
安裝三臺linux
設定三臺哨兵
sentinel02
測試
哨兵運行流程和選舉原理
SDown主觀下線(Subjectively Down)
ODown客觀下線(Objectively Down)
選舉出領導者哨兵
領導者哨兵如何選出來的?
選新的master(im)
新主登基
群臣俯首
舊主拜服
哨兵使用建議
首頁 資料庫 Redis 深入搞懂Redis中的哨兵

深入搞懂Redis中的哨兵

Apr 26, 2023 pm 05:59 PM
redis 資料庫 後端

Redis哨兵詳解,哨兵搭建流程,哨兵的運作流程和選舉原理(主觀下線,客觀下線,如何選舉出哨兵leader)。

深入搞懂Redis中的哨兵

Redis哨兵(sentinel)

哨兵是什麼?

吹哨人巡查監(jiān)控後臺master主機是否有故障,如果故障了根據(jù)投票數(shù)自動將某一個從庫轉換為新主庫,繼續(xù)對外服務。 【相關推薦:Redis影片教學

俗稱,無人值守運維。

幹什麼?

  • 主從監(jiān)控:監(jiān)控主從redis庫執(zhí)行是否正常
  • 訊息通知:哨兵可以將故障轉移的結果傳送給客戶端
  • 故障轉移:將其中一個Slave作為新的Master
  • 配置中心:客戶端透過連接哨兵來獲得目前Redis服務的主節(jié)點位址

案例

架構

3個哨兵:自動監(jiān)控和維護集群,不存放數(shù)據(jù),只是吹哨者。

1主2從:用於讀取與存放資料

深入搞懂Redis中的哨兵

#步驟

  • 將redis安裝路徑下的sentinel.conf 拷貝到myredis目錄下

    cp sentinel.conf /myredis/sentinel26379.conf
  • 修改設定檔

    vim sentinel26379.conf
        
    bind 0.0.0.0
        
    # protected-mode yes 修改為 protected-mode no
    protected-mode no
    
    # daemonize no 修改為 daemonize yes
    daemonize yes
    
    # port 
    port 26379
    
    # pid文件名字,pidfile
    pidfile /var/run/redis_26379.pid
        
    # log文件名字,logfile(修改 logfile "" 為 logfile "/myredis/26379.log")
    logfile "/myredis/26379.log"
    
    # 指定當前的工作目錄(修改 dir /temp 為 dir /myredis)
    dir /myredis

    設定要監(jiān)控的master伺服器

    quorum:確認客觀下線的最少哨兵數(shù)。同意故障遷移的法定票數(shù)。

    # sentinel monitor <master-name> <ip> <redis-port> <quorum>

    設定連線master服務的密碼

    # sentinel auth-pass <master-name> <password>

    #我們知道,網(wǎng)路是不可靠的,有時候一個sentinel會因為網(wǎng)路阻塞而誤以為一個master redis已經(jīng)死掉了,在sentinel集群環(huán)境下需要多個sentinel互相溝通來確認某個master是否真的死了,quorum這個參數(shù)是進行客觀下線的一個依據(jù),意思是至少有quorum個sentinel認為這個master有故障,才會對這個master進行下線以及故障轉移。因為有的時候,某個sentinel節(jié)點可能因為自身網(wǎng)路原因,導致無法連接master,而此時master並沒有出現(xiàn)故障,所以,這就需要多個sentinel都一致認為該master有問題,才可以進行下一步操作,這保證了公平性和高可用。

安裝三臺linux

ip和port分別為

# sentinel00
192.168.157.112    26379
# sentinel01
192.168.157.113    26380
# sentinel02
192.168.157.118    26381

設定三臺哨兵

sentinelxxxx.conf檔案

sentinel00

sentinel26379.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
logfile "/myredis/sentinel26379.log"
pidfile /var/run/redis-sentinel26379.pid
dir /myredis
sentinel monitor mymaster 192.168.157.115 6379 2
sentinel auth-pass mymaster 1234

sentinel01

sentinel26380.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/sentinel26380.log"
pidfile /var/run/redis-sentinel26380.pid
dir /myredis
sentinel monitor mymaster 192.168.157.115 6379 2
sentinel auth-pass mymaster 1234

sentinel02

sentinel26381. conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26381
logfile "/myredis/sentinel26381.log"
pidfile /var/run/redis-sentinel26381.pid
dir /myredis
sentinel monitor mymaster 192.168.157.115 6379 2
sentinel auth-pass mymaster 1234

測試

  • 基於先前的redis複製,啟動1主2從測試是否主從複製是否正常,輸入info replication 檢視是否正常

  • #啟動三臺哨兵,完成監(jiān)控

    redis-sentinel /myredis/sentinel26379.conf --sentinel
    redis-sentinel /myredis/sentinel26380.conf --sentinel
    redis-sentinel /myredis/sentinel26381.conf --sentinel
  • 測試主從複製,一切良好

  • ##查看日誌

深入搞懂Redis中的哨兵

  • 檢視設定檔sentinel.conf

深入搞懂Redis中的哨兵

> 后面為自動新增內(nèi)容

-

模擬master宕機

  • master主機

    # 模擬宕機
    shudown

    ##問題

    兩臺從機資料是否正常? (yes)
    1. 會不會從剩下的兩臺機器中選出新的master?(yes)
    2. 之前的master重啟之後會不會重新上位,重新成為master? (no)
  • salve取得資料

深入搞懂Redis中的哨兵

    查看新的master

深入搞懂Redis中的哨兵

    重寫啟動原始master
  • #master不會重新上位。

深入搞懂Redis中的哨兵對比設定檔

#檔案的內(nèi)容,在執(zhí)行期間會被sentinel動態(tài)修改。 master—slave主從關係切換後,設定檔內(nèi)容會自動改變。

    sentinel6379.conf 檔案

深入搞懂Redis中的哨兵

    舊master

深入搞懂Redis中的哨兵

  • 新master

深入搞懂Redis中的哨兵

深入搞懂Redis中的哨兵

哨兵運行流程和選舉原理

當一個主從配置中的master失效后,sentinel可以選舉出一個新的master用于自動替換原master的工作,主從配置中的其他redis服務自動指向新的master同步數(shù)據(jù),一般建議sentinel采取奇數(shù)臺,防止某一臺sentinel無法連接到master導致誤切換。

SDown主觀下線(Subjectively Down)

SDOWN(主觀不可用)是單個哨兵自己主觀檢測到的關于master的狀態(tài),從sentinel的角度來看,如果發(fā)送了PING心跳后,在一定時間內(nèi)沒有收到合法的回復,就到達了SDOQN的條件。

sentinel配置文件中的 down-after-milliseconds 設置了主觀下線的時間長度(默認30秒)。

# sentinel down-after-milliseconds <masterName> <timeout>
sentinel down-after-milliseconds mymaster 30000

ODown客觀下線(Objectively Down)

ODOWN需要一定數(shù)量的sentinel,多個哨兵達成一致意見才能確認一個master客觀上已經(jīng)宕機了。

# sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor mymaster 127.0.0.1 6379 2

選舉出領導者哨兵

當主節(jié)點被判斷客觀下線后,各個哨兵節(jié)點會進行協(xié)商,先選舉出一個領導者哨兵節(jié)點,并由該領導者哨兵節(jié)點進行failover(故障遷移)

領導者哨兵如何選出來的?

Raft算法

監(jiān)視該主節(jié)點的所有哨兵都有可能被選為領導者,選舉使用的算法是Raft算法;Raft算法的基本思路是先到先得,即在一輪選舉中,哨兵A向B發(fā)送成為領導者的申請,如果B沒有同意過其他哨兵,則會同意A成為領導者。

深入搞懂Redis中的哨兵

選新的master(im)

整個過程由sentinel自己獨立完成,無需人工干涉。

新主登基

某一個slave被選中成為master

選出新的master的規(guī)則,剩余slave節(jié)點健康的前提下

  1. redis.conf文件中,優(yōu)先級slave-priority或者replica-priority最高節(jié)點(數(shù)字越小優(yōu)先級越高)
  2. 復制偏移量offset最大的從節(jié)點。
  3. 最小Run ID的從節(jié)點。

深入搞懂Redis中的哨兵

群臣俯首

  • 執(zhí)行 slaveof no one 命令讓選出來的從節(jié)點成為新的主節(jié)點,并通過 slaveof 命令讓其他節(jié)點成為其從節(jié)點。

  • sentinel leader 會對選舉出來的新 master 執(zhí)行 slaveof no one,將其提升為master節(jié)點

  • sentinel leader 向其他slave發(fā)送命令,讓剩余的slave成為新的master節(jié)點的slave。

舊主拜服

  • 將之前的已經(jīng)下線的舊master設置為新選出的新master的從節(jié)點,當舊master重新上線后,它會成為新master的從節(jié)點
  • sentinel leader 會讓原來的master降級為slave并恢復正常工作。

哨兵使用建議

  • 哨兵節(jié)點數(shù)量應該為多個,哨兵本身應該為集群,保證高可用
  • 哨兵節(jié)點數(shù)量應該是奇數(shù)
  • 各個哨兵節(jié)點的配置應該一致
  • 如果哨兵節(jié)點部署在docker等容器里面,尤其要注意端口的正確映射
  • 哨兵集群 + 主從復制,并不能保證數(shù)據(jù)零丟失

更多編程相關知識,請訪問:編程視頻?。?/p>

以上是深入搞懂Redis中的哨兵的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
如何在Windows/Linux上安裝MySQL 8.0? 如何在Windows/Linux上安裝MySQL 8.0? Jun 11, 2025 pm 03:25 PM

安裝MySQL8.0的關鍵在於按步驟操作並註意常見問題。 Windows上推薦使用MSI安裝包,步驟包括下載安裝包、運行安裝程序、選擇安裝類型、設置root密碼、啟用服務啟動,並註意端口衝突或手動配置ZIP版;Linux(如Ubuntu)則通過apt安裝,步驟為更新源、安裝服務器、運行安全腳本、檢查服務狀態(tài)及修改root認證方式;無論哪個平臺,都應修改默認密碼、創(chuàng)建普通用戶、設置防火牆、調(diào)整配置文件以優(yōu)化字符集等參數(shù),確保安全性與正常使用。

查看MongoDB中所有數(shù)據(jù)庫的方法 查看MongoDB中所有數(shù)據(jù)庫的方法 Jun 04, 2025 pm 10:42 PM

在MongoDB中查看所有數(shù)據(jù)庫的方法是輸入命令“showdbs”。 1.該命令只顯示非空數(shù)據(jù)庫。 2.可以通過“use”命令切換數(shù)據(jù)庫並插入數(shù)據(jù)使其顯示。 3.注意內(nèi)部數(shù)據(jù)庫如“l(fā)ocal”和“config”。 4.使用驅(qū)動程序時需用“l(fā)istDatabases()”方法獲取詳細信息。 5.“db.stats()”命令可查看數(shù)據(jù)庫詳細統(tǒng)計信息。

如何使用雄辯在數(shù)據(jù)庫中創(chuàng)建新記錄? 如何使用雄辯在數(shù)據(jù)庫中創(chuàng)建新記錄? Jun 14, 2025 am 12:34 AM

要使用Eloquent在數(shù)據(jù)庫中創(chuàng)建新記錄,有四種主要方法:1.使用create方法,傳入屬性數(shù)組快速創(chuàng)建記錄,如User::create(['name'=>'JohnDoe','email'=>'john@example.com']);2.使用save方法手動實例化模型並逐個賦值保存,適用於需要條件賦值或額外邏輯的場景;3.使用firstOrCreate根據(jù)搜索條件查找或創(chuàng)建記錄,避免重複數(shù)據(jù);4.使用updateOrCreate查找記錄並更新,若無則創(chuàng)建,適合處理導入數(shù)據(jù)等可能重

選擇...更新的目的是什麼? 選擇...更新的目的是什麼? Jun 11, 2025 pm 03:37 PM

themainpurposeofselect ... forupdateIstolockSelectedRowsdurwsationTopreventothersessionsSersessionsFromedIfifyingThemuntiltherthtransactionCompletesWhichenSistersIsistensistencyInconCurrentenCurrentenCurrentenVironmentsSuchasBankingSuchingandInventorySunventOndoryStemssssssss1itplaceSrow-Levellockslocksolocksallowsallow

Redis如何處理客戶的聯(lián)繫? Redis如何處理客戶的聯(lián)繫? Jun 24, 2025 am 12:02 AM

Redismanagesclientconnectionsefficientlyusingasingle-threadedmodelwithmultiplexing.First,Redisbindstoport6379andlistensforTCPconnectionswithoutcreatingthreadsorprocessesperclient.Second,itusesaneventlooptomonitorallclientsviaI/Omultiplexingmechanisms

REDIS與數(shù)據(jù)庫:有什麼限制? REDIS與數(shù)據(jù)庫:有什麼限制? Jul 02, 2025 am 12:03 AM

RedisiSlimitedByMemoryConstraintSandDataperSistersence,而ErtraditionalditionaldatienaldatabasesstrugglewithperformanceInreal-TimesCenarios.1)redisexccelsinreal-timeDatapRocessingButCachingButmmayRecomplecomplecomplexshardingforlargedAtasetSetaSets.2)

如何用PHP結合AI實現(xiàn)文本糾錯 PHP語法檢測與優(yōu)化 如何用PHP結合AI實現(xiàn)文本糾錯 PHP語法檢測與優(yōu)化 Jul 25, 2025 pm 08:57 PM

要實現(xiàn)PHP結合AI進行文本糾錯與語法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開源NLP庫;2.通過PHP的curl或Guzzle調(diào)用API並處理返回結果;3.在應用中展示糾錯信息並允許用戶選擇是否採納;4.使用php-l和PHP_CodeSniffer進行語法檢測與代碼優(yōu)化;5.持續(xù)收集反饋並更新模型或規(guī)則以提升效果。選擇AIAPI時應重點評估準確率、響應速度、價格及對PHP的支持。代碼優(yōu)化應遵循PSR規(guī)範、合理使用緩存、避免循環(huán)查詢、定期審查代碼,並藉助X

在PHP應用程序中,REDIS有哪些常見用例(例如,緩存,會話處理)? 在PHP應用程序中,REDIS有哪些常見用例(例如,緩存,會話處理)? Jun 18, 2025 am 12:32 AM

Redis在PHP應用中主要有四大核心用途:1.緩存頻繁訪問的數(shù)據(jù),如查詢結果、HTML片段等,並通過TTL控制更新頻率;2.集中存儲會話信息,解決多服務器環(huán)境下session不一致問題,配置方式為設置php.ini中的session.save_handler和session.save_path;3.實現(xiàn)限流與臨時計數(shù),例如限制每小時登錄嘗試次數(shù),利用帶過期時間的鍵進行高效計數(shù);4.構建基礎消息隊列,通過RPUSH和BLPOP操作實現(xiàn)異步任務處理,如郵件發(fā)送或圖片處理,從而提升系統(tǒng)響應速度與擴展

See all articles