docker-compose启动redis多机集群的实现(6台服务器3主3从)

 更新时间:2022年07月13日 15:16:10   作者:开发运维玄德公  
本文主要介绍了docker-compose启动redis多机集群的实现(6台服务器3主3从),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. 环境说明

节点IP
redis-node-110.10.239.31
redis-node-210.10.239.32
redis-node-310.10.239.33
redis-node-410.10.239.34
redis-node-510.10.239.35
redis-node-610.10.239.36

2. 集群部署

redis-node-1

yml 文件

version: '2.2'
services:
  redis-node-1:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-1
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-1:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存储

因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。

[root@liubei-01 redis-cluster]# mkdir ./redis-cluster_data-1
[root@liubei-01 redis-cluster]# chown 1001  ./redis-cluster_data-1

启动

[root@liubei-01 redis-cluster]# docker-compose up -d

查看结果

[root@liubei-01 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
--------------------------------------------------------------------------------------------------------
redis-node-1   /opt/bitnami/scripts/redis ...   Up

redis-node-2

version: '2.2'
services:
  redis-node-2:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-2
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-2:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存储

因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。

[root@liubei-02 redis-cluster]# mkdir ./redis-cluster_data-2
[root@liubei-02 redis-cluster]# chown 1001  ./redis-cluster_data-2

启动

[root@liubei-02 redis-cluster]# docker-compose up -d

查看结果

[root@liubei-02 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
--------------------------------------------------------------------------------------------------------
redis-node-2   /opt/bitnami/scripts/redis ...   Up

redis-node-3

version: '2.2'

services:
  redis-node-3:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-3
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-3:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存储

因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。

[root@liubei-03 redis-cluster]# mkdir ./redis-cluster_data-3
[root@liubei-03 redis-cluster]# chown 1001  ./redis-cluster_data-3

启动

[root@liubei-03 redis-cluster]# docker-compose up -d

查看结果

[root@liubei-03 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
--------------------------------------------------------------------------------------------------------
redis-node-3   /opt/bitnami/scripts/redis ...   Up

redis-node-4

version: '2.2'
services:
  redis-node-2:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-4
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-4:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存储

因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。

[root@liubei-04 redis-cluster]# mkdir ./redis-cluster_data-4
[root@liubei-04 redis-cluster]# chown 1001  ./redis-cluster_data-4

启动

[root@liubei-04 redis-cluster]# docker-compose up -d

查看结果

[root@liubei-04 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
--------------------------------------------------------------------------------------------------------
redis-node-4   /opt/bitnami/scripts/redis ...   Up

redis-node-5

version: '2.2'

services:
  redis-node-5:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-5
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-5:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存储

因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。

[root@liubei-05 redis-cluster]# mkdir ./redis-cluster_data-5
[root@liubei-05 redis-cluster]# chown 1001  ./redis-cluster_data-5

启动

[root@liubei-05 redis-cluster]# docker-compose up -d

查看结果

[root@liubei-05 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
--------------------------------------------------------------------------------------------------------
redis-node-5   /opt/bitnami/scripts/redis ...   Up     

redis-node-6

version: '2.2'

services:
  redis-node-6:
    image: bitnami/redis-cluster:7.0
    restart: always
    container_name: redis-node-6
    network_mode: "host"
    volumes:
      - ./redis-cluster_data-6:/bitnami/redis/data
    environment:
      - 'REDIS_PASSWORD=liubei@161'
      - 'REDIS_NODES=10.10.239.31 10.10.239.32 10.10.239.33 10.10.239.34 10.10.239.35 10.10.239.36'

持久化存储

因为容器中执行初始化的不是root用户,自动创建挂载文件权限一般会有问题。我这里容器中执行初始化的用户对应宿主机ID是1001的用户,因此提前给了权限(当然你也可以直接给777权限,但不建议)。
如果你不是这个用户,可以先给777权限。等容器启动后看初始化后的文件属主是谁,就把该目录的属主改成谁,然后改回755或750权限。

[root@liubei-06 redis-cluster]# mkdir ./redis-cluster_data-6
[root@liubei-06 redis-cluster]# chown 1001  ./redis-cluster_data-6

启动

[root@liubei-06 redis-cluster]# docker-compose up -d

查看结果

[root@liubei-06 redis-cluster]# docker-compose ps
    Name                  Command               State                        Ports
--------------------------------------------------------------------------------------------------------
redis-node-6   /opt/bitnami/scripts/redis ...   Up

3. 初始化

 redis-cli -h 10.10.239.31 -a liubei@161 --cluster create 10.10.239.31:6379 10.10.239.32:6379 10.10.239.33:6379 10.10.239.34:6379 10.10.239.35:6379 10.10.239.36:6379 --cluster-replicas 1

输出结果和状态查看参考另一篇文档《docker-compose启动redis伪集群》初始化部分。

4. 测试

I have no name!@0fc49662e765:/$ redis-cli -h 10.10.239.31 -a liubei@161 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
10.10.239.31:6379> set name liubei
-> Redirected to slot [5798] located at 10.10.239.35:6379
OK
10.10.239.35:6379> get name
"liubei"
10.10.239.35:6379>

说明:
进入10.10.239.31的redis容器,从该节点进入集群,写入数据。
显示写入在 10.10.239.35 这个节点
同时我们的连接也跳到了这个节点。
我们读一下,读到了数据。
换一个节点连接,效果相同。

可参考另一篇文档《docker-compose启动redis伪集群》测试部分。

到此这篇关于docker-compose启动redis多机集群的实现(6台服务器3主3从)的文章就介绍到这了,更多相关docker-compose redis多机集群内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 数据卷(Data Volumes)及dockefile详解

    数据卷(Data Volumes)及dockefile详解

    在生产环境中使用Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作,今天给大家介绍下数据卷(Data Volumes)及dockefile的相关知识,感兴趣的朋友一起看看吧
    2023-01-01
  • Docker自定义JDK镜像并拉取至阿里云镜像仓库超详细攻略

    Docker自定义JDK镜像并拉取至阿里云镜像仓库超详细攻略

    Docker仓库是集中存放镜像的地方,分为公共仓库和私有仓库,这篇文章主要给大家介绍了关于Docker自定义JDK镜像并拉取至阿里云镜像仓库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 利用宝塔面板和docker快速部署网站的基本流程

    利用宝塔面板和docker快速部署网站的基本流程

    当你有了一台服务器,就会折腾往这台服务器上部署各种好玩的网站,本文将以部署filebrowser举例介绍网站部署的基本流程,感兴趣的朋友一起看看吧
    2023-12-12
  • 使用docker部署django技术栈项目的方法步骤

    使用docker部署django技术栈项目的方法步骤

    这篇文章主要介绍了使用docker部署django技术栈项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • docker如何部署带有界面的registry仓库

    docker如何部署带有界面的registry仓库

    这篇文章主要介绍了docker如何部署带有界面的registry仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境

    Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境

    本文给大家分享的是使用Docker + Nodejs + Kafka + Redis + MySQL模拟搭建起来的商品秒杀环境,非常的实用和热门,有需要的小伙伴可以参考下
    2017-01-01
  • Docker 搭建集群MongoDB的实现步骤

    Docker 搭建集群MongoDB的实现步骤

    这篇文章主要介绍了Docker 搭建集群MongoDB的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 安装harbor作为docker镜像仓库的问题

    安装harbor作为docker镜像仓库的问题

    这篇文章主要介绍了安装harbor作为docker镜像仓库,主要包括docker和docker-compose离线部署,安装harbor作为本地的仓库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • docker 启动elasticsearch镜像,挂载目录后报错的解决

    docker 启动elasticsearch镜像,挂载目录后报错的解决

    这篇文章主要介绍了docker 启动 elasticsearch镜像,挂载目录后报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 使用Docker部署MySQL 5.7&8.0主从集群的方法步骤

    使用Docker部署MySQL 5.7&8.0主从集群的方法步骤

    这篇文章主要介绍了使用Docker部署MySQL 5.7&8.0主从集群的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论