用docker-compose 创建redis cluster集群

redis集群官方教程:https://redis.io/topics/cluster-tutorial

参考文章:
https://blog.csdn.net/java_Murcielago/article/details/102776182
https://blog.csdn.net/qq_39508627/article/details/95967240

docker-compose环境已配好。

1.创建redis配置文件

创建7001,7002,7003,7004,7005,7006六个文件夹,文件夹内放配置文件redis.conf,然后依次修改
官方redis.conf下载地址:http://download.redis.io/redis-stable/redis.conf

# bind 127.0.0.1 //加上注释#
protected-mode no //关闭保护模式
port 7001  //绑定自定义端口
#daemonize yes //禁止redis后台运行
pidfile /var/run/redis_7001.pid 
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_6061.conf //集群的配置 配置文件首次启动自动生成 

2.编写docker-compose.yml文件

在官方教程中,每个节点都需要打开两个tcp端口,第一个端口是用于服务客户端的常规Redis TCP端口,如6379。在第一个端口上加上10000所得的16379为第二个端口,这个端口用于集群总线,即使用二进制协议的节点到节点通信通道。节点将群集总线用于故障检测,配置更新,故障转移授权等。

version: '3.4'
services:
  node1:
    image: redis
    container_name: redis1
    restart: always
    ports:
      - 7001:7001
      - 17001:17001
    volumes:
      - /Users/didi/docker-cluster/7001/redis.conf:/etc/redis/redis.conf
    command:
      redis-server /etc/redis/redis.conf

  node2:
    image: redis
    container_name: redis2
    restart: always
    ports:
      - 7002:7002
      - 17002:17002
    volumes:
      - /Users/didi/docker-cluster/7002/redis.conf:/etc/redis/redis.conf
    command:
      redis-server /etc/redis/redis.conf

  node3:
    image: redis
    container_name: redis3
    restart: always
    ports:
      - 7003:7003
      - 17003:17003
    volumes:
      - /Users/didi/docker-cluster/7003/redis.conf:/etc/redis/redis.conf
    command:
      redis-server /etc/redis/redis.conf

  node4:
    image: redis
    container_name: redis4
    restart: always
    ports:
      - 7004:7004
      - 17004:17004
    volumes:
      - /Users/didi/docker-cluster/7004/redis.conf:/etc/redis/redis.conf
    command:
      redis-server /etc/redis/redis.conf

  node5:
    image: redis
    container_name: redis5
    restart: always
    ports:
      - 7005:7005
      - 17005:17005
    volumes:
      - /Users/didi/docker-cluster/7005/redis.conf:/etc/redis/redis.conf
    command:
      redis-server /etc/redis/redis.conf

  node6:
    image: redis
    container_name: redis6
    restart: always
    ports:
      - 7006:7006
      - 17006:17006
    volumes:
      - /Users/didi/docker-cluster/7006/redis.conf:/etc/redis/redis.conf
    command:
      redis-server /etc/redis/redis.conf

3.启动服务

可用 docker ps 命令查看6个redis容器是否启动

docker-compose up -d

4. 创建集群

–replicas 1表示每个主机都有一个从机

docker run --rm -it inem0o/redis-trib create --replicas 1 192.168.2.209:7001 192.168.2.209:7002 192.168.2.209:7003 192.168.2.209:7004 192.168.2.209:7005 192.168.2.209:7006

执行后:

M: e7d9d0a119caa7c425c79ca38aae3e8fb0adadb6 192.168.2.209:7001
   slots:0-5460 (5461 slots) master
M: d9fd95974defcda9d41d5d9bc8d3ab8c6b8ab2e2 192.168.2.209:7002
   slots:5461-10922 (5462 slots) master
M: d8c454d264fe5f39d18884bb645474785c9a75c1 192.168.2.209:7003
   slots:10923-16383 (5461 slots) master
S: c7e0667dd23fe83688cc609c8b3bed7ca4c94b28 192.168.2.209:7004
   replicates e7d9d0a119caa7c425c79ca38aae3e8fb0adadb6
S: b3ea664a18212c63ad137b08131c598c582a78fc 192.168.2.209:7005
   replicates d9fd95974defcda9d41d5d9bc8d3ab8c6b8ab2e2
S: a6a9b0d098a959d7c85c74c5f516dff029e32203 192.168.2.209:7006
   replicates d8c454d264fe5f39d18884bb645474785c9a75c1
Can I set the above configuration? (type 'yes' to accept): yes 

M表示主机,S表示从机,输入yes表示接受配置,继续…

如果卡在下面的情况说明ip或端口号不正确:

>>> 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.......................................

纠正错误后继续执行,出现下面的结果后说明配置成功。

[OK] All 16384 slots covered.

5. 测试

1)使用 docker exec -it redis1 bash 命令进入容器内
2)使用redis-cli -c -h 192.168.2.209 -p 7001连接集群内的任意一个服务端, -c表示集群模式
3)cluster nodes 和 cluster info查看集群内的节点信息
4)key a b c 分别被分配到不同的节点内

didideAir:compose didi$ docker exec -it redis1 bash
root@f1a34ae1ee36:/data# redis-cli -c -h 192.168.2.209 -p 7001
192.168.2.209:7001> cluster nodes
a2ded8ed4af17d711c50e8119df994049b122b72 172.18.0.3:7001@17001 myself,master - 0 1594822563000 1 connected 0-5460
77df3a6c3ef50fec3734bd59a8def5555a608519 172.18.0.1:7006@17006 slave a5bd94552585fd0e350edd540cb70937e947f65b 0 1594822565663 6 connected
a40202ce777c970847b531ac906a03110d4c8f76 172.18.0.1:7002@17002 master - 0 1594822562000 2 connected 5461-10922
be7f35668f969ee25d83f82546e4c59a86feb69f 172.18.0.1:7005@17005 slave a40202ce777c970847b531ac906a03110d4c8f76 0 1594822564635 5 connected
a5bd94552585fd0e350edd540cb70937e947f65b 172.18.0.1:7003@17003 master - 0 1594822564000 3 connected 10923-16383
208628a6c82b592f538fbdf693478b255becda74 172.18.0.1:7004@17004 slave a2ded8ed4af17d711c50e8119df994049b122b72 0 1594822563609 4 connected
192.168.2.209:7001> set a aaa
-> Redirected to slot [15495] located at 172.18.0.1:7003
OK
172.18.0.1:7003> get a
"aaa"
172.18.0.1:7003> set b bbb
-> Redirected to slot [3300] located at 172.18.0.1:7001
OK
172.18.0.1:7001> set c ccc
-> Redirected to slot [7365] located at 172.18.0.1:7002
OK
172.18.0.1:7002> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用docker-compose部署Redis集群的步骤: 1.创建一个目录,例如redis-cluster,并在该目录中创建一个docker-compose.yaml文件。 2.在docker-compose.yaml文件中编写以下内容: ```yaml version: '3' services: redis-1: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6379" networks: - redis-cluster redis-2: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6380" networks: - redis-cluster redis-3: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6381" networks: - redis-cluster networks: redis-cluster: driver: bridge ``` 3.在redis-cluster目录中创建一个redis.conf文件,并将以下内容复制到文件中: ```conf bind 0.0.0.0 port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes requirepass 1111 masterauth 1111 ``` 4.在终端中导航到redis-cluster目录,并运行以下命令启动Redis集群: ```shell docker-compose up -d ``` 5.使用以下命令进入redis-1容器: ```shell docker exec -it redis-cluster_redis-1_1 /bin/bash ``` 6.在redis-1容器中,使用以下命令创建Redis集群: ```shell redis-cli --cluster create 172.20.0.2:6379 172.20.0.3:6379 172.20.0.4:6379 --cluster-replicas 0 ``` 7.现在,您已经成功地使用docker-compose部署了Redis集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值