使用docker快速搭建redis-cluster集群

1、安装docker环境

2、准备创建容器

因为redis-cluster集群模式最起码需要6个redis节点,做成三主三从模式,我们使用命令快速创建6个docker容器

for port in $(seq 7001 7006); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf

cat << EOF >> /mydata/redis/node-${port}/conf/redis.conf
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.0.112
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
appendonly yes
EOF

docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d redis:5.0.7 redis-server /etc/redis/redis.conf; \
done

3、创建集群

随便进入到其中一个容器,使用如下命令

docker exec -it redis-7001 /bin/bash

再使用命令,快速创建集群,ip需要换成你们自己的ip。

redis-cli --cluster create 192.168.0.112:7001 192.168.0.112:7002 192.168.0.112:7003 192.168.0.112:7004 192.168.0.112:7005 192.168.0.112:7006 --cluster-replicas 1

执行改命令之后,会出现下面的详细的集群信息,可以看到7001,7002,7003为M,也就是Master节点,7004为7002的从节点,7005为7003的从节点,7006为7001的从节点,随后输入yes,即可确认创建集群。

>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.0.112:7005 to 192.168.0.112:7001
Adding replica 192.168.0.112:7006 to 192.168.0.112:7002
Adding replica 192.168.0.112:7004 to 192.168.0.112:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 0f07e232663603d28e9d042efbbe46a3b30adf59 192.168.0.112:7001
   slots:[0-5460] (5461 slots) master
M: e720b7f43938642529980b16d1a528d21dd09d11 192.168.0.112:7002
   slots:[5461-10922] (5462 slots) master
M: 771e51f6b0aba5e5b6d0d5a9ae6f6173dc68b5ba 192.168.0.112:7003
   slots:[10923-16383] (5461 slots) master
S: 02b328977da2c153f093f0eec6291abe6ef830fa 192.168.0.112:7004
   replicates e720b7f43938642529980b16d1a528d21dd09d11
S: 2393750e5628364850a5c539c7c4f4941e00279c 192.168.0.112:7005
   replicates 771e51f6b0aba5e5b6d0d5a9ae6f6173dc68b5ba
S: 237687a3a1e8f04e3fb1fa202d796b3fdf2f8459 192.168.0.112:7006
   replicates 0f07e232663603d28e9d042efbbe46a3b30adf59
Can I set the above configuration? (type 'yes' to accept): 

输入完yes之后,可以看到集群创建成功,7001分配的槽索引为0-5460,7002分配的槽索引为5461-10922,7003分配的槽索引为10923-16383,共16384个槽,达到了数据分片。

>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...
>>> Performing Cluster Check (using node 192.168.0.112:7001)
M: 0f07e232663603d28e9d042efbbe46a3b30adf59 192.168.0.112:7001
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 237687a3a1e8f04e3fb1fa202d796b3fdf2f8459 192.168.0.112:7006
   slots: (0 slots) slave
   replicates 0f07e232663603d28e9d042efbbe46a3b30adf59
M: 771e51f6b0aba5e5b6d0d5a9ae6f6173dc68b5ba 192.168.0.112:7003
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 2393750e5628364850a5c539c7c4f4941e00279c 192.168.0.112:7005
   slots: (0 slots) slave
   replicates 771e51f6b0aba5e5b6d0d5a9ae6f6173dc68b5ba
M: e720b7f43938642529980b16d1a528d21dd09d11 192.168.0.112:7002
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: 02b328977da2c153f093f0eec6291abe6ef830fa 192.168.0.112:7004
   slots: (0 slots) slave
   replicates e720b7f43938642529980b16d1a528d21dd09d11
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

4、other

在某一主节点宕机之后,其所对用的从节点会被提升为主节点,而后宕机的主节点在恢复之后,会成为从节点。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Docker Compose 搭建 Redis 集群,你可以按照以下步骤进行操作: 1. 创建一个名为 `docker-compose.yml` 的文件,并在其中定义 Redis 服务。以下是一个基本的示例: ```yaml version: '3' services: redis-1: image: redis ports: - 6379:6379 command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes redis-2: image: redis ports: - 6380:6379 command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes redis-3: image: redis ports: - 6381:6379 command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes ``` 在上面的示例中,我们定义了三个 Redis 节点(`redis-1`,`redis-2` 和 `redis-3`),并使用不同的端口(6379,6380 和 6381)。 2. 运行以下命令来启动 Redis 集群: ```bash docker-compose up -d ``` 这将启动 Redis 容器,并将它们连接到一个集群中。 3. 等待一段时间,直到容器成功启动,并且集群已经建立。你可以使用以下命令来检查集群状态: ```bash docker exec -it <container_id> redis-cli cluster nodes ``` 替换 `<container_id>` 为 Redis 容器的 ID。该命令将显示正在运行的节点和它们之间的连接信息。 注意:在建立集群时,你需要使用单独的 IP 地址和端口来配置每个节点,以确保它们能够正确通信。 希望这可以帮助你搭建 Redis 集群使用 Docker Compose!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值