ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

在Docker中部署Redis集群

2021-11-30 12:34:42  阅读:130  来源: 互联网

标签:default Redis image redis 集群 conf Docker data restart


在Docker中部署Redis集群

首先拉取Redis镜像

docker pull redis

创建存放Redis配置文件的目录

  • 创建文件夹的目的是为了将文件夹挂载到Docker容器中
# 创建一个文件 名字叫create.sh
touch create.sh

# 编辑文件的内容
 vim create.sh
# ---------------- 文件内容开始 ----------------- 
 for i  in `seq 7001 7006`
do
 mkdir -p ${i}/data
done
# ---------------- 文件内容结束 ---------------- 

# 编辑保存完成之后,运行这个脚本,创建出所需要的文件夹。
sh create.sh

将redis.conf放入到集群各自的文件夹中并修改

  • 目录结构如下图:

2020-11-30_150130

  • 修改redis.conf配置文件的主要参数有:

    port  # 修改每个redis中的端口号
    bind 0.0.0.0 # 表示绑定到哪个ip,0.0.0.0表示不论以什么IP来访问都会接受。
    protected-mode no # 关闭保护模式
    daemonize no # 关闭以守护式进程启动
    cluster-enabled yes # 开启集群功能
    cluster-config-file nodes-7001.conf # 修改每一个redis的集群配置文件
    cluster-node-timeout 5000 # 节点超时时间
    

创建docker-compose.yml文件

  • 接下来就是编写docker-compsoe.yml

    version: "3.4"
    
    x-image:
      &default-image
      redis
    x-restart:
      &default-restart
      always
    x-netmode:
      &default-netmode
      host
      
    services:
      redis1:
        image: *default-image
        restart: *default-restart
        container_name: redis-7001
        ports:
         - "7001:7001"
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ${PWD}/7001/data:/data
          - ${PWD}/7001/redis.conf:/etc/redis/redis.conf
        network_mode: *default-netmode   
         
      redis2:
        image: *default-image
        restart: *default-restart
        container_name: redis-7002
        ports:
         - "7002:7002"
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ${PWD}/7002/data:/data
          - ${PWD}/7002/redis.conf:/etc/redis/redis.conf
        network_mode: *default-netmode
        
      redis3:
        image: *default-image
        restart: *default-restart
        container_name: redis-7003
        ports:
         - "7003:7003"
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ${PWD}/7003/data:/data
          - ${PWD}/7003/redis.conf:/etc/redis/redis.conf
        network_mode: *default-netmode
       
      redis4:
        image: *default-image
        restart: *default-restart
        container_name: redis-7004
        ports:
         - "7004:7004"
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ${PWD}/7004/data:/data
          - ${PWD}/7004/redis.conf:/etc/redis/redis.conf
        network_mode: *default-netmode
       
      redis5:
        image: *default-image
        restart: *default-restart
        container_name: redis-7005
        ports:
         - "7005:7005"
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ${PWD}/7005/data:/data
          - ${PWD}/7005/redis.conf:/etc/redis/redis.conf
        network_mode: *default-netmode
       
      redis6:
        image: *default-image
        restart: *default-restart
        container_name: redis-7006
        ports:
         - "7006:7006"
        command: redis-server /etc/redis/redis.conf
        volumes:
          - ${PWD}/7006/data:/data
          - ${PWD}/7006/redis.conf:/etc/redis/redis.conf
        network_mode: *default-netmode
    

使用 docker-compose 创建容器

  • 在有docker-compose.yml的目录中输入
docker-compose up -d # 以守护式进程的方式运行容器
docker-compsoe ps # 查看由 docker-compose 工具创建出来的容器

# docker-compose stop 停止由 docker-compose 工具创建出来的容器运行
# docker-compose rm 删除由 docker-compose 工具创建出来的容器

设置 Redis 集群

  • 上面只是启动了6个redis容器,但并没有设置集群。
  • 我们先随便进入一个redis容器,执行下面的命令,将IP替换成自己宿主机的IP
docker exec -it redis-7001 redis-cli -p 7001 \
--cluster create 192.168.20.255:7001 192.168.20.255:7002 192.168.20.255:7003 \
192.168.20.255:7004 192.168.20.255:7005 192.168.20.255:7006 \
--cluster-replicas 1
  • 当出现Can I set the above configuration? (type 'yes' to accept)时,输入 yes,完成集群的设置。

至此,基于 Docker 部署的 redis-cluster 集群就已经完成

标签:default,Redis,image,redis,集群,conf,Docker,data,restart
来源: https://blog.csdn.net/weixin_44414460/article/details/121602401

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有