使用 docker 搭建 redis 集群

2021-09-26  本文已影响0人  追风骚年

以官方的三主三从为例。这里面有个几个坑:

说明几个坑

  1. redis 在集群模式下,会使用两个端口,一个是数据端口,另一个是控制端口,两个端口固定间隔固定为 10000,所以在 docker 导出端口的地方需要暴露两个端口。

  2. 搭建 redis 集群时每个服务需要使用不同端口,刚开始每个 service 都使用默认的 6379 ,所以端口类似 - 7001:6379 - 17001:16379,这样也是不行的。

  3. redis-cli --cluster create 后面只能写 ip 地址,不能使用域名,本身想使用 service name 的,没想到官方的 redis 到目前为止还是不支持的,即使是最新的 redis6,但是有个第三方的作者实现了, "bitnami/redis-cluster" 是目前支持域名的 redis 集群镜像。由于我们是提供企业级服务不能使用非官方镜像,所以还是使用 ip。

docker-compose 配置

version: '3'

x-image:
  &default-rds
    redis:5.0.4

services:
  r1:
    image: *default-rds
    command: redis-server /etc/redis/redis.conf
    ports:
      - 7001:6379
      - 17001:16379
    volumes:
      - ./redis1.conf:/etc/redis/redis.conf

  r2:
    image: *default-rds
    command: redis-server /etc/redis/redis.conf
    ports:
      - 7002:6379
      - 17002:16379
    volumes:
      - ./redis2.conf:/etc/redis/redis.conf

  r3:
    image: *default-rds
    command: redis-server /etc/redis/redis.conf
    ports:
      - 7003:6379
      - 17003:16379
    volumes:
      - ./redis3.conf:/etc/redis/redis.conf

  r4:
    image:  *default-rds
    command: redis-server /etc/redis/redis.conf
    ports:
      - 7004:6379
      - 17004:16379
    volumes:
      - ./redis4.conf:/etc/redis/redis.conf

  r5:
    image: *default-rds
    command: redis-server /etc/redis/redis.conf
    ports:
      - 7005:6379
      - 17005:16379
    volumes:
      - ./redis5.conf:/etc/redis/redis.conf

  r6:
    image: *default-rds
    command: redis-server /etc/redis/redis.conf
    ports:
      - 7006:6379
      - 17006:16379
    volumes:
      - ./redis6.conf:/etc/redis/redis.conf

x-$ 开头可以复用

redis conf 文件配置

redis.conf1 如下

port 7001
# 启用集群模式
cluster-enabled yes
# 后台运行
daemonize no
# 非保护模式
protected-mode no

创建集群

任意选择一个容器,使用 redis-cli 创建集群即可。

$ docker-compose exec r1 bash
$ redis-cli --cluster create 172.19.76.67:7001 172.19.76.67:7002 172.19.76.67:7003 172.19.76.67:7004 172.19.76.67:7005 172.19.76.67:7006 --cluster-replicas 1

172.19.76.67 为我的宿主机 ip

上一篇下一篇

猜你喜欢

热点阅读