Redis sentinel 哨兵模式,主要管理多組 master-slave 主從實例, 進行主從切換及故障維護,在 Centos 7 上安裝哨兵模式,可以使用 yum 來達成,與其他模式不同的是設定檔配置,安裝的套件與單機模式相同。
Table of Contents
Toggle功能簡介
Redis 是一個高性能鍵值儲存的記憶體型的資料庫,支援資料的持久化,可以將記憶體的資料儲存在磁碟,重啟後可以再重新載入,同時提供 list,set,zset,hash 等資料結構儲存,也支援資料備份,即主從模式的資料備份。
主機架構
建置一主二從三哨兵的主機架構,若資源不足的狀況下,也可考慮在同一台主機,以 port 區分建置以下六個實例。
Node | IP | Port |
Master | 192.168.1.100 | 6379 |
Slave 1 | 192.168.1.101 | 6379 |
Slave 2 | 192.168.1.102 | 6379 |
Sentinel 1 | 192.168.1.100 | 26379 |
Sentinel 2 | 192.168.1.101 | 26379 |
Sentinel 3 | 192.168.1.102 | 26379 |
安裝套件
CentOS 7 Install Redis Sentinel
從套件庫,使用 yum 命令安裝。
yum install redis
修改內核
調整參數。
vim /etc/sysctl.conf
vm.overcommit_memory=1
重新載入。
sysctl -p
組態設定
Master
vim /etc/redis.conf
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis/redis.log
dir /var/lib/redis
databases 16
requirepass password
appendonly yes
masterauth password
Slave 1 / 2
vim /etc/redis.conf
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis/redis.log
dir /var/lib/redis
databases 16
requirepass password
appendonly yes
masterauth password
#slaveof 192.168.1.100 6379
slaveof masterip masterport
Sentinel 1 / 2 / 3
vim /etc/redis-sentinel.conf
bind 0.0.0.0
port 26379
daemonize yes
pidfile /var/run/redis_26379.pid
dir /tmp
sentinel monitor mymaster masterip masterport
sentinel auth-pass mymaster password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 180000
logfile /var/log/redis/sentinel.log
防火牆設定
開通防火牆
使用 firewall-cmd 命令來開通防火牆。
firewall-cmd --permanent --add-port=26379
重載防火牆
使用 firewall-cmd 命令來重載防火牆,立即生效。
firewall-cmd --reload
運行管理
啟動服務
安裝完成後,並不會自動啟動服務,使用 systemctl start 命令來啟動服務。
systemctl start redis
systemctl start redis-sentinel
開機啟動
實現主機重開時,可以自動啟動服務,使用 systemctl enable 命令來啟用開機啟動。
systemctl enable redis
systemctl enable redis-sentinel
停止服務
啟動服務後,使用 systemctl stop 命令終止服務運行。
systemctl stop redis
systemctl stop redis-sentinel
狀態驗證
Install Redis Centos 查看服務狀況,並使用客端連線,查看目前資訊。
systemctl status redis-sentinel
● redis-sentinel.service - redis-sentinel
Loaded: loaded (/usr/lib/systemd/system/redis-sentinel.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-04-05 22:01:12 CST; 3 weeks 1 days ago
Docs: man:redis-sentinel.service(8)
Main PID: 25912 (redis)
測試連線
使用命令列,連上服務。
redis-cli -a password -p 26379 info sentinel
sentinel_masters:1
sentinel_tilt:0
redis-cli -a password -p 26379
127.0.0.1:6379>exit
心得分享
CentOS Install Redis 安裝哨兵模式,實現自動容錯,會將其中一個從節點推選為新的主節點,並設定其他從節點使用新的主節點,而客戶端也不需手動修改配置並重新取得新的連線,除此之外還有其他模式: