redis學習9---一主二從三哨兵環(huán)境配置

Sentinel(哨兵)是用于監(jiān)控redis集群中Master狀態(tài)的工具,是Redis的高可用性解決方案,sentinel哨兵模式已經(jīng)被集成在redis2.4之后的版本中。sentinel是redis高可用的解決方案,sentinel系統(tǒng)可以監(jiān)視一個或者多個redis master服務,以及這些master服務的所有從服務;當某個master服務下線時,自動將該master下的某個從服務升級為master服務替代已下線的master服務繼續(xù)處理請求。

積石山保安族東鄉(xiāng)族網(wǎng)站建設公司創(chuàng)新互聯(lián),積石山保安族東鄉(xiāng)族網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為積石山保安族東鄉(xiāng)族上1000家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的積石山保安族東鄉(xiāng)族做網(wǎng)站的公司定做!

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

Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案,當用Redis做Master-slave的高可用方案時,假如master宕機了,Redis本身(包括它的很多客戶端)都沒有實現(xiàn)自動進行主備切換,而Redis-sentinel本身也是一個獨立運行的進程,它能監(jiān)控多個master-slave集群,發(fā)現(xiàn)master宕機后能進行自動切換。Sentinel由一個或多個Sentinel 實例 組成的Sentinel系統(tǒng)可以監(jiān)視任意多個主服務器,以及這些主服務器屬下的所有從服務器,并在被監(jiān)視的主服務器進入下線狀態(tài)時,自動將下線主服務器屬下的某個從服務器升級為新的主服務器。

Sentinel工作方式(每個Sentinel實例都執(zhí)行的定時任務)

1)每個Sentinel以每秒鐘一次的頻率向它所知的Master,Slave以及其他 Sentinel 實例發(fā)送一個PING命令。

2)如果一個實例(instance)距離最后一次有效回復PING命令的時間超過 own-after-milliseconds 選項所指定的值,則這個實例會被Sentinel標記為主觀下線。?

3)如果一個Master被標記為主觀下線,則正在監(jiān)視這個Master的所有 Sentinel 要以每秒一次的頻率確認Master的確進入了主觀下線狀態(tài)。?

4)當有足夠數(shù)量的Sentinel(大于等于配置文件指定的值)在指定的時間范圍內(nèi)確認Master的確進入了主觀下線狀態(tài),則Master會被標記為客觀下線。

5)在一般情況下,每個Sentinel 會以每10秒一次的頻率向它已知的所有Master,Slave發(fā)送 INFO 命令。

6)當Master被Sentinel標記為客觀下線時,Sentinel 向下線的 Master 的所有Slave發(fā)送 INFO命令的頻率會從10秒一次改為每秒一次。?

7)若沒有足夠數(shù)量的Sentinel同意Master已經(jīng)下線,Master的客觀下線狀態(tài)就會被移除。 若 Master重新向Sentinel 的PING命令返回有效回復,Master的主觀下線狀態(tài)就會被移除。

環(huán)境:

主機IP:

192.168.121.121

192.168.121.122

192.168.121.123

系統(tǒng):centos7.6

上傳源碼包到主機

redis-4.0.11.tar.gz

1、三臺主機編譯

yum install gcc gcc-c++ -y

tar -zxf redis-4.0.11.tar.gz -C /data/usr/src

cd /data/usr/src/redis-4.0.11/

make && make install PREFIX=/data/usr/redis

2、三臺主機可拷貝配置文件

mkdir /data/usr/redis/{conf,data,logs}

cp *.conf /data/usr/redis/conf

編輯配置文件

cd /data/usr/redis/conf

2.1、配置redis

主節(jié)點:

vi redis.conf?

bind 127.0.0.1 192.168.121.121

protected-mode no

daemonize yes

slave-priority 100

appendonly yes

dir /data/usr/redis/data

requirepass "Redis2019!"

masterauth "Redis2019!"

logfile "/data/usr/redis/logs/redis.log"

兩個從節(jié)點:

bind 127.0.0.1 192.168.121.122

protected-mode no

daemonize yes

slave-priority 90

appendonly yes

dir /data/usr/redis/data

slaveof 192.168.121.121 6379

requirepass "Redis2019!"

masterauth "Redis2019!"

logfile "/data/usr/redis/logs/redis.log"

bind 127.0.0.1 192.168.121.123

protected-mode no

daemonize yes

slave-priority 90

appendonly yes

dir /data/usr/redis/data

slaveof 192.168.121.121 6379

requirepass "Redis2019!"

masterauth "Redis2019!"

logfile "/data/usr/redis/logs/redis.log"

2.2、配置哨兵

vi sentinel.conf?

protected-mode no

daemonize yes

logfile "/data/usr/redis/logs/sentinel.log"

sentinel monitor mymaster 192.168.121.121 6379 2?#設置 主名稱 ip地址 端口號 參入選舉的哨兵數(shù)

sentinel auth-pass mymaster Redis2019!

最后兩條配置要按照先后順序

3、啟動

將redis服務啟動:先啟動master再啟動slave

/data/usr/redis/bin/redis-server /data/usr/redis/conf/redis.conf?

查看redis服務狀態(tài)

/data/usr/redis/bin/redis-cli -h 192.168.121.121 -p 6379 -a Redis2019! info replication?

/data/usr/redis/bin/redis-cli -h 192.168.121.122 -p 6379 -a Redis2019! info replication?

/data/usr/redis/bin/redis-cli -h 192.168.121.123 -p 6379 -a Redis2019! info replication?

啟動sentinel服務:先啟動redis服務再啟動sentinel服務,關閉則是反過來的,先關閉sentinel服務,再關閉redis服務。

/data/usr/redis/bin/redis-sentinel /data/usr/redis/conf/sentinel.conf?

查看哨兵服務狀態(tài)

/data/usr/redis/bin/redis-cli -h 192.168.121.121 -p 26379 info sentinel

/data/usr/redis/bin/redis-cli -h 192.168.121.122 -p 26379 info sentinel

/data/usr/redis/bin/redis-cli -h 192.168.121.123 -p 26379 info sentinel

4、測試

4.1、同步測試

主節(jié)點:

192.168.121.121:6379> set name kkk

從節(jié)點:

192.168.121.122:6379> keys *

1) "name"

192.168.121.122:6379> get name

"kkk"

192.168.121.123:6379> keys *

1) "name"

192.168.121.123:6379> get name

"kkk"

4.2、從庫只讀測試

192.168.121.122:6379> set bname yyy

(error) READONLY You can't write against a read only slave.

192.168.121.123:6379> set bname yyy

(error) READONLY You can't write against a read only slave.

4.3、冗余測試

測試停止主redis,發(fā)現(xiàn)其中一個從變?yōu)橹鳎瑔油V沟姆蘸蟀l(fā)現(xiàn)為從服務,主服務不變。

停止一個節(jié)點sentinel服務,之后再停止主服務,發(fā)現(xiàn)其中一個從服務升級為主服務

停止哨兵服務命令

/data/usr/redis/bin/redis-cli -h 192.168.121.121 -p 26379 shutdown

停止redis服務命令

/data/usr/redis/bin/redis-cli -h 192.168.121.122 -p 6379 -a Redis2019 shutdown

停止第二個哨兵服務,再停止redis主服務,發(fā)現(xiàn)剩下的redis服務中并沒有產(chǎn)生主服務,說明哨兵服務最少要有兩個,最好是三個及以上。

5、問題處理

5.1、執(zhí)行 make PREFIX=/data/usr/redis install 報錯

cc: error: ../deps/hiredis/libhiredis.a: No such file or directory

cc: error: ../deps/lua/src/liblua.a: No such file or directory

cd deps/

ls

hiredis? jemalloc? linenoise? lua? Makefile? README.md? update-jemalloc.sh

cd hiredis

make?

cd linenoise

make

cd lua

make?

cd lua

make

編譯報錯

Please do

? ?make PLATFORM

where PLATFORM is one of these:

? ?aix ansi bsd freebsd generic linux macosx mingw posix solaris

See INSTALL for complete instructions.

[root@slave1 lua]# make PLATFORM

make: *** No rule to make target `PLATFORM'.? Stop.

執(zhí)行下面命令編譯

make generic

5.2、啟動哨兵出錯

./redis-sentinel sentinel.conf?

*** FATAL CONFIG FILE ERROR ***

Reading the configuration file, at line 92

>>> 'sentinel auth-pass mymaster Redis2019'

No such master with specified name.

出現(xiàn)錯誤:

sentinel monitor mymaster 192.168.121.123 6379 2

sentinel auth-pass mymaster Redis2019

上邊的配置要按照順序,錯誤是因為上邊一條的配置在下面造成的。

參考:

https://www.cnblogs.com/kevingrace/p/9004460.html

https://blog.csdn.net/qq_40476230/article/details/85845166

文章標題:redis學習9---一主二從三哨兵環(huán)境配置
網(wǎng)址分享:http://muchs.cn/article8/iheeop.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站網(wǎng)站建設、企業(yè)網(wǎng)站制作網(wǎng)站制作、網(wǎng)站維護、定制開發(fā)

廣告

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

商城網(wǎng)站建設