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

查看启动的进程
Docker方式部署redis-cluster_第1张图片
状态为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,执行时会自动下载。
日志如下:
Docker方式部署redis-cluster_第2张图片
注意:出现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

Docker方式部署redis-cluster_第3张图片

你可能感兴趣的:(redis)