最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis搭建哨兵模式實(shí)現(xiàn)一主兩從三哨兵

 更新時(shí)間:2024年08月30日 10:05:13   作者:潞哥的博客  
本文主要介紹了redis搭建哨兵模式實(shí)現(xiàn)一主兩從三哨兵,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、Redis 哨兵模式:

哨兵的核心功能:在主從復(fù)制的基礎(chǔ)上,哨兵引入了主節(jié)點(diǎn)的自動(dòng)故障轉(zhuǎn)移

1、哨兵模式原理:

哨兵:是一個(gè)分布式系統(tǒng),用于對(duì)主從結(jié)構(gòu)中的每臺(tái)服務(wù)器進(jìn)行監(jiān)控,當(dāng)出現(xiàn)故障時(shí)通過(guò)投票機(jī)制選擇新的Master 并將所有Slave 連接到新的 Master。所以整個(gè)運(yùn)行哨兵的集群的數(shù)量不得少于3個(gè)節(jié)點(diǎn)。

2、哨兵模式的作用:

  • 監(jiān)控:哨兵會(huì)不斷地檢查主節(jié)點(diǎn)和從節(jié)點(diǎn)是否運(yùn)作正常。

  • 自動(dòng)故障轉(zhuǎn)移:當(dāng)主節(jié)點(diǎn)不能正常工作時(shí),哨兵會(huì)開(kāi)始自動(dòng)故障轉(zhuǎn)移操作,它會(huì)將失效主節(jié)點(diǎn)的其中一個(gè)從節(jié)點(diǎn)升級(jí)為新的主節(jié)點(diǎn),并讓其他從節(jié)點(diǎn)改為復(fù)制新的主節(jié)點(diǎn)。

  • 通知提醒:哨兵可以將故障轉(zhuǎn)移的結(jié)果發(fā)送給客戶端

3、哨兵的結(jié)構(gòu):

  • 哨兵節(jié)點(diǎn):哨兵系統(tǒng)由一個(gè)或多個(gè)哨兵節(jié)點(diǎn)組成,哨兵節(jié)點(diǎn)就是特殊的redis節(jié)點(diǎn),不存儲(chǔ)數(shù)據(jù)

  • 數(shù)據(jù)節(jié)點(diǎn):主節(jié)點(diǎn)和從節(jié)點(diǎn)都是數(shù)據(jù)節(jié)點(diǎn)

注意:

哨兵的啟動(dòng)依賴于主從模式,所以須把主從模式安裝好的情況下再去做哨兵模式,所有節(jié)點(diǎn)上都需要部署哨兵模式,哨兵模式會(huì)監(jiān)控所有的Redis工作節(jié)點(diǎn)是否正常。

4、故障轉(zhuǎn)移機(jī)制:

由哨兵節(jié)點(diǎn)定期監(jiān)控主節(jié)點(diǎn)是否出現(xiàn)了故障,每個(gè)哨兵節(jié)點(diǎn)每隔1秒會(huì)向主節(jié)點(diǎn)、從節(jié)點(diǎn)及其它哨兵節(jié)點(diǎn)發(fā)送一次ping命令做一次心跳檢測(cè)。 如果主節(jié)點(diǎn)在一定時(shí)間范圍內(nèi)不回復(fù)或者是回復(fù)一個(gè)錯(cuò)誤消息,那么這個(gè)哨兵就會(huì)認(rèn)為這個(gè)主節(jié)點(diǎn)主觀下線了(單方面的),當(dāng)超過(guò)半數(shù)哨兵節(jié)點(diǎn)認(rèn)為該主節(jié)點(diǎn)下線了,這樣就客觀下線了。 此時(shí)哨兵節(jié)點(diǎn)會(huì)通過(guò)Raft算法〈選舉算法)實(shí)現(xiàn)選舉機(jī)制共同選舉出一個(gè)哨兵節(jié)點(diǎn)為leader,來(lái)負(fù)責(zé)處理主節(jié)點(diǎn)的故障轉(zhuǎn)移和通知。

故障轉(zhuǎn)移過(guò)程如下:

● 將某一個(gè)從節(jié)點(diǎn)升級(jí)為新的主節(jié)點(diǎn),讓其它從節(jié)點(diǎn)指向新的主節(jié)點(diǎn);

● 若原主節(jié)點(diǎn)恢復(fù)也變成從節(jié)點(diǎn),并指向新的主節(jié)點(diǎn);

● 通知客戶端主節(jié)點(diǎn)已經(jīng)更換。

主節(jié)點(diǎn)的選舉條件:

  • 過(guò)濾掉不健康的(已下線的),沒(méi)有回復(fù)哨兵ping響應(yīng)的從節(jié)點(diǎn)

  • 選擇配置文件中從節(jié)點(diǎn)優(yōu)先級(jí)最高的(replication-priority,默認(rèn)值為100)

  • 選擇復(fù)制偏移量最大的,也就是復(fù)制最完整的從節(jié)點(diǎn)。

二、案例環(huán)境

服務(wù)器
masterCentos7.9192.168.10.128redis-5.0.9.tar.gz
slave1Centos7.9192.168.10.129redis-5.0.9.tar.gz
salve2Centos7.9192.168.10.130redis-5.0.9.tar.gz

1.關(guān)閉防火墻安全內(nèi)核機(jī)制,所有節(jié)點(diǎn)全部執(zhí)行

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

2.所有節(jié)點(diǎn)分別搭建網(wǎng)絡(luò)yum源 ,需要聯(lián)網(wǎng)

[root@localhost ~]# yum clean all && yum makecache

3.分別修改主機(jī)名

[root@localhost ~]hostnamectl set-hostname master  #192.168.10.128
[root@localhost ~]hostnamectl set-hostname slave1  #192.168.10.129
[root@localhost ~]hostnamectl set-hostname slave2  #192.168.10.130

4.所有節(jié)點(diǎn)修改hosts文件

[root@localhost ~]# cat >>/etc/hosts<< EOF
192.168.10.128 matser:7
192.168.10.129 slave1
192.168.10.130 slave2
EOF

三、實(shí)驗(yàn)部署

主從部署

1.所有節(jié)點(diǎn)安裝redis

#安裝編譯工具
yum -y install gcc gcc-c++ make
cd  /usr/src
wget -P /usr/src http://download.redis.io/releases/redis-5.0.9.tar.gz
tar -zxvf redis-5.0.9.tar.gz
cd redis-5.0.9/
make &&  make PREFIX=/usr/local/redis install
ln -s /usr/local/redis/bin/* /usr/local/bin/
cd /usr/src/redis-5.0.9/utils/
./install_server.sh
#出現(xiàn)Please select the redis port for this instance: [6379]一直回車直達(dá)出現(xiàn)Please select the redis executable path [] 手動(dòng)輸入/usr/local/redis/bin/redis-server
netstat -lnupt | grep redis
cd /usr/lib/systemd/system/
cat >>redis.service<< EOF
[Unit]
Description=redis-server
After=network.target
?
[Service]
Type=forking
# ExecStart需要按照實(shí)際情況修改成自己的地址
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
PrivateTmp=true
?
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
/etc/init.d/redis_6379 stop
ps -ef|grep redis
systemctl start redis
systemctl status redis

2.修改Master節(jié)點(diǎn)的配置文件

[root@master ~]# cp /etc/redis/6379.conf{,.bak}
[root@master ~]# vim /etc/redis/6379.conf
?
bind 0.0.0.0                       #70行,注釋掉bind項(xiàng),或修改為0.0.0.0,默認(rèn)監(jiān)聽(tīng)所有網(wǎng)卡
daemonize yes                      #137行,開(kāi)啟守護(hù)進(jìn)程
logfile /var/log/redis_6379.log    #172行,指定日志文件目錄
dir /var/lib/redis/6379            #264行,指定工作目錄
requirepass 123456                 #7508行,指定redis登錄密碼,可不設(shè)置
appendonly yes                     #700行,開(kāi)啟AOF持久化功能
?
#重啟redis
[root@master ~]#systemctl start redis

3.修改slave1和slave2兩個(gè)從節(jié)點(diǎn)

[root@slave1 ~]# cp /etc/redis/6379.conf{,.bak}
[root@slave1 ~]# vim /etc/redis/6379.conf
?
70 bind 0.0.0.0
#將監(jiān)聽(tīng)端口改為任意端口
137 daemonize yes
#開(kāi)啟守護(hù)進(jìn)程
172 logfile /var/log/redis_6379.log
#指定日志文件目錄
264 dir /var/lib/redis/6379
#指定工作目錄
287 replicaof 192.168.111.10 6379
#指定主節(jié)點(diǎn)的ip 和端口
700 appendonly yes
#開(kāi)啟 AOF持久化
?
#重啟slave1節(jié)點(diǎn)和slave2節(jié)點(diǎn)redis服務(wù)
[root@slave1 ~]# systemctl restart reids
[root@slave2 ~]# systemctl restart reids

4.驗(yàn)證主從效果

在Master節(jié)點(diǎn)上看日志

[root@master ~]#tail -f /var/log/redis_6379.log
[root@master ~]#redis-cli         #登錄redis
127.0.0.1:6379> info replication   #查看
127.0.0.1:6379> set k1 1         #在主庫(kù)創(chuàng)建文件在從庫(kù)查看
OK
127.0.0.1:6379> get k1        存在
"1"
127.0.0.1:6379> 

在master上動(dòng)態(tài)查看日志:

在master上驗(yàn)證從節(jié)點(diǎn)

四、哨兵部署

[root@master ~]# cd /usr/src/redis-5.0.9/

1.修改哨兵模式的配置文件(所有節(jié)點(diǎn)操作)

[root@master redis-5.0.9]# cp sentinel.conf{,.bak}
[root@master redis-5.0.9]# vim sentinel.conf
#修改配置文件
17  protected-mode no
#關(guān)閉保護(hù)模式
21 port 26379
#哨兵默認(rèn)端口號(hào) 26379
26 daemonize yes
#開(kāi)啟后臺(tái)運(yùn)行
36 logfile "/var/log/sentinel.log
#指定日志目錄
65 dir "/var/lib/redis/6379"
#數(shù)據(jù)文件
84 sentinel monitor mymaster 192.168.10.128 6379 2
#改變master節(jié)點(diǎn)地址,指定該哨兵節(jié)點(diǎn)監(jiān)控192.168.10。128:6379這個(gè)主節(jié)點(diǎn),該主節(jié)點(diǎn)的名稱是mymaster,最后的2的含義與主節(jié)點(diǎn)的故障判定有關(guān):至少需要2個(gè)哨兵節(jié)點(diǎn)同意,才能判定主節(jié)點(diǎn)故障并進(jìn)行故障轉(zhuǎn)移
113 sentinel down-after-milliseconds mymaster 30000
#可以修改時(shí)間,判定服務(wù)器down掉的時(shí)間周期,默認(rèn)30000毫秒(30秒)
146 sentinel failover-timeout mymaster 180000
#故障切換時(shí)間,故障節(jié)點(diǎn)的最大超時(shí)時(shí)間為180000 (180秒 )
[root@master redis-5.0.9]# scp sentinel.conf root@192.168.10.129:`pwd`
[root@master redis-5.0.9]# scp sentinel.conf root@192.168.10.130:`pwd`

2.啟動(dòng)哨兵模式所有節(jié)點(diǎn)都要啟動(dòng)

#注意:先啟主節(jié)點(diǎn)master,再啟從節(jié)點(diǎn)slave

cd /usr/src/redis-5.0.9/
[root@master redis-5.0.9]# redis-sentinel sentinel.conf &
[1] 15986
[root@slave1 redis-5.0.9]# redis-sentinel sentinel.conf &
[1] 61088
[root@slave2 redis-5.0.9]# redis-sentinel sentinel.conf &
[1] 66369

3.在master查看哨兵信息

所有節(jié)點(diǎn)都可以查看哨兵info sentinel

[root@master redis-5.0.9]# redis-cli -p 26379 info Sentinel

五、驗(yàn)證哨兵,模擬故障

[root@master redis-5.0.9]# ps -ef | grep redis
[root@master redis-5.0.9]# systemctl stop reids      #也可以殺死 Master 節(jié)點(diǎn)上redis-server的進(jìn)程號(hào)
[root@master ~]# tail -f /var/log/sentinel.log  #驗(yàn)證master是轉(zhuǎn)換至從服務(wù)器</span>

在Slave1上查看是否轉(zhuǎn)換成功

[root@slave1 redis-5.0.9]# redis-cli -p 26379 INFO Sentinel

在Slave2上查看是否轉(zhuǎn)換成功

[root@slave2 redis-5.0.9]# redis-cli -p 26379 INFO Sentinel

當(dāng)原來(lái)的master修復(fù)后會(huì)做為slave從新加入

[root@master redis-5.0.9]# redis-cli -p 26379
127.0.0.1:26379> info

將權(quán)重值調(diào)成默認(rèn)方便下次選舉

[root@slave1 redis-5.0.9]# redis-cli -h 192.168.10.128 -p 6379 config set slave-priority 100
[root@slave1 redis-5.0.9]# redis-cli -h 192.168.10.129 -p 6379 config set slave-priority 100
[root@slave1 redis-5.0.9]# redis-cli -h 192.168.10.130 -p 6379 config set slave-priority 100

總結(jié) 哨兵系統(tǒng)的搭建過(guò)程,有幾點(diǎn)需要注意:

哨兵系統(tǒng)中的主從節(jié)點(diǎn),與普通的主從節(jié)點(diǎn)并沒(méi)有什么區(qū)別,故障發(fā)現(xiàn)和轉(zhuǎn)移是由哨兵來(lái)控制和完成的。

哨兵節(jié)點(diǎn)本質(zhì)上是Redis節(jié)點(diǎn).

每個(gè)哨兵節(jié)點(diǎn),只需要配置監(jiān)控主節(jié)點(diǎn),便可以自動(dòng)發(fā)現(xiàn)其他的哨兵節(jié)點(diǎn)和從節(jié)點(diǎn).

在哨兵節(jié)點(diǎn)啟動(dòng)和故障轉(zhuǎn)移階段,各個(gè)節(jié)點(diǎn)的配置文件會(huì)被重寫(xiě)(Config Rewrite)。

故障轉(zhuǎn)移分三步

1.從下線的主服務(wù)的所有從服務(wù)里面挑選一個(gè)從服務(wù), 將其轉(zhuǎn)成主服務(wù)

2.已下線主服務(wù)的所有從服務(wù)改為復(fù)制新的主服務(wù) 挑選出新的主服務(wù)之后,領(lǐng)頭sentinel 向原主服務(wù)的從服務(wù)發(fā)送 slaveof 新主服務(wù) 的命令,復(fù)制新master。

3.將已下線的主服務(wù)設(shè)置成新的主服務(wù)的從服務(wù), 當(dāng)其回復(fù)正常時(shí),復(fù)制新的主服務(wù),變成新的主服務(wù)的從服務(wù) 當(dāng)已下線的服務(wù)重新上線時(shí),sentinel會(huì)向其發(fā)送slaveof命令, 讓其成為新主的從。

查看[root@master redis-5.0.9]下的master節(jié)點(diǎn)信息

sentinel master imooc-master

查看[root@master redis-5.0.9]下的slaves節(jié)點(diǎn)信息

sentinel slaves imooc-master

查看[root@master redis-5.0.9]下的哨兵節(jié)點(diǎn)信息

sentinel sentinels imooc-master

到此這篇關(guān)于redis搭建哨兵模式實(shí)現(xiàn)一主兩從三哨兵的文章就介紹到這了,更多相關(guān)redis 一主兩從三哨兵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis集群擴(kuò)容數(shù)據(jù)遷移方案分析

    Redis集群擴(kuò)容數(shù)據(jù)遷移方案分析

    本文主要介紹了Redis集群擴(kuò)容數(shù)據(jù)遷移方案分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-02-02
  • Redis集群搭建(主從模式、哨兵模式、集群模式)

    Redis集群搭建(主從模式、哨兵模式、集群模式)

    本文主要介紹了Redis集群搭建,主要包括主從模式、哨兵模式、集群模式這三種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • Redis未授權(quán)訪問(wèn)配合SSH key文件利用詳解

    Redis未授權(quán)訪問(wèn)配合SSH key文件利用詳解

    這篇文章主要給大家介紹了關(guān)于Redis未授權(quán)訪問(wèn)配合SSH key文件利用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Redis實(shí)現(xiàn)訂單過(guò)期刪除的方法步驟

    Redis實(shí)現(xiàn)訂單過(guò)期刪除的方法步驟

    本文主要介紹了Redis實(shí)現(xiàn)訂單過(guò)期刪除的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Redis遠(yuǎn)程字典服務(wù)器?hash類型示例詳解

    Redis遠(yuǎn)程字典服務(wù)器?hash類型示例詳解

    這篇文章主要介紹了Redis遠(yuǎn)程字典服務(wù)器?hash類型示例詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • Redis概述及l(fā)inux安裝redis的詳細(xì)教程

    Redis概述及l(fā)inux安裝redis的詳細(xì)教程

    這篇文章主要介紹了Redis概述及l(fā)inux安裝redis的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Redis實(shí)現(xiàn)Session持久化的示例代碼

    Redis實(shí)現(xiàn)Session持久化的示例代碼

    Redis是內(nèi)存數(shù)據(jù)庫(kù),數(shù)據(jù)都是存儲(chǔ)在內(nèi)存中,為了避免服務(wù)器斷電等原因?qū)е翿edis進(jìn)程異常退出后數(shù)據(jù)的永久丟失,本文主要介紹了Redis實(shí)現(xiàn)Session持久化的示例代碼,感興趣的可以了解一下
    2023-09-09
  • redis全局命令set、get、keys使用方法

    redis全局命令set、get、keys使用方法

    這篇文章主要介紹了redis全局命令set、get、keys使用方法的相關(guān)資料,詳細(xì)講解了Redis的基本概念和常用命令,強(qiáng)調(diào)了在生產(chǎn)環(huán)境中避免使用keys命令的重要性,需要的朋友可以參考下
    2025-03-03
  • Redis集群的節(jié)點(diǎn)之間通信的實(shí)現(xiàn)

    Redis集群的節(jié)點(diǎn)之間通信的實(shí)現(xiàn)

    Redis集群的節(jié)點(diǎn)之間通過(guò)Gossip協(xié)議進(jìn)行通信,在Redis集群中,Gossip協(xié)議用于節(jié)點(diǎn)之間的狀態(tài)同步和故障檢測(cè),下面就來(lái)詳細(xì)的介紹一下Redis集群節(jié)點(diǎn)通信,感興趣的可以了解一下
    2025-09-09
  • redis?sentinel監(jiān)控高可用集群實(shí)現(xiàn)的配置步驟

    redis?sentinel監(jiān)控高可用集群實(shí)現(xiàn)的配置步驟

    這篇文章主要介紹了redis?sentinel監(jiān)控高可用集群實(shí)現(xiàn)的配置步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04

最新評(píng)論

崇左市| 长子县| 历史| 霍州市| 祁东县| 东安县| 洛扎县| 贡觉县| 澄江县| 安多县| 临夏县| 马公市| 巴青县| 淮阳县| 武平县| 东港市| 通河县| 孝义市| 滨海县| 衢州市| 灌云县| 同江市| 巩留县| 天津市| 吕梁市| 湖南省| 太康县| 西贡区| 阳东县| 大田县| 汾西县| 扶沟县| 筠连县| 信阳市| 玛纳斯县| 阳原县| 曲靖市| 肥城市| 抚顺县| 广南县| 广灵县|