docker-compose搭建redis集群


在 macOS 上使用 docker-compose 搭建 Redis 集群,可以按照以下步骤进行操作:

1. 创建 docker-compose.yml 文件

首先,你需要在一个空目录下创建一个 docker-compose.yml 文件,来定义 Redis 集群的各个节点。

version: '3'

services:
  redis-node-1:
    image: redis:7
    container_name: redis-node-1
    network_mode: host
    command: ["redis-server", "--port", "6371", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--cluster-announce-ip", "127.0.0.1", "--cluster-announce-port", "6371", "--requirepass", "123456", "--masterauth", "123456"]
    volumes:
      - ./data/redis-node-1:/data

  redis-node-2:
    image: redis:7
    container_name: redis-node-2
    network_mode: host
    command: ["redis-server", "--port", "6372", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--cluster-announce-ip", "127.0.0.1", "--cluster-announce-port", "6372", "--requirepass", "123456", "--masterauth", "123456"]
    volumes:
      - ./data/redis-node-2:/data

  redis-node-3:
    image: redis:7
    container_name: redis-node-3
    network_mode: host
    command: ["redis-server", "--port", "6373", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--cluster-announce-ip", "127.0.0.1", "--cluster-announce-port", "6373", "--requirepass", "123456", "--masterauth", "123456"]
    volumes:
      - ./data/redis-node-3:/data

  redis-node-4:
    image: redis:7
    container_name: redis-node-4
    network_mode: host
    command: ["redis-server", "--port", "6374", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--cluster-announce-ip", "127.0.0.1", "--cluster-announce-port", "6374", "--requirepass", "123456", "--masterauth", "123456"]
    volumes:
      - ./data/redis-node-4:/data

  redis-node-5:
    image: redis:7
    container_name: redis-node-5
    network_mode: host
    command: ["redis-server", "--port", "6375", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--cluster-announce-ip", "127.0.0.1", "--cluster-announce-port", "6375", "--requirepass", "123456", "--masterauth", "123456"]
    volumes:
      - ./data/redis-node-5:/data

  redis-node-6:
    image: redis:7
    container_name: redis-node-6
    network_mode: host
    command: ["redis-server", "--port", "6376", "--cluster-enabled", "yes", "--cluster-config-file", "/data/nodes.conf", "--cluster-node-timeout", "5000", "--appendonly", "yes", "--cluster-announce-ip", "127.0.0.1", "--cluster-announce-port", "6376", "--requirepass", "123456", "--masterauth", "123456"]
    volumes:
      - ./data/redis-node-6:/data

2. 启动 Docker 容器

在创建了 docker-compose.yml 文件之后,进入该文件所在的目录,执行以下命令启动 Redis 集群:

docker-compose up -d

这会启动 6 个 Redis 节点,分别运行在 70007005 端口。

3. 初始化 Redis 集群

一旦容器启动,你需要在一个节点上执行 Redis 集群的初始化命令。你可以通过执行以下命令来进入其中一个 Redis 容器(例如 redis-node-1)并初始化集群:

docker exec -it redis-node-1 redis-cli -a 123456 --cluster create \
  127.0.0.1:6371 127.0.0.1:6372 127.0.0.1:6373 \
  127.0.0.1:6374 127.0.0.1:6375 127.0.0.1:6376 \
  --cluster-replicas 1

4. 验证集群状态

初始化完集群后,你可以执行以下命令来验证 Redis 集群是否正常工作:

docker exec -it redis-node-1 redis-cli -a 123456 -c -h 127.0.0.1 -p 6371 cluster info

如果集群工作正常,你应该能看到类似以下的输出:

cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:1000
cluster_stats_messages_pong_sent:1000

5. 访问 Redis 集群

现在,集群已经启动并且运行在 127.0.0.1 上的 6 个端口(6371-6376)。你可以通过任何 Redis 客户端(如 redis-cli 或 DBeaver)连接到任一节点进行操作。

例如,通过 redis-cli 连接到集群中的任意节点:

redis-cli -c -h 127.0.0.1 -a 123456 -p 6371

注意事项

  • 这个配置适用于开发和测试环境,不适用于生产环境。生产环境下,Redis 集群的节点应该分布在不同的物理服务器或虚拟机上。
  • 如果你在 macOS 上遇到 Docker 容器与主机之间的网络问题,确保在 docker-compose.yml 中配置了正确的端口映射,并且没有与其他程序发生端口冲突。

通过这些步骤,你应该能够在 macOS 上成功搭建并运行一个 Redis 集群。

本文地址:https://www.blear.cn/article/redis-cluster

转载时请以链接形式注明出处

评论
受监管部门要求,个人网站不允许评论功能,评论已关闭,抱歉!