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

准备工作

1、docker image:redis:6.0.9

2、确定本机ip地址,本文假设:192.168.2.171

搭建步骤

以下步骤在本地redis工作目录(比如/Users/huangxi/redis_cluster)下进行。

1、创建模版redis-cluster.tmpl:

port ${PORT}

requirepass 1234

masterauth 1234

protected-mode no

daemonize no

appendonly yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 15000

cluster-announce-ip 192.168.2.171

cluster-announce-port ${PORT}

cluster-announce-bus-port 1${PORT}

2、执行脚本:

for port in `seq 6371 6376`; do \

  mkdir -p ${port}/conf \

  && PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf \

  && mkdir -p ${port}/data;\

done

3、准备docker-compose配置文件docker-compose.yml:

version: '3'

services:

  redis-cluster-01:

    image: redis:6.0.9

    container_name: redis-cluster-01

    environment:

      TZ: Asia/Shanghai

    networks:

      - default

    ports:

      - 6371:6371

      - 16371:16371

    command: ["redis-server","/etc/redis/redis.conf"]

    volumes:

      - ./6371/conf:/etc/redis/

      - ./6371/data:/data

  redis-cluster-02:

    image: redis:6.0.9

    container_name: redis-cluster-02

    environment:

      TZ: Asia/Shanghai

    networks:

      - default

    ports:

      - 6372:6372

      - 16372:16372

    command: ["redis-server","/etc/redis/redis.conf"]

    volumes:

      - ./6372/conf:/etc/redis/

      - ./6372/data:/data

  redis-cluster-03:

    image: redis:6.0.9

    container_name: redis-cluster-03

    environment:

      TZ: Asia/Shanghai

    networks:

      - default

    ports:

      - 6373:6373

      - 16373:16373

    command: ["redis-server","/etc/redis/redis.conf"]

    volumes:

      - ./6373/conf:/etc/redis/

      - ./6373/data:/data

  redis-cluster-04:

    image: redis:6.0.9

    container_name: redis-cluster-04

    environment:

      TZ: Asia/Shanghai

    networks:

      - default

    ports:

      - 6374:6374

      - 16374:16374

    command: ["redis-server","/etc/redis/redis.conf"]

    volumes:

      - ./6374/conf:/etc/redis/

      - ./6374/data:/data

  redis-cluster-05:

    image: redis:6.0.9

    container_name: redis-cluster-05

    environment:

      TZ: Asia/Shanghai

    networks:

      - default

    ports:

      - 6375:6375

      - 16375:16375

    command: ["redis-server","/etc/redis/redis.conf"]

    volumes:

      - ./6375/conf:/etc/redis/

      - ./6375/data:/data

  redis-cluster-06:

    image: redis:6.0.9

    container_name: redis-cluster-06

    environment:

      TZ: Asia/Shanghai

    networks:

      - default

    ports:

      - 6376:6376

      - 16376:16376

    command: ["redis-server","/etc/redis/redis.conf"]

    volumes:

      - ./6376/conf:/etc/redis/

      - ./6376/data:/data

4、创建并启动docker

docker-compose up -d

(删除命令:docker-compose down)

5、创建集群

# 进入容器

docker exec -it redis-cluster-01 /bin/sh

# 进入bin目录

cd /usr/local/bin

# 创建集群

redis-cli -a 1234 --cluster create 192.168.2.171:6371 192.168.2.171:6372 192.168.2.171:6373 192.168.2.171:6374 192.168.2.171:6375 192.168.2.171:6376 --cluster-replicas 1

执行结果:

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

>>> 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.2.171:6375 to 192.168.2.171:6371

Adding replica 192.168.2.171:6376 to 192.168.2.171:6372

Adding replica 192.168.2.171:6374 to 192.168.2.171:6373

>>> Trying to optimize slaves allocation for anti-affinity

[WARNING] Some slaves are in the same host as their master

M: 7e08d60f9b311eb9e0c518a1f06566f76d245b10 192.168.2.171:6371

   slots:[0-5460] (5461 slots) master

M: 8fa013a150888fcf34e959f1d70ddcd46bd12225 192.168.2.171:6372

   slots:[5461-10922] (5462 slots) master

M: 8494aaa1a777e295a273844cf5e4873a3a968a6f 192.168.2.171:6373

   slots:[10923-16383] (5461 slots) master

S: 876a2e6e09b3ec20435e0ff0d6091ef4e4e03d71 192.168.2.171:6374

   replicates 8fa013a150888fcf34e959f1d70ddcd46bd12225

S: 2936d376dbbf2f631977c4eedc6907d48996fbd4 192.168.2.171:6375

   replicates 8494aaa1a777e295a273844cf5e4873a3a968a6f

S: c2280cd5d6b31eb07196e050076831492ed062ff 192.168.2.171:6376

   replicates 7e08d60f9b311eb9e0c518a1f06566f76d245b10

Can I set the above configuration? (type 'yes' to accept): yes

>>> 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.2.171:6371)

M: 7e08d60f9b311eb9e0c518a1f06566f76d245b10 192.168.2.171:6371

   slots:[0-5460] (5461 slots) master

   1 additional replica(s)

S: 2936d376dbbf2f631977c4eedc6907d48996fbd4 192.168.2.171:6375

   slots: (0 slots) slave

   replicates 8494aaa1a777e295a273844cf5e4873a3a968a6f

S: 876a2e6e09b3ec20435e0ff0d6091ef4e4e03d71 192.168.2.171:6374

   slots: (0 slots) slave

   replicates 8fa013a150888fcf34e959f1d70ddcd46bd12225

M: 8494aaa1a777e295a273844cf5e4873a3a968a6f 192.168.2.171:6373

   slots:[10923-16383] (5461 slots) master

   1 additional replica(s)

S: c2280cd5d6b31eb07196e050076831492ed062ff 192.168.2.171:6376

   slots: (0 slots) slave

   replicates 7e08d60f9b311eb9e0c518a1f06566f76d245b10

M: 8fa013a150888fcf34e959f1d70ddcd46bd12225 192.168.2.171:6372

   slots:[5461-10922] (5462 slots) master

   1 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

6、检查集群

redis-cli -a 1234 --cluster check 192.168.2.171:6371

执行结果:

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

192.168.2.171:6371 (7e08d60f...) -> 0 keys | 5461 slots | 1 slaves.

192.168.2.171:6373 (8494aaa1...) -> 0 keys | 5461 slots | 1 slaves.

192.168.2.171:6372 (8fa013a1...) -> 0 keys | 5462 slots | 1 slaves.

[OK] 0 keys in 3 masters.

0.00 keys per slot on average.

>>> Performing Cluster Check (using node 192.168.2.171:6371)

M: 7e08d60f9b311eb9e0c518a1f06566f76d245b10 192.168.2.171:6371

   slots:[0-5460] (5461 slots) master

   1 additional replica(s)

S: 2936d376dbbf2f631977c4eedc6907d48996fbd4 192.168.2.171:6375

   slots: (0 slots) slave

   replicates 8494aaa1a777e295a273844cf5e4873a3a968a6f

S: 876a2e6e09b3ec20435e0ff0d6091ef4e4e03d71 192.168.2.171:6374

   slots: (0 slots) slave

   replicates 8fa013a150888fcf34e959f1d70ddcd46bd12225

M: 8494aaa1a777e295a273844cf5e4873a3a968a6f 192.168.2.171:6373

   slots:[10923-16383] (5461 slots) master

   1 additional replica(s)

S: c2280cd5d6b31eb07196e050076831492ed062ff 192.168.2.171:6376

   slots: (0 slots) slave

   replicates 7e08d60f9b311eb9e0c518a1f06566f76d245b10

M: 8fa013a150888fcf34e959f1d70ddcd46bd12225 192.168.2.171:6372

   slots:[5461-10922] (5462 slots) master

   1 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

7、查看集群状态

% redis-cli -c -a 1234 -h 192.168.2.171 -p 6376

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

192.168.2.171:6376> 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:452

cluster_stats_messages_pong_sent:438

cluster_stats_messages_meet_sent:1

cluster_stats_messages_sent:891

cluster_stats_messages_ping_received:438

cluster_stats_messages_pong_received:453

cluster_stats_messages_received:891

192.168.2.171:6376> cluster nodes

c2280cd5d6b31eb07196e050076831492ed062ff 192.168.2.171:6376@16376 myself,slave 7e08d60f9b311eb9e0c518a1f06566f76d245b10 0 1658286098000 1 connected

2936d376dbbf2f631977c4eedc6907d48996fbd4 192.168.2.171:6375@16375 slave 8494aaa1a777e295a273844cf5e4873a3a968a6f 0 1658286098009 3 connected

8fa013a150888fcf34e959f1d70ddcd46bd12225 192.168.2.171:6372@16372 master - 0 1658286096993 2 connected 5461-10922

7e08d60f9b311eb9e0c518a1f06566f76d245b10 192.168.2.171:6371@16371 master - 0 1658286096000 1 connected 0-5460

876a2e6e09b3ec20435e0ff0d6091ef4e4e03d71 192.168.2.171:6374@16374 slave 8fa013a150888fcf34e959f1d70ddcd46bd12225 0 1658286095977 2 connected

8494aaa1a777e295a273844cf5e4873a3a968a6f 192.168.2.171:6373@16373 master - 0 1658286099037 3 connected 10923-16383

8、docker工具查看

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Docker 搭建 Redis 集群,你可以按照以下步骤进行操作: 1. 确保已经安装并配置好了 Docker。 2. 创建一个用于 Redis 集群的自定义网络: ```bash docker network create redis-net ``` 3. 创建 Redis 主节点的容器。假设我们需要创建3个主节点,分别使用端口 7001、7002 和 7003: ```bash docker run -d --name redis1 --network redis-net -p 7001:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes docker run -d --name redis2 --network redis-net -p 7002:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes docker run -d --name redis3 --network redis-net -p 7003:6379 redis redis-server --port 6379 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes ``` 这将创建三个 Redis 主节点容器,并将端口映射到主机的 7001、7002 和 7003 端口。 4. 创建 Redis 集群: ```bash docker run -it --rm --network redis-net redis redis-cli --cluster create <node-ip>:<node-port> <node-ip>:<node-port> <node-ip>:<node-port> ``` 将 `<node-ip>` 替换为你主机的 IP 地址, `<node-port>` 替换为容器中 Redis 主节点的端口(6379)。 例如: ```bash docker run -it --rm --network redis-net redis redis-cli --cluster create 172.18.0.2:6379 172.18.0.3:6379 172.18.0.4:6379 ``` 这将创建一个 Redis 集群,并将三个主节点添加到集群中。 5. 检查集群状态: ```bash docker run -it --rm --network redis-net redis redis-cli --cluster check <node-ip>:<node-port> ``` 例如: ```bash docker run -it --rm --network redis-net redis redis-cli --cluster check 172.18.0.2:6379 ``` 这将检查集群的状态,并输出每个节点的信息。 这样,你就成功使用 Docker 搭建了一个 Redis 集群。请根据你的实际需求进行相应的配置和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值