一、搭建前准备工作
节点 主机名 ip
redis-master redis01 10.101.72.165
redis-slave1 redis02 10.101.72.166
redis-slave2 redis03 10.101.72.167
#可以复用之前的设备
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
setenforce 0
vi /etc/sysconfig/selinux
二、部署redis
redis最新版本在官网可以直接下载到,在三个节点上分别进行redis的部署,看具体版本
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
步骤:
1–配置,redis.conf
bind 0.0.0.0
pidfile “/var/run/redis_6379.pid”
daemonize yes
2–自启动配置
vi /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/bin/redis-server /usr/local/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start redis
systemctl enable redis
三、启用redis-sentinel(哨兵集群)
Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,
并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
sentinel配置
#Sentinel使用端口
port 26379
#打开非保护模式
protected-mode no
#守护线程启动(即后台启动)
daemonize yes
#守护进程会使用到的一个文件
pidfile “/var/run/redis-sentinel.pid”
#指定日志文件名,默认为"",空字符串也可用于强制Sentinel登录标准输出,指定后我们可以通过tail -f xxx.log查看日志
logfile “/usr/local/lib/redis-5.0.3/redis-sentinel.log”
#每个长时间运行的进程都应该有一个明确定义的工作目录。对于Redis Sentinel来说,启动时dir到/tmp是最简单的事情为进程不干扰管理任务,如卸载文件系统。(默认就是"/tmp",copy过来即可)
dir “/tmp”
#重要的来了
#sentinel monitor
#告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当
#有多少个sentinel认为一个master失效时,master才算真正失效.需要注意的是master-ip 要写真实
#的ip地址而不要用回环地址(127.0.0.1)。
sentinel monitor master001 10.101.72.165 6379 2
sentinel monitor master002 10.101.72.166 6379 2
sentinel monitor master003 10.101.72.167 6379 2
#sentinel down-after-milliseconds
#这个配置项指定需要多少时间无响应,一个master才会被这个sentinel主观地认为是不可用的.单位是毫秒,默认为30秒
sentinel down-after-milliseconds master001 10000
sentinel down-after-milliseconds master002 10000
sentinel down-after-milliseconds master003 10000
#sentinel parallel-syncs
#这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用.可以通过将这个值设为1(默认就是1)来保证每次只有一个slave处于不能处理命令请求的状态
sentinel parallel-syncs master001 1
sentinel parallel-syncs master002 1
sentinel parallel-syncs master003 1
#sentinel failover-timeout
failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel 将会认为此次failover失败,默认为3分钟,单位为毫秒
sentinel failover-timeout master001 180000
sentinel failover-timeout master002 180000
sentinel failover-timeout master003 180000
#是否拒绝从新配置通知脚本,默认拒绝(yes).
sentinel deny-scripts-reconfig yes
问题汇总:
DENIED Redis is running in protected mode because protected mode is enabled
编辑 Redis 配置文件 redis.conf 并将保护模式选项设置为“protected-mode no“
若开启需要设置密码
参考文献
1-https://blog.mogugu.net:8443/?id=34
2-https://blog.csdn.net/lzb348110175/article/details/99585022/
2-