在 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 节点,分别运行在 7000
到 7005
端口。
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
转载时请以链接形式注明出处
评论