1. 先构建6个节点服务
主节点 | 从节点 |
192.168.202.6:6380 | 192.168.202.6:6381 |
192.168.202.7:6380 | 192.168.202.7:6381 |
192.168.202.8:6380 | 192.168.202.8:6381 |
构建主机容器卷(config:存放redis.conf、data:存放aof存储文件)
redis.conf的内容如下:(每台主机都要配置)
port 6380
protected-mode no
daemonize no
requirepass 123456
appendonly yes
cluster-enabled yes
cluster-config-file nodes_6380.conf
cluster-node-timeout 20000
# 配置说明:
# port # 节点端口
# protected-mode # 保护模式,默认值 yes,即开启
# daemonize # 是否以守护线程的方式启动(后台启动),默认 no;
# appendonly # 是否开启 AOF 持久化模式,默认 no;
# cluster-enabled # 是否开启集群模式,默认 no
# cluster-config-file # 集群节点信息文件
# cluster-node-timeout # 集群节点连接超时时间(ms)
2.docker运行redis容器 (这里以其中一台服务器为例)
docker run -d -p 6380:6380 -v /tmp/docker_redis_cluster/6380/config/redis.conf:/etc/redis/redis.conf -v /tmp/docker_redis_cluster/6380/data:/data --privileged=true --name=clu_master_6380 redis:6.0.8 /etc/redis/redis.conf
docker run -d -p 6381:6381 -v /tmp/docker_redis_cluster/6381/config/redis.conf:/etc/redis/redis.conf -v /tmp/docker_redis_cluster/6381/data:/data --privileged=true --name=clu_slave_6381 redis:6.0.8 /etc/redis/redis.conf
3.6个节点运行后,用redis-cli客户端连接,并执行集群创建
redis-cli --cluster create --cluster-replicas 1 192.168.202.6:6380 192.168.202.6:6381 192.168.202.7:6380 192.168.202.7:6381 192.168.202.8:6380 192.168.202.8:6381 --cluster-yes -a 123456
其中-- cluster-yes表示窗口批量处理,方便执行-a 123456
4.执行发现下面的情况
分析:redis-cli客户端 随意连接一台 执行cluster nodes,未显示其他节点信息,发现有个"10000+原端口"的信息,发现这个是集群总线(原文出处:搭建Redis集群遇到的问题:Waiting for the cluster to join~~~_gblfy的博客-优快云博客)
5. 解决方案:docker环境模拟redis集群,还需要开放集群总线端口
停止原redis镜像,创建新镜像:
docker run -d -p 6380:6380 -p 16380:16380 --volumes-from 4d471e8806f3 --privileged=true --name=Cluster_Master_6380 redis:6.0.8 redis-server /etc/redis/redis.conf
docker run -d -p 6381:6381 -p 16381:16381 --volumes-from 962334ad44ef --privileged=true --name=Cluster_Slave_6381 redis:6.0.8 redis-server /etc/redis/redis.conf
--volumes-from :引用 已停止docker容器 的容器卷配置