前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >史上最详细Docker搭建Redis Cluster集群环境 值得收藏 每步都有图,不用担心学不会

史上最详细Docker搭建Redis Cluster集群环境 值得收藏 每步都有图,不用担心学不会

作者头像
宁在春
发布2022-10-31 14:53:19
1.4K0
发布2022-10-31 14:53:19
举报

之前无论学什么东西,总感觉只要会写小Demo就完事了。但随着学习的深入,(内卷)接触的越来越多,集群、JVM、数据结构、算法、底层、Liunx 系统,任重而道远啊。 分享一句很喜欢的话:“八小时谋生活,八小时外谋发展”。 如果你也喜欢,那一起共勉😁😁

SpringBoot整合Redis实现发布/订阅-集群配置

Docker 搭建 Redis Cluster 集群环境

代码语言:txt
复制
- [一、环境](https://cloud.tencent.com/developer)
- [二、前期准备](https://cloud.tencent.com/developer)
    - [2.1、搜索、拉取redis镜像](https://cloud.tencent.com/developer)
    - [2.2、Docker 容器网络](https://cloud.tencent.com/developer)
    - [2.3、编写配置文件](https://cloud.tencent.com/developer)
- [三、启动容器](https://cloud.tencent.com/developer)
    - [3.1、启动redis容器](https://cloud.tencent.com/developer)
    - [3.2、创建Redis Cluster集群](https://cloud.tencent.com/developer)
        - [1、进入redis-6379 容器](https://cloud.tencent.com/developer)
        - [2、创建集群](https://cloud.tencent.com/developer)
        - [3、查看节点相关信息](https://cloud.tencent.com/developer)
- [四、测试](https://cloud.tencent.com/developer)
    - [4.1、本机测试](https://cloud.tencent.com/developer)
    - [4.2、外网测试](https://cloud.tencent.com/developer)
    - [4.3、出错可能会用到的命令](https://cloud.tencent.com/developer)
    - [4.4、可能会出的错](https://cloud.tencent.com/developer)
- [五、博主自言](https://cloud.tencent.com/developer)

一、环境

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

大致步骤:😜

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

二、前期准备

2.1、搜索、拉取redis镜像

代码语言:javascript
复制
docker search redis
docker pull redis

2.2、Docker 容器网络

创建虚拟网卡😄

创建虚拟网卡,主要是用于redis-cluster能于外界进行网络通信,一般常用桥接模式。

代码语言:javascript
复制
docker network create myredis 

查看Docker 网卡信息

代码语言:javascript
复制
docker network ls

3、查看dockerr网络详细信息

代码语言:javascript
复制
docker network inspect myredis

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

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

2.3、编写配置文件

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

代码语言:javascript
复制
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  服务器ip地址
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.1、启动redis容器

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

代码语言:javascript
复制
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.2、创建Redis Cluster集群

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

1、进入redis-6379 容器
代码语言:javascript
复制
docker exec -it redis-6379 /bin/bash
2、创建集群
代码语言:javascript
复制
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、出错可能会用到的命令

批量停止容器

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

批量删除容器

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

4.4、可能会出的错

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

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

五、博主自言

👩‍💻

如若存在错误,欢迎大家不啬赐教!!!

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

一起继续努力,或者啊,咱们一起🛌 ☺。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 搭建 Redis Cluster 集群环境
  • 一、环境
  • 二、前期准备
    • 2.1、搜索、拉取redis镜像
      • 2.2、Docker 容器网络
        • 2.3、编写配置文件
        • 三、启动容器
          • 3.1、启动redis容器
            • 3.2、创建Redis Cluster集群
              • 1、进入redis-6379 容器
              • 2、创建集群
              • 3、查看节点相关信息
          • 四、测试
            • 4.1、本机测试
              • 4.2、外网测试
                • 4.3、出错可能会用到的命令
                  • 4.4、可能会出的错
                  • 五、博主自言
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档