主机 | ip | 端口(redis-server) | 端口(sentinel) |
---|---|---|---|
node1(master) | 128.0.0.101 | 8000 | 6800 |
node2(slave) | 128.0.0.102 | 8000 | 6800 |
node3(slave) | 128.0.0.103 | 8000 | 6800 |
wget http://download.Redis.io/releases/redis-4.0.2.tar.gz
tar xf redis-4.0.2.tar.gz
cd redis-4.0.2
yum install -y gcc gcc-c++ make openssl-devel pcre-devel
#编译
cd redis-4.0.2
make MALLOC=/usr/lib64/libjemalloc.so.1
make install
cp redis.conf sentinel.conf /etc/
mkdir /var/log/redis
#主
vim /etc/redis.conf
port 8000
daemonize yes
bind 0.0.0.0
pidfile /var/run/redis-8000.pid
logfile /var/log/redis/redis-8000.log
protected-mode no
#从
vim /etc/redis.conf
port 8000
daemonize yes
bind 0.0.0.0
pidfile /var/run/redis-8000.pid
logfile /var/log/redis/redis-8000.log
protected-mode no
slaveof 128.0.0.81 8000
#哨兵
vim /etc/sentinel.conf
daemonize yes
port 6800
logfile /var/log/redis/sentinel.log
pidfile /var/run/sentinel.pid
sentinel monitor mymaster 128.0.0.81 8000 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 15000
#server
redis-server /etc/redis.conf
#哨兵
redis-sentinel /etc/sentinel.conf
查看
redis-cli -p 6800
127.0.0.1:6800> info Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=128.0.0.81:8000,slaves=2,sentinels=3
虽然Redis做了备份,可以保证服务的不中断。但由于Redis目前只支持主从复制备份(不支持主主复制),当主Redis挂了,从Redis只能提供读服务,无法提供写服务。所以,当主Redis挂了,让从Redis升级成为主Redis。 这就需要自动故障转移,Redis sentinel带有这个功能,当一个主Redis不能提供服务时,Redis sentinel可以将一个从Redis升级为主Redis,并对其他从Redis进行配置,让它们使用新的主Redis进行复制备份。