Docker方式部署redis-cluster

Docker方式部署redis-cluster步骤 1、redis容器初始化 2、redis容器集群配置

一、redis容器初始化 容器初始化,使用docker-compose方式,先创建一个docker-compose.yml文件,内容如下:

version: 3

services:
 redis1:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/8001/data:/data
  environment:
   - REDIS_PORT=8001

 redis2:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/8002/data:/data
  environment:
   - REDIS_PORT=8002

 redis3:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/8003/data:/data
  environment:
   - REDIS_PORT=8003

 redis4:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/8004/data:/data
  environment:
   - REDIS_PORT=8004

 redis5:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/8005/data:/data
  environment:
   - REDIS_PORT=8005

 redis6:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/8006/data:/data
  environment:
   - REDIS_PORT=8006

这里引用了别人的一个镜像publicisworldwide/redis-cluster,方便快捷。 这里使用host(主机)网络模式,把redis数据挂载到本机目录/data/redis/800*下。 若不想使用host模式,也可以把network_mode去掉,但就要加ports映射。 redis-cluster的节点端口共分为2种,一种是节点提供服务的端口,如6379;一种是节点间通信的端口,固定格式为:10000+6379。

version: 3

services:
 redis1:
  image: publicisworldwide/redis-cluster
  restart: always
  volumes:
   - /data/redis/8001/data:/data
  environment:
   - REDIS_PORT=8001
  ports:
    - 8001:8001       #服务端口
    - 18001:18001   #集群端口

 redis2:
  image: publicisworldwide/redis-cluster
  restart: always
  volumes:
   - /data/redis/8002/data:/data
  environment:
   - REDIS_PORT=8002
  ports:
    - 8002:8002
    - 18002:18002

 redis3:
  image: publicisworldwide/redis-cluster
  restart: always
  volumes:
   - /data/redis/8003/data:/data
  environment:
   - REDIS_PORT=8003
  ports:
    - 8003:8003
    - 18003:18003

 redis4:
  image: publicisworldwide/redis-cluster
  restart: always
  volumes:
   - /data/redis/8004/data:/data
  environment:
   - REDIS_PORT=8004
  ports:
    - 8004:8004
    - 18004:18004

 redis5:
  image: publicisworldwide/redis-cluster
  restart: always
  volumes:
   - /data/redis/8005/data:/data
  environment:
   - REDIS_PORT=8005
  ports:
    - 8005:8005
    - 18005:18005

 redis6:
  image: publicisworldwide/redis-cluster
  restart: always
  volumes:
   - /data/redis/8006/data:/data
  environment:
   - REDIS_PORT=8006
  ports:
    - 8006:8006
    - 18006:18006

创建文件后,直接启动服务

窗口模式
docker-compose up
后台进程
docker-compose up -d

查看启动的进程 状态为Up,说明服务均已启动,镜像无问题。 注意:以上镜像不能设置永久密码,其实redis一般是内网访问,可以不需密码。

二、redis容器集群配置 上面只是启动了6个redis容器,并没有设置集群,通过下面的命令可以设置集群。

docker run --rm -it inem0o/redis-trib create --replicas 1 192.168.99.100:8001 192.168.99.100:8002 192.168.99.100:8003 192.168.99.100:8004 192.168.99.100:8005 192.168.99.100:8006

这里同样使用了另一个镜像inem0o/redis-trib,执行时会自动下载。 日志如下: 注意:出现Can I set the above configuration? (type ‘yes’ to accept): 是要输入yes 不是Y 成功后可链接redis,用以下命令

docker exec -it redis-8001 redis-cli -c -h 192.168.99.100 -p 8001
经验分享 程序员 微信小程序 职场和发展