一、搭建环境
- linux centos7
- redis 5.0以上
- docker
- docker-compose
二、搭建
1、准备3台虚拟机,每一台都满足搭建环境
192.168.252.128
192.168.252.129
192.168.252.130
2、每一台机器创建/root/redis目录,在该目录下创建docker-compose构建脚本,redis-cluster.sh
3、根据脚本每一台虚拟机启动3个服务
192.168.252.128创建3个redis服务
192.168.252.128:7001
192.168.252.128:7002
192.168.252.128:7003
192.168.252.129创建3个redis服务
192.168.252.129:7001
192.168.252.129:7002
192.168.252.129:7003
192.168.252.130创建3个redis服务
192.168.252.130:7001
192.168.252.130:7002
192.168.252.130:7003
执行redis-cluster.sh脚本后,修改对应的redis配置文件,最后创建redis实例
# 开启集群模式,默认是关闭
cluster-enable yes
# 设置从节点访问主节点的密码
masterauth 123456
# 绑定地址,如果想让外网访问最好修改为ip地址
bind 192.168.252.130
# 保护模式,默认是开启,如果开启只能本机访问redis服务,如果想让其他机器访问建议关闭
protected-mode no
# 绑定端口号,默认6379
port 6379
# 登录密码,默认是注释掉的,建议开启
requirepass 123456
# 开启持久化功能,默认是关闭,建议打开,这样重启redis服务数据才不会清空
appendonly yes
# 持久化文件,用默认即可,无需修改
appendfilename "appendonly.aof"
# redis持久化数据目录,默认是当前redis服务所在目录,推荐修改
dir ./
4、开放防火墙,这一步非常重要。每一个redis服务的集群工作时通过我们配置的port+1000端口来实现(如,我们在redis.conf配置prot 7001 则集群服务端口为17001,7001+1000=17001),所以每一个redis服务都要开放本身的端口和集群服务端口。按如下例子来对所有redis服务开放端口,否则集群会失败
firewall-cmd --zone=public --add-prot 7001/tcp
firewall-cmd --zone=public --add-prot 17001/tcp
5、配置集群
(1) docker 安装redis,3台服务器都需要安装
docker exec -it redis-7001 bash
(2)用redis-cli来创建集群,在redis5.0之后官方推荐用这种方式来构建
redis-cli -a 123456 --cluster create 192.168.252.128:7001 192.168.252.128:7002 192.168.252.129:7001 192.168.252.129:7002 192.168.252.130:7001 192.168.252.130:7002 --cluster-replicas 1
- -a 设置登录密码
- –cluster 设置当前操作模式为集群模式
- create 创建集群,后面跟着需要加入集群的服务
- –cluster-replicas 1 设置从节点的个数

(3)提示redis-cli给我们配置的方案,如果我们接受则输入“yes”回车,显示如下说明集群配置成功

6、查看集群配置结果
(1)通过“redis-cli”进入集群的任何一个节点
redis-cli -a 123456 -h 192.168.252.128 -p 7001 -c
- -c 表示启用集群模式
(2) 查看集群状态
cluster info

(3)查看节点的主从配置
cluster nodes

通过以上信息我们可以看出,本次集群有三个主节点和三个从节点。
(4) 查看当前节点的主从信息
info replication

显示以上信息说明集群搭建成功。
三、常见问题
- 配置参数daemonize no,如果为“yes”docker将不能正常启动。默认为“no”
- 如果配置了登录认证即,requirepass xxx 则必须配置masterauth xxx,否则集群时主从不能同步,因为从节点(通过masterauth来指定登录密码请求主节点时需要知道主节点的登录密码。
- 防火墙没有开放相应端口,特别是集群服务端口,如,redis服务端口为:7001,则它的集群服务端口为:17001。(在服务端口前+1即可)
- 设置集群前,待集群的节点的持久化数据和集群配置文件(nodes.conf)没有清空,需要清空后方可集群。
本文介绍了如何在Linux CentOS7环境下,利用docker和docker-compose搭建redis-cluster高可用集群。详细步骤包括环境准备、配置文件创建、端口开放、集群配置及常见问题解答,确保每个节点的正确设置和主从同步。
&spm=1001.2101.3001.5002&articleId=121746498&d=1&t=3&u=0ff5a75ad92946dcb97f06a58970f547)
3444

被折叠的 条评论
为什么被折叠?



