docker搭建Redis集群(主从集群)

最终会创建以下6个容器构成集群
容器名称                容器IP地址           映射端口号         服务运行模式
redis-node1           172.17.26.187             6379               master
redis-node2           172.17.26.187             6380               master
redis-node3           172.17.26.187             6381               master
redis-node4           172.17.26.187             6382               slave
redis-node5           172.17.26.187             6383               slave
redis-node6           172.17.26.187             6384               slave

啥也不多说,这篇直接上步骤...

1、拉取镜像
docker pull redis:6.0.10
2、创建6个容器
docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:6.0.10 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379

docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:6.0.10 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380

docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:6.0.10 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381

docker create --name redis-node4 --net host -v /data/redis-data/node4:/data redis:6.0.10 --cluster-enabled yes --cluster-config-file nodes-node-4.conf --port 6382

docker create --name redis-node5 --net host -v /data/redis-data/node5:/data redis:6.0.10 --cluster-enabled yes --cluster-config-file nodes-node-5.conf --port 6383

docker create --name redis-node6 --net host -v /data/redis-data/node6:/data redis:6.0.10 --cluster-enabled yes --cluster-config-file nodes-node-6.conf --port 6384

部分参数解释:
--cluster-enabled:是否启动集群,选值:yes 、no
--cluster-config-file 配置文件.conf:指定节点信息,自动生成
--cluster-node-timeout毫秒值: 配置节点连接超时时间
--appendonly:是否开启持久化,选值:yes、no
这里指定了 --net网络类型为 host,主要是这样就不需要端口映射了,比如 -p 6379:6379,因为此时需要对外共享容器端口服务,所以只需要指定对外暴露的端口 -p 6379、-p 6380 等。

执行结果如下:


image.png
3、启动容器
docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6
4、组建 Redis 集群
# 随便进入一个容器,这里以 redis-node1 实例为例
docker exec -it redis-node1 /bin/bash

# 组建集群,172.17.26.187为当前物理机的ip地址
redis-cli --cluster create 172.17.26.187:6379 172.17.26.187:6380 172.17.26.187:6381 172.17.26.187:6382 172.17.26.187:6383 172.17.26.187:6384 --cluster-replicas 1

执行结果如下:


image.png

创建成功后,通过 redis-cli 查看一下集群节点信息:


image.png

ok,三从三主搭建完成了。。。

5、关于Redis集群搭建

首先简单说明下刚才的添加节点的命令

redis-cli --cluster create 172.17.26.187:6379~6384 --cluster-replicas 1

--cluster-replicas 1:参数后面的数字表示的是主从比例,比如这里的 1 表示的是主从比例是 1:1,什么意思?

答: 1 个主节点对应几个从节点,现有 6 个实例,所以主从分配就是 3 个 master 主节点,3 个 slave 从节点;那么如果 --cluster-replicas 2 意思就是主从比例为 1:2,也就是说 1 个主节点对于应 2 个从节点,即:3(master) + 6(slave) = 9个 Redis 实例。
注:主节点最少3个,3个才能保证集群的健壮性。

如果不足 9个 Redis 实例,但是参数指定为 2 会怎么样?
嗯。。。这里不展示了,自己去试试吧,错误信息会很明显。

你可能感兴趣的:(docker搭建Redis集群(主从集群))