注意
- 首先我觉得这两篇博客写的比我的比较好:
- 其实按照步骤就可以搭建出来,但是我测试的时候,一直不成功,需要把sentinel.conf中的等待数据值尽可能的调小,能尽快看出效果
目标
- 搭建一款三节点的 Redis 服务集群,满足高可用的要求
- 统一IP:三节点集群对外暴露一个统一的IP地址
- 高可用:主节点宕机,从节点需要很快承担主节点
- 读写分离:主节点允许读写,从节点只读
- 快速加入:宕机节点重启后,加入集群,成为集群从节点
主要步骤
- 安装三台redis
- 修改redis.conf文件
- 修改sentinel.conf文件
- 先逐台启动redis,出问题看看这里能不能找到答案:中间件安装过程中的一些坑
- 再启动sentinel
- 配置VIP脚本,并初始化
亲测可以用脚本
protected-mode yes
port 6379
daemonize yes
bind 0.0.0.0
pidfile "/var/run/redis_6379.pid"
logfile "/etc/redis/redis.log"
dir "/etc/redis"
dbfilename "dump.rdb"
replica-read-only yes
requirepass "Sxxxxx4"
masterauth "Sxxxxxx4"
port 26379
daemonize yes
protected-mode no
pidfile "/var/run/redis-sentinel.pid"
logfile "/etc/redis/sentinel.log"
dir "/tmp"
sentinel myid e09252859aced76c83958ef6686b739da9b2035f
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster01 1xx.xx.xx.4 6379 2
sentinel down-after-milliseconds mymaster01 5000
sentinel failover-timeout mymaster01 10000
sentinel auth-pass mymaster01 Spdb@1234
sentinel client-reconfig-script mymaster01 /etc/redis/transip.sh
#!/bin/bash
MASTER_IP=$6
LOCAL_IP='1x x x12'
VIP='1xxxx2'
NETMASK='24'
INTERFACE='eth0'
if [ ${MASTER_IP}=${LOCAL_IP} ]; then
/sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE}
/sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
exit 0
else
/sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}
exit 0
fi
exit 1