欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Redis中哨兵模式的示例分析

小編給大家分享一下redis中哨兵模式的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供嘉禾網(wǎng)站建設(shè)、嘉禾做網(wǎng)站、嘉禾網(wǎng)站設(shè)計、嘉禾網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、嘉禾企業(yè)網(wǎng)站模板建站服務(wù),十余年嘉禾做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

主從切換技術(shù)的方法是:

  • 當(dāng)主服務(wù)器宕機(jī)時,需要將從服務(wù)器手動切換(slaveof no one)到主從服務(wù)器,這需要人工干預(yù)。

  • 這既費(fèi)時又費(fèi)力,但也會在一段時間內(nèi)導(dǎo)致服務(wù)不可用。 這不是推薦的方法。

  • 更多的時間,我們優(yōu)先考慮哨兵模式,這是當(dāng)前企業(yè)應(yīng)用程序的主流模式。 Redis Sentinel是Redis的高度可用的實(shí)現(xiàn)。

  • Sentinel是管理多個Redis實(shí)例的工具。 它可以監(jiān)視,通知Redis并自動進(jìn)行故障轉(zhuǎn)移。

Redis Sentinel的基本概念

主從復(fù)制和Sentinel高可用性架構(gòu)的示意圖

Redis中哨兵模式的示例分析

Redis Sentinel架構(gòu)

Redis中哨兵模式的示例分析

Redis Sentinel的主要功能Sentinel的主要功能包括:

主節(jié)點(diǎn)生存檢測,主從操作檢測,自動故障轉(zhuǎn)移以及主從切換。

  • Redis的最小標(biāo)記配置是一臺主機(jī)和一臺從機(jī);

  • Redis的Sentinel系統(tǒng)可用于管理多個Redis服務(wù)器。

  • 系統(tǒng)可以執(zhí)行以下四個任務(wù)

1、監(jiān)視:Sentinel會不斷檢查主服務(wù)器和從屬服務(wù)器是否正常運(yùn)行;
2、通知:當(dāng)受監(jiān)控的Redis服務(wù)器出現(xiàn)問題時,Sentinel會通過API腳本向管理員或其他應(yīng)用程序發(fā)送通知;
3、自動故障轉(zhuǎn)移:當(dāng)主節(jié)點(diǎn)無法正常工作時,Sentinel將啟動自動故障轉(zhuǎn)移操作。它將與發(fā)生故障的主節(jié)點(diǎn)處于主從關(guān)系的從節(jié)點(diǎn)之一升級到新的主節(jié)點(diǎn),并將其他從節(jié)點(diǎn)指向新的主節(jié)點(diǎn);
4、 配置提供程序:在Redis Sentinel模式下,初始化客戶端應(yīng)用程序時,它將連接Sentinel節(jié)點(diǎn)集合以獲取主節(jié)點(diǎn)的信息;

Redis Sentinel如何工作

  • 當(dāng)哨兵節(jié)點(diǎn)連接到Redis實(shí)例時,它將創(chuàng)建兩個連接:cmd和pub/sub。 Sentinel通過cmd連接將命令發(fā)送到Redis,并通過pub/sub連接到Redis實(shí)例上的其他哨兵實(shí)例。

  • Sentinel與Redis主節(jié)點(diǎn)和從節(jié)點(diǎn)進(jìn)行交互的命令

  • 每個Sentinel每秒向其已知的主實(shí)例,從屬實(shí)例和其他Sentinel實(shí)例發(fā)送一個PING命令。

Redis中哨兵模式的示例分析

  • 如果一個實(shí)例花費(fèi)的時間比上次對PING命令的有效回復(fù)(毫秒)后down所指定的時間更長,那么Sentinel會將該實(shí)例標(biāo)記為主觀離線。

Redis中哨兵模式的示例分析

  • 如果將主服務(wù)器標(biāo)記為主觀注銷,則將監(jiān)視主服務(wù)器的所有Sentinel節(jié)點(diǎn)以確認(rèn)主服務(wù)器確實(shí)已經(jīng)每秒進(jìn)入一次主觀注銷狀態(tài)。

Redis中哨兵模式的示例分析

  • 如果將主服務(wù)器標(biāo)記為主觀注銷,并且在指定的時間范圍內(nèi)有足夠的哨兵(至少配置文件中指定的數(shù)量)與該判斷相符,則將主服務(wù)器標(biāo)記為客觀下線。

Redis中哨兵模式的示例分析

  • 通常,每個Sentinel每10秒向其所有已知的主服務(wù)器和從服務(wù)器發(fā)送INFO命令。 當(dāng)Sentinel將主服務(wù)器標(biāo)記為脫機(jī)時,Sentinel發(fā)送INFO命令給脫機(jī)主服務(wù)器的所有從屬服務(wù)器的頻率將從每10秒一次更改為每秒一次。

Redis中哨兵模式的示例分析

  • Sentinel和其他哨兵協(xié)商主節(jié)點(diǎn)的狀態(tài)。如果主節(jié)點(diǎn)處于SDOWN狀態(tài),投票將自動選擇新的主節(jié)點(diǎn)。將其余的從節(jié)點(diǎn)指向新的主節(jié)點(diǎn)以進(jìn)行數(shù)據(jù)復(fù)制

Redis中哨兵模式的示例分析

  • 如果沒有足夠的哨兵以允許主服務(wù)器注銷,則將刪除主服務(wù)器的客觀注銷狀態(tài)。 當(dāng)主服務(wù)器對Sentinel的PING命令返回有效答復(fù)時,主服務(wù)器的主觀脫機(jī)狀態(tài)將被刪除。

Redis中哨兵模式的示例分析

  • note

健壯的Redis Sentinel群集應(yīng)至少使用三個Sentinel實(shí)例,并確保將這些實(shí)例放置在不同的計算機(jī)上,甚至放置在不同的物理區(qū)域上.
Sentinel無法保證強(qiáng)一致性。 常見客戶端應(yīng)用程序庫中支持Sentinel。
Sentinel需要不斷測試和觀察以確保高可用性

測試

  • 創(chuàng)建配置文件

Redis中哨兵模式的示例分析

內(nèi)容簡單配置如下:

port 16379  # 哨兵端口號
daemonize yes
sentinel monitor master 127.0.0.1 6379 1    # 監(jiān)視master
protected-mode no
logfile "/usr/local/bin/sentinel-1/sentinel-1.log"   # 日志文件
  • 先啟動redis設(shè)置集群,啟動redis-cli,設(shè)6379為master

Redis中哨兵模式的示例分析

  • 再啟動sentinel

sudo redis-sentinel sentinel-1/sentinel.conf

Redis中哨兵模式的示例分析

  • 關(guān)閉6379

Redis中哨兵模式的示例分析

  • 查看另外兩個redis-cli的角色情況

Redis中哨兵模式的示例分析

  • 再啟動6379

Redis中哨兵模式的示例分析

  • 查看sentinel日志

Redis中哨兵模式的示例分析

sentinel.conf說明

# Example sentinel.conf

# *** IMPORTANT ***
# 綁定IP地址
# bind 127.0.0.1 192.168.1.1
# 保護(hù)模式(是否禁止外部鏈接,除綁定的ip地址外)
# protected-mode no

# port <sentinel-port>
# 此Sentinel實(shí)例運(yùn)行的端口
port 26379

# 默認(rèn)情況下,Redis Sentinel不作為守護(hù)程序運(yùn)行。 如果需要,可以設(shè)置為 yes。
daemonize no

# 啟用守護(hù)進(jìn)程運(yùn)行后,Redis將在/var/run/redis-sentinel.pid中寫入一個pid文件
pidfile /var/run/redis-sentinel.pid

# 指定日志文件名。 如果值為空,將強(qiáng)制Sentinel日志標(biāo)準(zhǔn)輸出。守護(hù)進(jìn)程下,如果使用標(biāo)準(zhǔn)輸出進(jìn)行日志記錄,則日志將發(fā)送到/dev/null
logfile ""

# sentinel announce-ip <ip>
# sentinel announce-port <port>
#
# 上述兩個配置指令在環(huán)境中非常有用,因為NAT可以通過非本地地址從外部訪問Sentinel。
#
# 當(dāng)提供announce-ip時,Sentinel將在通信中聲明指定的IP地址,而不是像通常那樣自動檢測本地地址。
#
# 類似地,當(dāng)提供announce-port 有效且非零時,Sentinel將宣布指定的TCP端口。
#
# 這兩個選項不需要一起使用,如果只提供announce-ip,Sentinel將宣告指定的IP和“port”選項指定的服務(wù)器端口。
# 如果僅提供announce-port,Sentinel將通告自動檢測到的本地IP和指定端口。
#
# Example:
#
# sentinel announce-ip 1.2.3.4

# dir <working-directory>
# 每個長時間運(yùn)行的進(jìn)程都應(yīng)該有一個明確定義的工作目錄。對于Redis Sentinel來說,/tmp就是自己的工作目錄。
dir /tmp

# sentinel monitor <master-name> <ip> <redis-port> <quorum>
#
# 告訴Sentinel監(jiān)聽指定主節(jié)點(diǎn),并且只有在至少<quorum>哨兵達(dá)成一致的情況下才會判斷它 O_DOWN 狀態(tài)。
#
#
# 副本是自動發(fā)現(xiàn)的,因此您無需指定副本。
# Sentinel本身將重寫此配置文件,使用其他配置選項添加副本。另請注意,當(dāng)副本升級為主副本時,將重寫配置文件。
#
# 注意:主節(jié)點(diǎn)(master)名稱不能包含特殊字符或空格。
# 有效字符可以是 A-z 0-9 和這三個字符 ".-_".
sentinel monitor mymaster 127.0.0.1 6379 2

# 如果redis配置了密碼,那這里必須配置認(rèn)證,否則不能自動切換
# Example:
#
# sentinel auth-pass mymaster MySUPER--secret-0123passw0rd

# sentinel down-after-milliseconds <master-name> <milliseconds>
#
# 主節(jié)點(diǎn)或副本在指定時間內(nèi)沒有回復(fù)PING,便認(rèn)為該節(jié)點(diǎn)為主觀下線 S_DOWN 狀態(tài)。
#
# 默認(rèn)是30秒
sentinel down-after-milliseconds mymaster 30000

# sentinel parallel-syncs <master-name> <numreplicas>
#
# 在故障轉(zhuǎn)移期間,多少個副本節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步
sentinel parallel-syncs mymaster 1

# sentinel failover-timeout <master-name> <milliseconds>
#
# 指定故障轉(zhuǎn)移超時(以毫秒為單位)。 它以多種方式使用:
#
# - 在先前的故障轉(zhuǎn)移之后重新啟動故障轉(zhuǎn)移所需的時間已由給定的Sentinel針對同一主服務(wù)器嘗試,是故障轉(zhuǎn)移超時的兩倍。
#
# - 當(dāng)一個slave從一個錯誤的master那里同步數(shù)據(jù)開始計算時間。直到slave被糾正為向正確的master那里同步數(shù)據(jù)時。
#
# - 取消已在進(jìn)行但未生成任何配置更改的故障轉(zhuǎn)移所需的時間
#
# - 當(dāng)進(jìn)行failover時,配置所有slaves指向新的master所需的最大時間。
#   即使過了這個超時,slaves依然會被正確配置為指向master。
#
# 默認(rèn)3分鐘
sentinel failover-timeout mymaster 180000

# 腳本執(zhí)行
#
# sentinel notification-script和sentinel reconfig-script用于配置調(diào)用的腳本,以通知系統(tǒng)管理員或在故障轉(zhuǎn)移后重新配置客戶端。
# 腳本使用以下規(guī)則執(zhí)行以進(jìn)行錯誤處理:
#
# 如果腳本以“1”退出,則稍后重試執(zhí)行(最多重試次數(shù)為當(dāng)前設(shè)置的10次)。
#
# 如果腳本以“2”(或更高的值)退出,則不會重試執(zhí)行。
#
# 如果腳本因為收到信號而終止,則行為與退出代碼1相同。
#
# 腳本的最長運(yùn)行時間為60秒。 達(dá)到此限制后,腳本將以SIGKILL終止,并重試執(zhí)行。

# 通知腳本
#
# sentinel notification-script <master-name> <script-path>
#
# 為警告級別生成的任何Sentinel事件調(diào)用指定的通知腳本(例如-sdown,-odown等)。
# 此腳本應(yīng)通過電子郵件,SMS或任何其他消息傳遞系統(tǒng)通知系統(tǒng)管理員 監(jiān)控的Redis系統(tǒng)出了問題。
#
# 使用兩個參數(shù)調(diào)用腳本:第一個是事件類型,第二個是事件描述。
#
# 該腳本必須存在且可執(zhí)行,以便在提供此選項時啟動sentinel。
#
# 舉例:
#
# sentinel notification-script mymaster /var/redis/notify.sh

# 客戶重新配置腳本
#
# sentinel client-reconfig-script <master-name> <script-path>
#
# 當(dāng)主服務(wù)器因故障轉(zhuǎn)移而變更時,可以調(diào)用腳本執(zhí)行特定于應(yīng)用程序的任務(wù),以通知客戶端,配置已更改且主服務(wù)器地址已經(jīng)變更。
#
# 以下參數(shù)將傳遞給腳本:
#
# <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
#
# <state> 目前始終是故障轉(zhuǎn)移 "failover"
# <role> 是 "leader" 或 "observer"
#
# 參數(shù) from-ip, from-port, to-ip, to-port 用于傳遞主服務(wù)器的舊地址和所選副本的新地址。
#
# 舉例:
#
# sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

# 安全
# 避免腳本重置,默認(rèn)值yes
# 默認(rèn)情況下,SENTINEL SET將無法在運(yùn)行時更改notification-script和client-reconfig-script。
# 這避免了一個簡單的安全問題,客戶端可以將腳本設(shè)置為任何內(nèi)容并觸發(fā)故障轉(zhuǎn)移以便執(zhí)行程序。
sentinel deny-scripts-reconfig yes

# REDIS命令重命名
#
#
# 在這種情況下,可以告訴Sentinel使用不同的命令名稱而不是正常的命令名稱。
# 例如,如果主“mymaster”和相關(guān)副本的“CONFIG”全部重命名為“GUESSME”,我可以使用:
#
# SENTINEL rename-command mymaster CONFIG GUESSME
#
# 設(shè)置此類配置后,每次Sentinel使用CONFIG時,它將使用GUESSME。 請注意,實(shí)際上不需要尊重命令案例,因此在上面的示例中寫“config guessme”是相同的。
#
# SENTINEL SET也可用于在運(yùn)行時執(zhí)行此配置。
#
# 為了將命令設(shè)置回其原始名稱(撤消重命名),可以將命令重命名為它自身:
#
# SENTINEL rename-command mymaster CONFIG CONFIG

以上是“Redis中哨兵模式的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站欄目:Redis中哨兵模式的示例分析
文章源于:http://chinadenli.net/article24/gisgce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、定制開發(fā)、微信公眾號、定制網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)