redis sentinel 主從切換(Failover)的容災環境部署筆記

環境情況說明:

OS:Centos7.4 64bit

reids:4.0.6

0)Redis主從結構支持一主多從+n個sentinel模式,信息如下:

192.168.179.81   redis-master    redis(6379)、sentinel(26379)
192.168.179.82   redis-slave01   redis(6379)、sentinel(26379)
192.168.179.83   redis-slave02   redis(6379)、sentinel(26379)

關閉三個節點機器的iptables和selinux(所有節點機器上都要操作)

注意:本案例採用1主2從+3 sentinel的集群模式,所有從節點的配置都一樣。

1)redis一鍵安裝(三個節點上都要操作)

安裝過程略:

2)redis啟停腳本(三個節點上都要操作)

cd /lib/systemd/system

vi redis.service

[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf –daemonize no
ExecStop=/usr/local/redis/bin/redis-cli -p 6379 shutdown

[Install]
WantedBy=multi-user.target

ln -s /lib/systemd/system/redis.service /etc/systemd/system/multi-user.target.wants/redis.service

systemctl daemon-reload

3)redis-sentinel啟停腳本示例(三個節點上都要操作)

cd /lib/systemd/system

vi redis-sentinel.service

[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/usr/local/redis/bin/redis-sentinel /usr/local/redis/etc/sentinel.conf –sentinel
ExecStop=/usr/local/redis/bin/redis-cli -p 26379 shutdown

[Install]
WantedBy=multi-user.target

ln -s /lib/systemd/system/redis-sentinel.service /etc/systemd/system/multi-user.target.wants/redis-sentinel.service

systemctl daemon-reload

4)配置redis.conf

a)編輯redis-master主節點的redis.conf文件
[root@redis-master src]# mkdir -p /usr/local/redis/data/redis
[root@redis-master src]# cp /usr/local/redis/etc/redis.conf /usr/local/redis/etc/redis.conf.bak
[root@redis-master src]# vim /usr/local/redis/etc/redis.conf
bind 0.0.0.0
daemonize yes
pidfile “/usr/local/redis/var/redis-server.pid”
port 6379
tcp-backlog 128
timeout 0
tcp-keepalive 0
loglevel notice
logfile “/usr/local/redis/var/redis-server.log”
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir “/usr/local/redis/data/redis”
#masterauth “20180408”
#requirepass “20180408”
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events “”
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

b)編輯redis-slave01和redis-slave02兩個從節點的redis.conf文件
[root@redis-slave01 src]# mkdir -p /usr/local/redis/data/redis
[root@redis-slave01 src]# cp /usr/local/redis/etc/redis.conf /usr/local/redis/etc/redis.conf.bak
[root@redis-slave01 src]# vim /usr/local/redis/etc/redis.conf
bind 0.0.0.0
daemonize yes
pidfile “/usr/local/redis/var/redis-server.pid”
port 6379
tcp-backlog 128
timeout 0
tcp-keepalive 0
loglevel notice
logfile “/usr/local/redis/var/redis-server.log”
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir “/usr/local/redis/data/redis”
#masterauth “20180408”
#requirepass “20180408”
slaveof 192.168.178.81 6379
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events “”
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

5)配置sentinel.conf(這個默認沒有,需要自建)。三個節點的配置一樣。
[root@redis-master src]# mkdir -p /usr/local/redis/data/sentinel
[root@redis-master src]# vim /usr/local/redis/etc/sentinel.conf
port 26379
pidfile “/usr/local/redis/var/redis-sentinel.pid”
dir “/usr/local/redis/data/sentinel”
daemonize yes
protected-mode no
logfile “/usr/local/redis/var/redis-sentinel.log”
sentinel monitor redisMaster 192.168.10.202 6379 2
sentinel down-after-milliseconds redisMaster 10000
sentinel parallel-syncs redisMaster 1
sentinel failover-timeout redisMaster 60000
6)啟動redis和sentinel(三個節點都要操作)
設置系統變數
[root@redis-slave02 src]# vim /etc/profile
…….
export PATH=$PATH:/usr/local/redis/bin
[root@redis-slave02 src]# source /etc/profile
啟動redis和sentinel
systemctl start redis redis-sentinel.service #一起啟,不可以單獨起。
停止redis redis-sentinel

systemctl stop redis redis-sentinel.service #一起停,不可以單獨停。

7)查看redis和sentinel信息

過程略

8)客戶端寫入測試數據

過程略

9)模擬故障(通過sentinel實現主從切換,sentinel也要部署多台,即集群模式,防止單台sentinel掛掉情況)

過程略

10)客戶端連接redis-sentinel演示。

過程略

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營