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

作者:开发运维玄德公 时间:2023-05-04 17:44:21 

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伪集群》测试部分。

来源:https://blog.csdn.net/xingzuo_1840/article/details/125644040

标签:docker-compose,redis,集群
0
投稿

猜你喜欢

  • 全面解析企业服务器I/O优化

    2009-12-18 10:42:00
  • Linux CentOS使用crontab设置定时重启的方法

    2023-10-06 18:32:54
  • 虚拟机克隆linux centos6.5系统网卡配置图文教程

    2021-07-21 00:52:35
  • GoDaddy空间为何上传了网页,网站却不能显示?

    2010-04-09 12:46:00
  • 搜索型注入之我看---注入不分家

    2009-04-23 18:29:00
  • Linux操作系统下创建DBCA报错问题的解决

    2009-09-20 19:52:00
  • 详解Docker Volume 之权限管理

    2023-06-24 18:58:45
  • Linux 6下安装编译安装Nginx的步骤

    2022-05-08 17:11:18
  • VMware虚拟机安装及如何联网

    2023-11-04 23:52:06
  • 关于WordPress需要知道的100件事:主题篇

    2011-04-18 12:31:00
  • 网编为您解析做网站的心态

    2008-10-17 10:08:00
  • 端午节推广网站十大方法

    2008-06-06 16:37:00
  • Windows服务器下查IIS被挂iframe木马

    2009-03-02 17:32:00
  • 使用GoogleContainerTools容器化jib构建docker镜像

    2023-06-10 18:44:01
  • Vmware中OpenWrt15.05网络连接设置

    2022-05-19 00:49:39
  • 在Windows系统下搭建SVN服务器

    2009-08-30 08:00:00
  • Windows Server 2008之数据安全

    2008-11-20 11:27:00
  • Linux系统中创建SSH服务器别名的两种方法

    2023-07-19 22:01:55
  • 成功站长要做到的几个坚持

    2009-03-05 13:28:00
  • Google发布AdSense for Feeds

    2008-08-18 21:16:00
  • asp之家 网站运营 m.aspxhome.com