参考来源:LOOK!docker在多台机器上部署redis三主三从模式集群_经典老哥的博客-优快云博客_docker集群要几台机器
Redis Cluster 集群搭建详细过程_一线大码的博客-优快云博客_rediscluster集群搭建
本文是在参考来源上做的补充与记录,参考地址中的内容有些过时,使用redis7.0无法正确部署。
与来源文章有些出入,本次部署采用两台服务器进行部署,每一台机器上都包含一主二从。
注意:如果主从总数不够6台会报以下错误:
*** ERROR: Invalid configuration for cluster creation.
*** Redis Cluster requires at least 3 master nodes.
*** This is not possible with 4 nodes and 1 replicas per node.
*** At least 6 nodes are required.
在其中一台机器上进行如下操作:
1.在/home/redis-cluster目录下创建结构,如下所示:
2.在7000/conf/redis.conf中添加如下内容:
port 7000
protected-mode no
pidfile /var/run/redis_7000.pid
masterauth hhSaaa
masteruser hyy
requirepass 87hYp
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
appendonly yes
bind 192.168.0.227
注意:在redis7.0中,需要添加 masteruser、bind项,如果不添加这两项启动可能会报错
不添加bind项,创建集群时会一直处于Waiting for the cluster to join... 状态。
注意bind的地址内容,应该填redis服务所在的服务器网卡绑定的IP地址。
3.在7001/conf/redis.conf中添加如下内容:
port 7001
protected-mode no
pidfile /var/run/redis_7001.pid
masterauth hhSaaa
masteruser hyy
requirepass 87hYp
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
appendonly yes
bind 192.168.0.227
4.在7002/conf/redis.conf中添加如下内容:
port 7002
protected-mode no
pidfile /var/run/redis_7002.pid
masterauth hhSaaa
masteruser hyy
requirepass 87hYp
cluster-enabled yes
cluster-config-file nodes-7002.conf
cluster-node-timeout 15000
appendonly yes
bind 192.168.0.227
5.打开start.sh文件,写一个启动脚本,方便一键启动:
for port in 7000 7001 7002;do
docker run -d --net=host -v /home/redis-cluster/${port}/conf/redis.conf:/etc/redis/redis.conf:rw -v /home/redis-cluster/${port}/data:/data:rw --restart always --name=redis-${port} redis:5.0 redis-server /etc/redis/redis.conf;
done
启动redis: sh start.sh
将以上的1-5步在另外的机器上执行一遍,大多数内容不用修改,但是bind地址内容需要进行修改
然后进入任意一个容器内部,如进入redis-7000:
docker exec -it redis-7000 bash
执行以下命令使得集群节点之间完成互通:
redis-cli -u redis://87hYp@192.168.0.152:7000 --cluster create --cluster-replicas 1 192.168.0.152:7000 192.168.0.152:7001 192.168.0.152:7002 192.168.0.227:7000 192.168.0.227:7001 192.168.0.227:7002 --cluster-replicas 1
注意: 在最新版redis中需要使用 -u redis: requirepass@host:port 这种格式才能正确访问。
执行成功界面如下。
6 验证集群是否部署成功
登录任意一台节点验证集群