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

 更新时间:2022年7月13日 17:41  点击:760 作者:开发运维玄德公

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多机集群内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!

原文出处:https://blog.csdn.net/xingzuo_1840/article/details/125644040

[!--infotagslink--]

相关文章

  • Redis连接池配置及初始化实现

    这篇文章主要介绍了Redis连接池配置及初始化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • 详解redis desktop manager安装及连接方式

    这篇文章主要介绍了redis desktop manager安装及连接方式,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-15
  • 浅谈redis key值内存消耗以及性能影响

    这篇文章主要介绍了浅谈redis key值内存消耗以及性能影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-07
  • lua读取redis数据的null判断示例代码

    最近在工作中遇到了一个问题,通过查找相关资料才得知原因是因为返回结果的问题,下面这篇文章主要给大家介绍了关于lua读取redis数据的null判断的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下...2020-06-30
  • SpringBoot集成Redis实现消息队列的方法

    这篇文章主要介绍了SpringBoot集成Redis实现消息队列的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • redis setIfAbsent和setnx的区别与使用说明

    这篇文章主要介绍了redis setIfAbsent和setnx的区别与使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-04
  • Redis的Expire与Setex区别说明

    这篇文章主要介绍了Redis的Expire与Setex区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-15
  • 浅谈Docker-compose中的depends_on顺序的问题解决

    本文主要介绍了浅谈Docker-compose中的depends_on顺序的问题解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-11-03
  • 查看Redis内存信息的命令

    Redis 是一个开源、高性能的Key-Value数据库,被广泛应用在服务器各种场景中。本文介绍几个查看Redis内存信息的命令,包括常用的info memory、info keyspace、bigkeys等。...2021-01-15
  • Redis的持久化方案详解

    在本篇文章里小编给大家整理的是关于Redis的持久化方案详解,有兴趣的朋友们可以参考下。...2021-01-15
  • @CacheEvict + redis实现批量删除缓存

    这篇文章主要介绍了@CacheEvict + redis实现批量删除缓存方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-12
  • redis 交集、并集、差集的具体使用

    这篇文章主要介绍了redis 交集、并集、差集的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • JAVA中 redisTemplate 和 jedis的配合使用操作

    这篇文章主要介绍了JAVA中 redisTemplate 和 jedis的配合使用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-13
  • Redis集群水平扩展、集群中添加以及删除节点的操作

    这篇文章主要介绍了Redis集群水平扩展、集群中添加以及删除节点的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-25
  • 深入理解redis中multi与pipeline

    pipeline 只是把多个redis指令一起发出去,redis并没有保证这些指定的执行是原子的;multi相当于一个redis的transaction的,保证整个操作的原子性,避免由于中途出错而导致最后产生的数据不一致。本文详细的介绍,感兴趣的可以了解一下...2021-06-02
  • 解决redisTemplate中leftPushAll隐性bug的问题

    这篇文章主要介绍了解决redisTemplate中leftPushAll隐性bug的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-13
  • 解决Redis开启远程访问及密码问题

    这篇文章主要介绍了Redis开启远程访问及密码的教程,文中给大家提到了Redis启动报错解决方法,需要的朋友可以参考下...2021-01-15
  • 使用Redis获取数据转json,解决动态泛型传参的问题

    这篇文章主要介绍了使用Redis获取数据转json,解决动态泛型传参的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-15
  • redis中的数据结构和编码详解

    本文主要和大家分享几种Redis数据结构详解,希望文中的案例和代码,能帮助到大家。...2021-01-15