環境情況說明:
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…