第1个回答 2022-07-10
1.节点规划
因为哨兵只是负责监控和故障转移,真正提供服务的还是主从节点,这里我们需要使用3台机器,分别安装redis节点和哨兵节点,IP端口规划如下表:
IP地址 端口号 角色
10.0.0.51 6379 主节点
26379 哨兵节点
10.0.0.52 6379 从节点
26379 哨兵节点
10.0.0.53 6379 从节点
26379 哨兵节点
2.安装部署db-53
scp -r 10.0.0.51:/usr/local/bin/* /usr/local/bin/
scp -r 10.0.0.51:/opt/redis_6379 /opt/
scp 10.0.0.51:/usr/lib/systemd/system/redis.service /usr/lib/systemd/system/
useradd -u 2000 -M -s /sbin/nologin redis
mkdir /data/redis_6379 -p
chown -R redis:redis /data/redis_6379
chown -R redis:redis /opt/redis_6379
sed -i 's#51#53#g' /opt/redis_6379/conf/redis_6379.conf
systemctl daemon-reload
systemctl start redis
3.配置主从关系
redis-cli -h 10.0.0.52 slaveof 10.0.0.51 6379
redis-cli -h 10.0.0.53 slaveof 10.0.0.51 6379
redis-cli -h 10.0.0.51 info replication
4.部署哨兵-所有机器都操作
mkdir -p /data/redis_26379
mkdir -p /opt/redis_26379/{conf,pid,logs}
cat >/opt/redis_26379/conf/redis_26379.conf << EOF
bind $(ifconfig eth0|awk 'NR==2{print $2}')
port 26379
daemonize yes
logfile /opt/redis_26379/logs/redis_26379.log
dir /data/redis_26379
sentinel monitor myredis 10.0.0.51 6379 2
sentinel down-after-milliseconds myredis 3000
sentinel parallel-syncs myredis 1
sentinel failover-timeout myredis 18000
EOF
chown -R redis:redis /data/redis*
chown -R redis:redis /opt/redis*
cat >/usr/lib/systemd/system/redis-sentinel.service<<EOF
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/redis-sentinel /opt/redis_26379/conf/redis_26379.conf --supervised systemd
ExecStop=/usr/local/bin/redis-cli -h $(ifconfig eth0|awk 'NR==2{print $2}') -p 26379 shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start redis-sentinel
redis-cli -h $(ifconfig eth0|awk 'NR==2{print $2}') -p 26379