Redis Sentinel 搭建

部署哨兵之前需要了解的基本事情

  • 1.一個健壯的部署至少需要三個哨兵實例,并且使用奇數(shù)個Sentinel.
  • 2.三個哨兵實例應(yīng)該放置在客戶使用獨立方式確認故障的計算機或虛擬機中。例如不同的物理機或不同可用區(qū)域的虛擬機。
  • 3.sentinel + Redis實例不保證在故障期間保留確認的寫入,因為Redis使用異步復制。然而有方式部署哨兵使丟失數(shù)據(jù)限制在特定時刻,雖然有更安全的方式部署它。
  • 4.你的客戶端要支持哨兵,流行的客戶端都支持哨兵,但不是全部。
  • 5.沒有HA設(shè)置是安全的,如果你不經(jīng)常的在開發(fā)環(huán)境測試,在生產(chǎn)環(huán)境他們會更好。你可能會有一個明顯的錯誤配置只是當太晚的時候。
  • 6.Sentinel,Docker,或者其他形式的網(wǎng)絡(luò)地址交換或端口映射需要加倍小心:Docker執(zhí)行端口重新映射,破壞Sentinel自動發(fā)現(xiàn)其他的哨兵進程和master的slave列表。稍后在這個文檔里檢查關(guān)于Sentinel和Docker的部分,了解更多信息。

1.redis環(huán)境:

  • 操作系統(tǒng):阿里云Centos 6.8
  • Redis版本:Redis-3.2.9
角色 IP地址 端口號
Redis Master 10.169.28.143 6379
Redis Slave01 10.28.10.103 6379
Redis Slave02 10.174.238.225 6379
Redis Sentinel 10.169.28.143 26379
Redis Sentinel 10.28.10.103 26379
Redis Sentinel 10.174.238.225 26379

2.安裝Redis主從系統(tǒng):

從官網(wǎng)下載redis-3.2.9,并且安裝。
2.1 安裝redis

$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz
$ tar xzf redis-3.2.9.tar.gz
$ cd redis-3.2.9
$ make && make install

2.2 配置master上的redis.conf

bind 10.169.28.143
port 6379
daemonize yes //啟動redis后臺運行
masterauth 123456 //master的密碼,如果redis設(shè)置了密碼,主從密碼要設(shè)置成一樣的。
requirepass 123456
logfile "/var/log/redis/redis.log"

2.3 配置slave上的redis.conf。另外一個類似

bind 10.28.10.103
port 6379
daemonize yes //啟動redis后臺運行
slave 10.169.28.143 6379
masterauth 123456 //master的密碼,如果redis設(shè)置了密碼,主從密碼要設(shè)置成一樣的。
requirepass 123456
logfile "/var/log/redis/redis.log"

2.4 配置完成以后測試一下主從是否同步正確。
依此啟動master redis和slave redis
啟動方法:

$ ./src/redis-server redis.conf

在mster上創(chuàng)建:

$ redis-cli -h 10.169.28.143 -p 6379 -a 123456
10.169.28.143:6379> set name abc
OK
10.169.28.143:6379> get name
"abc"

在從庫上面查看:

$ redis-cli -h 10.28.10.103 -p 6379 -a 123456
10.28.10.103:6379>get name
"abc"

3.搭建Sentinel系統(tǒng)

修改第一個Sentinel實例的配置文件 sentinel.conf ,配置如下:

bind 10.169.28.143
port 26379
daemonize yes
sentinel monitor mymaster 10.169.28.143 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
logfile /var/log/redis/redis-sentinel.log

修改第二個Sentinel實例的配置文件 sentinel.conf ,配置如下:

bind 10.28.10.103
port 26379
daemonize yes
sentinel monitor mymaster 10.169.28.143 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
logfile /var/log/redis/redis-sentinel.log

修改第三個Sentinel實例的配置文件 sentinel.conf ,配置如下:

bind 10.174.238.225
port 26379
daemonize yes
sentinel monitor mymaster 10.169.28.143 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
logfile /var/log/redis/redis-sentinel.log

然后分別在三臺機器上執(zhí)行以下命令啟動 sentinel 實例。

$ ./src/redis-sentinel sentinel.conf

至此,redis sentinel 系統(tǒng)搭建完成

4.測試redis 是否主從切換

4.1 在10.169.28.143服務(wù)器上查看redis的主從信息

$ ./src/redis-cli -h 10.169.28.143 -p 6379 -a 123456 info Replication

# Replication
role:master
connected_slaves:2
slave0:ip=10.28.10.103,port=6379,state=online,offset=463,lag=0
slave1:ip=10.174.238.225,port=6379,state=online,offset=463,lag=1

4.2 在 10.28.10.103 服務(wù)器上查看redis的主從信息

$ ./src/redis-cli -h 10.28.10.103 -p 6379 -a 123456 info Replication

# Replication
role:slave
master_host:10.169.28.143
master_port:6379

4.3 在master服務(wù)器上作下線操作

$ ./src/redis-cli -h 10.169.28.143 -p 6379 -a 123456 shutdown

4.4 過了一會可以在其他slave上看見新的master信息

./src/redis-cli -h 10.28.10.103 -p 6379 -a 123456 info Replication

# Replication
role:slave
master_host:10.174.238.225
master_port:6379

slave.png

出現(xiàn)如圖所示及為主從切換成功。

4.5 當原master(10.169.28.143)重新上線以后,會自動加入到群組,并且變新master的slave

$ ./src/redis-cli -h 10.169.28.143 -p 6379 -a 123456 info Replication

# Replication
role:slave
master_host:10.174.238.225
master_port:6379

參考資料

https://redis.io/download
https://redis.io/topics/sentinel
https://leehao.me/Redis-Sentinel-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
http://redis.majunwei.com/topics/sentinel.html
http://mp.weixin.qq.com/s/YSaRfpIzArqbeyRcyzp4tw

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容