一、前言
什么是Redis哨兵?
Redis哨兵,即Redis Sentinel,从Redis 2.8版本开始引入。它的主要作用就是主节点的自动故障转移。接下来,我们一起通过docker镜像方式来快速部署哨兵。
二、服务器配置
本次演示环境使用3台服务器来搭建Redis高可用集群,采用一主两从三哨兵
模式,服务器配置如下所示。
服务器IP | 服务器配置 | 备注 |
---|---|---|
10.129.12.4 | 16C32G CentOS7.2 X64 | master |
10.129.12.5 | 16C32G CentOS7.2 X64 | slave1 |
10.129.12.6 | 16C32G CentOS7.2 X64 | slave2 |
三、Redis集群搭建
1、搭建一主两从
1.1 下载Redis镜像
1.1.1 离线导入
可通过其他装有redis镜像的服务器上导出,通过ftp上传至自己的服务器进行加载。
## 1、从其他装有redis镜像的服务器上导出镜像包
docker save -o redis.tar redis:latest
## 2、通过FTP将镜像包上传至服务器
## 3、加载镜像包
docker load -i redis.tar
1.1.2 在线下载
docker pull redis
1.2 安装Redis
在三台服务器上分别创建/usr/local/redis/conf
以及/usr/local/redis/data
目录,用来存放配置文件以及落盘数据。在conf
目录创建redis.conf
,主从节点内容配置分别如下:
1.2.1 master配置文件
bind 0.0.0.0
# 关闭保护模式
protected-mode no
#端口
port 63790
#主节点也需要设置主节点的授权密码,因为角色会发生转变
masterauth redis_pwd
requirepass redis_pwd
#主节点不开启持久化
appendonly no
#关闭rdb
save ""
1.2.2 slave1配置文件
bind 0.0.0.0
# 关闭保护模式
protected-mode no
#端口
port 63790
#主节点也需要设置主节点的授权密码,因为角色会发生转变
masterauth redis_pwd
requirepass redis_pwd
#改成你的master的ip port
slaveof 10.129.12.4 63790
#设置优先级,值越低优先级越高
slave-priority 90
#不开启AOF
appendonly no
#关闭rdb
save ""
1.2.3 slave2配置文件
bind 0.0.0.0
# 关闭保护模式
protected-mode no
#端口
port 63790
#主节点也需要设置主节点的授权密码,因为角色会发生转变
masterauth redis_pwd
requirepass redis_pwd
#改成你的master的ip port
slaveof 10.129.12.4 63790
#设置优先级,值越低优先级越高
slave-priority 100
#开启AOF
appendonly yes
#备份频率
appendfsync everysec
备注:因本次涉及定时任务同步缓存数据,为保证服务器性能,只保留了10.129.12.6这台机器开启AOF以及RDB对数据进行落盘,其他两个都关闭。
1.2.4 运行容器
分别在三台机器上按主从顺序依次启动容器
docker run -d --name redis -p 63790:63790 --privileged=true --restart=always
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf
-v /usr/local/redis/data:/data
redis:latest redis-server /etc/redis/redis.conf --requirepass "redis_pwd"
1.3 查看集群状态
在主节点机器上,进入redis容器并开启客户端,执行info
命令查看主节点信息,如下所示。
可以看到role
为master
,说明当前是主节点。并且看到有两个从节点10.129.12.5
和10.129.12.6
。
在从节点机器上,同样通过info
命令查看从节点信息,如下所示。
可以看到role
为slave
,说明当前是从节点;同时可以看到主节点为10.129.12.4
,端口号63790
。
其中从节点还有一个重要的属性:master_link_status
,如果为up
则说明主从配置是OK的,如果为down
则说明有问题。首先排查下主节点端口是否被限制导致从节点连接失败,可通过关闭防火墙或放开主节点端口进行验证;再就是主从节点配置文件中的密码要保持一致。
1.4 验证主从复制
可以在主节点上写入一个key-value值,然后在任意从节点上查询这个key的值,如果能查到且与主节点value值一致则说明主从同步成功。
主节点 :
从节点:
2、配置三哨兵
2.1 安装哨兵
2.1.1 配置文件
分别在三台机器的/usr/local/redis/conf
目录下面创建sentinel.conf
文件,配置内容如下:
port 26379
dir /tmp
sentinel announce-ip 10.129.12.4 ## 各个节点对应自己的ip
sentinel announce-port 26380 ## 端口号都配置为26380
sentinel monitor mymaster 10.129.12.4 63790 2 ## 监控的主节点mymaster
sentinel auth-pass mymaster redis_pwd ## 密码
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
2.2.2 启动容器
分别在三台机器上执行docker run
命令来启动容器。
docker run -d --name redis-sentinel -p 26380:26379 --privileged=true
-v /usr/local/redis/conf/sentinel.conf:/usr/local/redis/sentinel.conf
redis:latest redis-sentinel /usr/local/redis/sentinel.conf
2.2 验证故障转移
为了验证哨兵模式下的主从自动切换,我们将当前主节点10.129.12.4
这台机器的redis关掉,稍等几秒钟后查看另外两台机器,进入redis容器内启动客户端执行info
命令,验证是否有一台从节点的角色自动变成主节点。经过验证10.129.12.5
这台的role
变成了master
,说明主从切换成功!
原文始发于微信公众号(Java浩窍门):超详细的Redis哨兵搭建指南,快快收藏吧!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/244526.html