欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

redis搭建哨兵模式實現一主兩從三哨兵

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

一、Redis 哨兵模式:

哨兵的核心功能:在主從復制的基礎上,哨兵引入了主節(jié)點的自動故障轉移

1、哨兵模式原理:

哨兵:是一個分布式系統(tǒng),用于對主從結構中的每臺服務器進行監(jiān)控,當出現故障時通過投票機制選擇新的Master 并將所有Slave 連接到新的 Master。所以整個運行哨兵的集群的數量不得少于3個節(jié)點。

2、哨兵模式的作用:

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

  • 自動故障轉移:當主節(jié)點不能正常工作時,哨兵會開始自動故障轉移操作,它會將失效主節(jié)點的其中一個從節(jié)點升級為新的主節(jié)點,并讓其他從節(jié)點改為復制新的主節(jié)點。

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

3、哨兵的結構:

  • 哨兵節(jié)點:哨兵系統(tǒng)由一個或多個哨兵節(jié)點組成,哨兵節(jié)點就是特殊的redis節(jié)點,不存儲數據

  • 數據節(jié)點:主節(jié)點和從節(jié)點都是數據節(jié)點

注意:

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

4、故障轉移機制:

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

故障轉移過程如下:

● 將某一個從節(jié)點升級為新的主節(jié)點,讓其它從節(jié)點指向新的主節(jié)點;

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

● 通知客戶端主節(jié)點已經更換。

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

  • 過濾掉不健康的(已下線的),沒有回復哨兵ping響應的從節(jié)點

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

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

二、案例環(huán)境

服務器
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.關閉防火墻安全內核機制,所有節(jié)點全部執(zhí)行

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

2.所有節(jié)點分別搭建網絡yum源 ,需要聯網

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

3.分別修改主機名

[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é)點修改hosts文件

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

三、實驗部署

主從部署

1.所有節(jié)點安裝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
#出現Please select the redis port for this instance: [6379]一直回車直達出現Please select the redis executable path [] 手動輸入/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需要按照實際情況修改成自己的地址
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é)點的配置文件

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

3.修改slave1和slave2兩個從節(jié)點

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

4.驗證主從效果

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

[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         #在主庫創(chuàng)建文件在從庫查看
OK
127.0.0.1:6379> get k1        存在
"1"
127.0.0.1:6379> 

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

在master上驗證從節(jié)點

四、哨兵部署

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

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

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

#注意:先啟主節(jié)點master,再啟從節(jié)點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é)點都可以查看哨兵info sentinel

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

五、驗證哨兵,模擬故障

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

在Slave1上查看是否轉換成功

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

在Slave2上查看是否轉換成功

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

當原來的master修復后會做為slave從新加入

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

將權重值調成默認方便下次選舉

[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

總結 哨兵系統(tǒng)的搭建過程,有幾點需要注意:

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

哨兵節(jié)點本質上是Redis節(jié)點.

每個哨兵節(jié)點,只需要配置監(jiān)控主節(jié)點,便可以自動發(fā)現其他的哨兵節(jié)點和從節(jié)點.

在哨兵節(jié)點啟動和故障轉移階段,各個節(jié)點的配置文件會被重寫(Config Rewrite)。

故障轉移分三步

1.從下線的主服務的所有從服務里面挑選一個從服務, 將其轉成主服務

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

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

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

sentinel master imooc-master

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

sentinel slaves imooc-master

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

sentinel sentinels imooc-master

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

相關文章

  • CentOS系統(tǒng)下Redis安裝和自啟動配置的步驟

    CentOS系統(tǒng)下Redis安裝和自啟動配置的步驟

    相信大家都知道Redis是一個C實現的基于內存、可持久化的鍵值對數據庫,在分布式服務中常作為緩存服務。所以這篇文章將詳細介紹在CentOS系統(tǒng)下如何從零開始安裝到配置啟動服務。有需要的可以參考借鑒。
    2016-09-09
  • redis緩存一致性延時雙刪代碼實現方式

    redis緩存一致性延時雙刪代碼實現方式

    這篇文章主要介紹了redis緩存一致性延時雙刪代碼實現方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Redis中的GEO詳解

    Redis中的GEO詳解

    Redis GEO是一個輕量級的地理位置解決方案,適合需要快速存儲和查詢位置數據的場景,本文給大家介紹Redis的GEO詳解,感興趣的朋友一起看看吧
    2025-06-06
  • RedisTemplate訪問Redis的更好方法

    RedisTemplate訪問Redis的更好方法

    這篇文章主要為大家介紹了RedisTemplate訪問Redis的更好方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 16個Redis的常見使用場景

    16個Redis的常見使用場景

    這篇文章主要介紹了Redis 常見使用場景的相關資料,需要的朋友可以參考下文
    2021-08-08
  • Redis Cluster集群數據分片機制原理

    Redis Cluster集群數據分片機制原理

    這篇文章主要介紹了Redis Cluster集群數據分片機制原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • redis?bitmap數據結構之java對等操作詳解

    redis?bitmap數據結構之java對等操作詳解

    bitmap是以其高性能出名。其基本原理是一位存儲一個標識,其他衍生知道咱就不說了,而redis就是以這種原生格式存儲的,這篇文章主要介紹了redis?bitmap數據結構之java對等操作,需要的朋友可以參考下
    2022-10-10
  • 超強、超詳細Redis數據庫入門教程

    超強、超詳細Redis數據庫入門教程

    這篇文章主要介紹了超強、超詳細Redis入門教程,本文詳細介紹了Redis數據庫各個方面的知識,需要的朋友可以參考下
    2014-10-10
  • Redis教程(十四):內存優(yōu)化介紹

    Redis教程(十四):內存優(yōu)化介紹

    這篇文章主要介紹了Redis教程(十四):內存優(yōu)化介紹,本文講解了特殊編碼、BIT和Byte級別的操作、盡可能使用Hash等內容,需要的朋友可以參考下
    2015-05-05
  • Redis全局ID生成器的實現

    Redis全局ID生成器的實現

    全局ID生成器,是一種在分布式系統(tǒng)下用來生成全局唯一ID的工具,本文主要介紹了Redis全局ID生成器的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論