• docker下搭建redis集群


    1. 环境准备

    准备好Linux系统机器,并安装好docker,阅读这篇文章前请先了解清楚docker的基本知识并且会熟悉运用docker的常用命令。学习docker基础知识可以参考这篇博文
    安装好并启动docker后就可以开始搭建redis了

    2. docker容器下安装redis

    本篇文章我们安装redis6.0.6版本,执行以下命令直接下载redis6.0.6版本镜像

    #dokcer pull 镜像名:版本号
    docker pull redis:6.0.6
    
    • 1
    • 2

    安装好后再执行 docker images命令,查看到redis6.0.6镜像则安装成功
    在这里插入图片描述

    3. 搭建redis集群

    安装好redis镜像后,此时redis还只是单体,我们需要搭建集群,集群配置如下:

    • docker端口号→宿主机对外暴露的端口:7000→7000,7001→7001,7002→7002,7003→7003,7004→7004,7005→7005
    • 挂载目录:data(数据) → /usr/local/docker/redis/端口号/data/
      conf(配置文件)→ /usr/local/docker/端口号/redis.conf
    • 集群模式:三主三从
    • 节点容器名称:redis-7000,redis-7001,redis-7002,redis-7003,redis-7004,redis-7005

    回到linux,首先创建好挂载目录

    # 批量创建redis节点7000-7005目录
    mkdir -p /usr/local/docker/redis/700{0,1,2,3,4,5}/data
    
    • 1
    • 2

    然后分别创建个节点的配置文件,并添加配置信息

    vim /usr/local/docker/redis/7000/redis.conf
    
    # 添加以下配置信息
    port 7000									
    protected-mode no								
    daemonize no
    appendonly yes									
    cluster-enabled yes							
    cluster-config-file nodes.conf					
    cluster-node-timeout 20000						
    
    ----------------------------------------------------------------------
    配置说明:
    port # 节点端口
    protected-mode # 保护模式,默认值 yes,即开启
    daemonize # 是否以守护线程的方式启动(后台启动),默认 no;
    appendonly # 是否开启 AOF 持久化模式,默认 no;
    cluster-enabled # 是否开启集群模式,默认 no
    cluster-config-file # 集群节点信息文件
    cluster-node-timeout # 集群节点连接超时时间(ms)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    创建7000节点配置文件后将它复制到其他节点目录下,注意复制到其他目录需要将配置文件的port改为该节点的端口号

    cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7001
    cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7002
    cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7003
    cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7004
    cp /usr/local/docker/redis/7000/redis.conf /usr/local/docker/redis/7005
    
    • 1
    • 2
    • 3
    • 4
    • 5

    接下来就可以创建每个节点的docker容器,以7000节点为例

    # 创建7000节点容器
    docker run \
    -p 7000:7000 \
    -v /usr/local/docker/redis/7000/redis.conf:/etc/redis/redis.conf \
    -v /usr/local/docker/redis/7000/data:/data \
    --name redis-7000 \
    --net host \
    -d redis:6.0.6 redis-server /etc/redis/redis.conf
    
    ----------------------------------------------------------------
    命令说明
    -p 7000:7000 \		#宿主机端口号:容器端口	端口映射
    -v /usr/local/docker/redis/7000/redis.conf:/etc/redis/redis.conf \	#宿主机目录:容器目录  redis配置文件挂载
    -v /usr/local/docker/redis/7000/data:/data \	#redis数据文件挂载
    --name redis-7000 \		# 给容器起个名称
    --net host \			# 指定网络类型为host,即与宿主机使用同一网络
    -d redis:6.0.6 redis-server /etc/redis/redis.conf	#运行容器 并使用配置文件启动容器内的 redis-server  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    然后分别执行以下命令创建并运行其他节点容器

    # 创建7001节点容器
    docker run \
    -p 7001:7001 \
    -v /usr/local/docker/redis/7001/redis.conf:/etc/redis/redis.conf \
    -v /usr/local/docker/redis/7001/data:/data \
    --name redis-7001 \
    --net host \
    -d redis:6.0.6 redis-server /etc/redis/redis.conf
    
    # 创建7002节点容器
    docker run \
    -p 7002:7002 \
    -v /usr/local/docker/redis/7002/redis.conf:/etc/redis/redis.conf \
    -v /usr/local/docker/redis/7002/data:/data \
    --name redis-7002 \
    --net host \
    -d redis:6.0.6 redis-server /etc/redis/redis.conf
    
    # 创建7003节点容器
    docker run \
    -p 7003:7003 \
    -v /usr/local/docker/redis/7003/redis.conf:/etc/redis/redis.conf \
    -v /usr/local/docker/redis/7003/data:/data \
    --name redis-7003 \
    --net host \
    -d redis:6.0.6 redis-server /etc/redis/redis.conf
    
    # 创建7004节点容器
    docker run \
    -p 7004:7004 \
    -v /usr/local/docker/redis/7004/redis.conf:/etc/redis/redis.conf \
    -v /usr/local/docker/redis/7004/data:/data \
    --name redis-7004 \
    --net host \
    -d redis:6.0.6 redis-server /etc/redis/redis.conf
    
    # 创建7005节点容器
    docker run \
    -p 7005:7005 \
    -v /usr/local/docker/redis/7005/redis.conf:/etc/redis/redis.conf \
    -v /usr/local/docker/redis/7005/data:/data \
    --name redis-7005 \
    --net host \
    -d redis:6.0.6 redis-server /etc/redis/redis.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    此时我们已经创建好了所有节点,但各个节点还是相互独立的,我们需要将他们整合成集群,执行以下命令建立集群

    redis-cli --cluster create --cluster-replicas 1 \
    192.168.93.71:7000 192.168.93.71:7001 192.168.93.71:7002 \
    192.168.93.71:7003 192.168.93.71:7004 192.168.93.71:7005
    
    • 1
    • 2
    • 3

    出现以下结果则表示集群创建成功

    在这里插入图片描述在这里插入图片描述

    我们可以执行以下命令进入其中一个节点查看集群信息

    # 进入7000节点容器
    docker exec -it redis-7000 bash
    # 进入redis
    redis-cli -p 7000
    # 查看集群喜喜
    cluster nodes
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    出现以下结果表示集群创建成功

    在这里插入图片描述

  • 相关阅读:
    第1次 更多的bash shell命令
    定时器及其应用
    华为云云耀云服务器L实例评测|教你如何使用云服务器L实例
    Linux: FirewallD和Iptables防火墙 使用
    【AI大模型】Transformers大模型库(十一):Trainer训练类
    ActiveMQ是什么?-九五小庞
    mybatis入门
    【PTA-训练day8】L2-020 功夫传人 + L1-032 Left-pad
    npm install:Could not resolve dependency:peer...
    LVS负载均衡集群
  • 原文地址:https://blog.csdn.net/weixin_44947701/article/details/128161008