一、环境

    阿里云服务器 CentOS 8
    docker版本为20.10.7
    redis 镜像 (拉取为默认最新镜像)

    大致步骤:😜

    下载Redis镜像
    编写Redis配置文件
    启动Redis 容器
    创建Redis Cluster 集群。
    进行实际测试

    二、前期准备
    2.1、搜索、拉取redis镜像
    docker search redis
    docker pull redis
    复制代码

    2.2、Docker 容器网络

    创建虚拟网卡😄
    创建虚拟网卡,主要是用于redis-cluster能于外界进行网络通信,一般常用桥接模式。
    docker network create myredis
    复制代码

    查看Docker 网卡信息
    docker network ls
    复制代码

    3、查看dockerr网络详细信息
    docker network inspect myredis
    复制代码

    4、补充(删除网卡信息、帮助命令)
    docker network rm myredis #删除网卡命令 多个中间 空格隔开
    docker network —help #显示可带参数等
    复制代码
    2.3、编写配置文件
    此处用到了一点 shlle 编程中 的一些命令,让我们操作更加便利。😃
    for port in 实战创建redis - 图1%3B%20%0Ado%20%0Amkdir%20-p%20%2Fhome%2Fredis%2Fnode-#card=math&code=%28seq%206379%206384%29%3B%20%0Ado%20%0Amkdir%20-p%20%2Fhome%2Fredis%2Fnode-){port}/conf
    touch /home/redis/node-实战创建redis - 图2{port}/conf/redis.conf
    port ${port}
    requirepass 1234
    bind 0.0.0.0
    protected-mode no
    daemonize no
    appendonly yes
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    cluster-announce-ip 47.113.227.254
    cluster-announce-port 实战创建redis - 图3{port}
    EOF
    done
    复制代码
    命令解释:😊

    port:节点端口;
    requirepass:设置密码,访问时需要验证
    protected-mode:保护模式,默认值 yes,即开启。开启保护模式以后,需配置 bind ip 或者设置访问密码;关闭保护模式,外部网络可以直接访问;
    daemonize:是否以守护线程的方式启动(后台启动),默认 no;
    appendonly:是否开启 AOF 持久化模式,默认 no;
    cluster-enabled:是否开启集群模式,默认 no;
    cluster-config-file:集群节点信息文件;
    cluster-node-timeout:集群节点连接超时时间;
    cluster-announce-ip:集群节点 IP

    注意: 如果你想要你的redis集群可以供外网访问,这里直接填 服务器的IP 地址即可
    如若为了安全,只是在服务器内部进行访问,这里还需要做一些修改。

    cluster-announce-port:集群节点映射端口;
    cluster-announce-bus-port:集群节点总线端口。

    redis 在官网上有说明为什么需要映射两个端口 :redis官网

    执行命令完:

    我们通过tree 命令查看目录结构:(如果没有 tree 命令先安装 yum install -y tree)

    接下来就是启动容器拉
    三、启动容器
    3.1、启动redis容器
    因为要启动六个容器,一个一个去启动,肯定是麻烦丫。就再次借助shell编程的力量。
    for port in $(seq 6379 6384);
    do
    docker run -it -d -p 实战创建redis - 图4{port} -p 1实战创建redis - 图5{port}
    —privileged=true -v /home/redis/node-实战创建redis - 图6{port}/data:/data
    —restart always —name redis-${port} —net myredis
    —sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf
    done
    复制代码
    解释:🤑

    -it:交互

    -d:后台运行,容器启动完成后打印容器

    —privileged:是否让docker 应用容器 获取宿主机root权限(特殊权限-)

    -p :端口映射

    -v:文件挂载

    —sysctl参数来设置系统参数,通过这些参数来调整系统性能

    —restart always:在容器退出时总是重启容器

    —name :给容器取名

    —net myredis :使用我们创建的虚拟网卡 (想详细了解,可以去看看Docker 网络方面知识)

    执行完成:

    亦可使用docker ps -a 查看运行中容器。

    可以看到已全部启动成功。
    👨‍🔧
    3.2、创建Redis Cluster集群
    可随意选择一个节点进入,创建Redis集群。
    1、进入redis-6379 容器
    docker exec -it redis-6379 /bin/bash
    复制代码

    2、创建集群
    redis-cli -a 之前设置的密码 —cluster create 配置文件中的IP地址:6379 IP地址:6380 IP地址:6381 IP地址:6382 IP地址:6383 IP地址:6384 —cluster-replicas 1
    复制代码

    显示这样的画面就表示已经成功拉。
    3、查看节点相关信息
    进入容器后,通过redis-cli -c -a 1234,进入redis。👼

    输入cluster info 查看集群信息

    也可输入cluster nodes 查看所有节点相关信息

    👨‍💻下一步就是进入测试阶段拉。😀
    四、测试
    4.1、本机测试

    我们在 6381中 set 进去,同时在 6379 中能够取出来,这代表我们已经成功拉😁
    4.2、外网测试
    进入windows中 你redis下载的目录中,进入cmd。

    测试说明 我们已经可以连接拉。
    那么我们就开启两个cmd 窗口,用不一样的端口进入。

    到此,可以证明我们的集群是已经搭建成功拉。
    4.3、出错可能会用到的命令
    批量停止容器
    for port in 实战创建redis - 图7%3B%20%0A%C2%A0do%20%0A%C2%A0docker%20stop%20redis-#card=math&code=%28seq%206379%206384%29%3B%20%0A%C2%A0do%20%0A%C2%A0docker%20stop%20redis-){port}
    done
    复制代码
    批量删除容器
    for port in 实战创建redis - 图8%3B%20%0A%C2%A0do%20%0A%C2%A0docker%20rm%20redis-#card=math&code=%28seq%206379%206384%29%3B%20%0A%C2%A0do%20%0A%C2%A0docker%20rm%20redis-){port}
    done
    复制代码
    4.4、可能会出的错
    一直卡在Waiting for the cluster to join ……
    注: 如果是阿里云或者腾讯云上的服务器 ,要记得打开安全组规则, 6379~6384和16379 ~16384都要打开。
    如果是虚拟机上,可能牵扯到防火墙,这个得注意一下。
    五、博主自言
    👩‍💻
    如若存在错误,欢迎大家不啬赐教!!!
    如若存在疑惑或执行错误,请大家评论或私信,定会第一时间回复。
    一起继续努力,或者啊,咱们一起🛌 ☺。