Docker 搭建 Redis Cluster集群 每一步都带有操做图、命令!!!

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战node

以前不管学什么东西,总感受只要会写小Demo就完事了。但随着学习的深刻,(内卷)接触的愈来愈多,集群、JVM、数据结构、算法、底层、Liunx 系统,任重而道远啊。web

分享一句很喜欢的话:“八小时谋生活,八小时外谋发展”。redis

若是你也喜欢,那一块儿共勉😁😁算法

1、环境

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

在这里插入图片描述

在这里插入图片描述

大体步骤:😜docker

  1. 下载Redis镜像
  2. 编写Redis配置文件
  3. 启动Redis 容器
  4. 建立Redis Cluster 集群。
  5. 进行实际测试

2、前期准备

2.一、搜索、拉取redis镜像

docker search redis
docker pull redis
复制代码

在这里插入图片描述

在这里插入图片描述

2.二、Docker 容器网络

  1. 建立虚拟网卡😄shell

    建立虚拟网卡,主要是用于redis-cluster能于外界进行网络通讯,通常经常使用桥接模式。编程

    docker network create myredis 
    复制代码
  2. 查看Docker 网卡信息windows

    docker network ls
    复制代码

    在这里插入图片描述

三、查看dockerr网络详细信息安全

docker network inspect myredis
复制代码

在这里插入图片描述

四、补充(删除网卡信息、帮助命令)bash

docker network rm myredis #删除网卡命令 多个中间 空格隔开
docker network --help #显示可带参数等
复制代码

2.三、编写配置文件

此处用到了一点 shlle 编程中 的一些命令,让咱们操做更加便利。😃

for port in $(seq 6379 6384); 
do 
mkdir -p /home/redis/node-${port}/conf
touch /home/redis/node-${port}/conf/redis.conf
cat  << EOF > /home/redis/node-${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 ${port} cluster-announce-bus-port 1${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、启动容器

3.一、启动redis容器

由于要启动六个容器,一个一个去启动,确定是麻烦丫。就再次借助shell编程的力量。

for port in $(seq 6379 6384); \
do \
   docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \
  --privileged=true -v /home/redis/node-${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  --privileged=true -v /home/redis/node-${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.二、建立Redis Cluster集群

可随意选择一个节点进入,建立Redis集群。

一、进入redis-6379 容器

docker exec -it redis-6379 /bin/bash
复制代码

在这里插入图片描述

二、建立集群

redis-cli  -a 以前设置的密码 --cluster create 配置文件中的IP地址:6379 IP地址:6380 IP地址:6381 IP地址:6382 IP地址:6383 IP地址:6384   --cluster-replicas 1
复制代码

在这里插入图片描述

在这里插入图片描述

显示这样的画面就表示已经成功拉。

三、查看节点相关信息

进入容器后,经过redis-cli -c -a 1234,进入redis。👼

在这里插入图片描述

输入cluster info 查看集群信息

在这里插入图片描述

也可输入cluster nodes 查看全部节点相关信息

在这里插入图片描述


👨‍💻下一步就是进入测试阶段拉。😀

4、测试

4.一、本机测试

在这里插入图片描述

在这里插入图片描述

咱们在 6381中 set 进去,同时在 6379 中可以取出来,这表明咱们已经成功拉😁

4.二、外网测试

进入windows中 你redis下载的目录中,进入cmd。

在这里插入图片描述

测试说明 咱们已经能够链接拉。

那么咱们就开启两个cmd 窗口,用不同的端口进入。

在这里插入图片描述

在这里插入图片描述

到此,能够证实咱们的集群是已经搭建成功拉。

4.三、出错可能会用到的命令

批量中止容器

 for port in $(seq 6379 6384); 
 do 
 docker stop redis-${port}
 done
复制代码

批量删除容器

 for port in $(seq 6379 6384); 
 do 
 docker rm redis-${port}
 done
复制代码

4.四、可能会出的错

一直卡在Waiting for the cluster to join ......

: 若是是阿里云或者腾讯云上的服务器 ,要记得打开安全组规则, 6379~6384和16379 ~16384都要打开。

若是是虚拟机上,可能牵扯到防火墙,这个得注意一下。

5、博主自言

👩‍💻

如若存在错误,欢迎你们不啬赐教!!!

如若存在疑惑或执行错误,请你们评论或私信,定会第一时间回复。

一块儿继续努力,或者啊,我们一块儿🛌 ☺。

相关文章
相关标签/搜索