美文网首页Java
基于Dokcer搭建Redis集群(主从集群),冲就完了

基于Dokcer搭建Redis集群(主从集群),冲就完了

作者: 该用户已秃头 | 来源:发表于2020-12-22 16:47 被阅读0次

    本文基于 Docker + Redis 5.0.5 版本,通过 cluster 方式创建一个 6 个 redis 实例的主从集群,当然文章会指出相应的参数说明,这样即便是创建 9 个实例的集群方式也是一样的。

    1、拉取 Redis 镜像

    基于 Redis:5.0.5 版本,执行如下指令:

    docker pull redis:5.0.5
    

    2、创建 6 个 Redis 容器

    创建 6 个Redis 容器:

    • redis-node1:6379
    • redis-node2:6380
    • redis-node3:6381
    • redis-node4:6382
    • redis-node5:6383
    • redis-node6:6384

    执行命令如下:

    docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --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:5.0.5 --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:5.0.5 --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:5.0.5 --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:5.0.5 --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:5.0.5 --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

    执行命令截图:

    3、启动 Redis 容器

    执行命令如下:

    docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6
    
    

    启动截图如下:

    4、组建 Redis 集群

    进入任意一个 Redis 实例:

    # 这里以 redis-node1 实例为例
    docker exec -it redis-node1 /bin/bash
    
    

    执行组件集群的命令:

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

    执行命令截图如下:

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

    root@CentOS7:/data# redis-cli
    127.0.0.1:6379> cluster nodes
    
    

    执行命令截图如下:

    4、关于Redis集群搭建

    我们再回到创建集群的命令上:

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

    大家着重看这个参数 --cluster-replicas 1,参数后面的数字表示的是主从比例,比如这里的 1 表示的是主从比例是 1:1,什么概念呢?

    也就是 1 个主节点对应几个从节点,现有 6 个实例,所以主从分配就是 3 个 master 主节点,3 个 slave 从节点。

    主节点最少3个,3个才能保证集群的健壮性。

    如果 --cluster-replicas 2 呢?

    那么主从比例就是 1:2,也就是 1 个主节点对于应 2 个从节点。

    即:3(master) + 6(slave) = 9个 Redis 实例。

    如果不足 9个 Redis 实例,但是参数指定为 2 会怎么样?

    报错信息如下:

    提示已经很清楚了,Redis集群至少需要3个主节点。那么从节点就需要有6个,所以最后说:至少需要9个节点。

    好的,至少3个主节点的要求我不继续刚了,但是我想4个主节点,2个从节点,这总该可以了吧?

    4个主节点满足你:

    # 进入一个启动的 reids 实例,这里以 redis-node1 实例为例
    docker exec -it redis-node1 /bin/bash
    

    执行组建集群的命令:

    redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382  --cluster-replicas 0
    

    指定4个没有从节点的主节点,这样你就有4个主节点了:

    剩下的两个从节点怎么办呢?手动添加。

    怎么添加?手动添加!

    看到这些 master 节点的 id 了吗,只需要把 slave 指定给他们就可以了。

    继续执行如下命令:

    redis-cli --cluster add-node 10.211.55.4:6383 10.211.55.4:6379  --cluster-slave --cluster-master-id b0c32b1dae9e7b7f7f4b74354c59bdfcaa46f30a
    
    redis-cli --cluster add-node 10.211.55.4:6384 10.211.55.4:6379  --cluster-slave --cluster-master-id 111de8bed5772585cef5280c4b5225ecb15a582e
    
    

    将两个 Redis 实例塞给其他主节点了:

    最后我们进入 redis-cli,通过 cluster nodes 查看一下节点信息:

    看到这,你学废了吗?

    原文链接:https://www.cnblogs.com/niceyoo/p/14118146.html

    如果觉得本文对你有帮助,可以转发关注支持一下

    相关文章

      网友评论

        本文标题:基于Dokcer搭建Redis集群(主从集群),冲就完了

        本文链接:https://www.haomeiwen.com/subject/clvsnktx.html