docker-compose搭建redis集群

一、简介

部署环境:

组件 版本 备注
docker 19.03.6 build 369ce74a3c
docker-compose 1.27.4 build 40524192
ubuntu 18.04 server版 X86_64
redis 6.0.4

二、部署步骤

2.1 集群配置

  • 3主+3从

由于仅用于测试,故我这里只用1台服务器进行模拟。

  • redis列表
redis IP+port 备注
redis1 192.168.1.4:6379
redis2 192.168.1.4:6380
redis3 192.168.1.4:6381
redis4 192.168.1.4:6382
redis5 192.168.1.4:6383
redis6 192.168.1.4:6384

2.2 编写redis.conf

server_1上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster

# 创建/root/redis-cluster目录
mkdir -p /root/redis-cluster

/root/redis-cluster目录下创建redis-1,redis2,redis-3,redis-4,redis-5,redis-6文件夹

# 创建redis-1~redis-6文件夹
mkdir /root/redis-cluster/redis-1 \
/root/redis-cluster/redis-2 \
/root/redis-cluster/redis-3 \
/root/redis-cluster/redis-4 \
/root/redis-cluster/redis-5 \
/root/redis-cluster/redis-6

在每个redis-*文件夹下创建redis.conf文件,并写入如下内容:

cluster-enabled yes # 开启集群
cluster-config-file nodes.conf # 集群配置文件
cluster-node-timeout 5000 # 集群节点多少时间未响应视为该节点丢失
appendonly yes
port 6379 # redis监听端口

注意:port值不能都为6379,根据上面redis列表设置的端口号,依次给redis-1 ~ redis-6设置6379~6384端口号

2.3 编写docker-compose.yml文件

这里直接使用daocloud提供的redis镜像地址daocloud.io/library/redis:6.0.4

/root/redis-cluster文件夹下创建docker-compose.yml文件。

docker-compose.yml文件内容如下:

version: '3.1'
services:
  # redis1配置
  redis1:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-1
    restart: always
    network_mode: "host"
    volumes:
      - ./redis-1/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis2配置
  redis2:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-2
    restart: always
    network_mode: "host"
    volumes:
      - ./redis-2/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis3配置
  redis3:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-3
    restart: always
    network_mode: "host"
    volumes:
      - ./redis-3/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis4配置
  redis4:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-4
    restart: always
    network_mode: "host"
    volumes:
      - ./redis-4/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis5配置
  redis5:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-5
    restart: always
    network_mode: "host"
    volumes:
      - ./redis-5/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
  # redis6配置
  redis6:
    image: daocloud.io/library/redis:6.0.4
    container_name: redis-6
    restart: always
    network_mode: "host"
    volumes:
      - ./redis-6/redis.conf:/usr/local/etc/redis/redis.conf
    command: ["redis-server", "/usr/local/etc/redis/redis.conf"]

2.4 启动容器

/root/redis-cluster文件夹下,执行如下命令,启动redis容器。

docker-compose up -d

2.5 查看容器启动状态

输入如下命令查看容器启动状态

docker ps

如果显示如图所示,即为启动成功。最主要查看容器的STATUS属性,有Up ***即为容器已经启动多长时间。

docker ps

2.6 开启集群

随便找一个容器进入,这里我选择redis-1进入。

docker exec -it redis-1 bash

在进入容器后,输入如下命令开启集群

redis-cli --cluster create 192.168.1.4:6379 \
 192.168.1.4:6380 \
192.168.1.4:6381 \
192.168.1.4:6382 \
192.168.1.4:6383 \
192.168.1.4:6384 \
 --cluster-replicas 1

会出现如下图所示:

在这里插入图片描述
此时输入yes即可

出现下图即为成功。

在这里插入图片描述

三、测试

使用redis-cli命令,连接集群中任意节点。(随便找一台能ping通集群所在IP的电脑,这里我用的本机进行测试)

3.1 查看节点属性

  • 连接节点
redis-cli -c -h 192.168.1.4 -p 6379
  • 查看集群状态
192.168.1.4:6379> cluster info

显示如下图所示即为集群状态健康

在这里插入图片描述

  • 查看节点信息
192.168.1.4:6379> cluster nodes

显示如图所示

在这里插入图片描述
注意看图中的slave,master,myself等关键字。

关键字 说明
slave 该节点为备份节点
master 该节点为主节点
myself 该节点为当前连接的节点

3.2 插入一个值

  • 插入一个值
192.168.1.4:6379> set test 'hello world'

在这里插入图片描述
注意:这里根据切片自动切换到了该数据分片所在的节点上,所以下面可以看到连接的节点变为了192.168.1.4:6380

  • 获取该值
192.168.1.4:6380> get test

在这里插入图片描述
这里因为就是在该数据所在分片上进行的查询,所以连接节点没有改变。

四、添加密码

4.1 编辑redis.conf文件

redis.conf文件添加如下配置。这里设置密码为123456

masterauth 123456
requirepass 123456

4.2 编辑docker-compose.yml文件

docker-compose.yml中每个容器添加如下配置:

environment:
  - REDISCLI_AUTH=123456

4.3 连接集群

在使用redis-cli连接集群的时候,不能像连接单点redis那样连接之后再使用auth命令进行认证了。此时需要在连接命令中指定密码。

redis-cli -c -h 192.168.1.4 -p 6379 -a 123456

添加-a参数,即可完成认证。

参考链接

posted @ 2023-03-08 17:24  MasonLee  阅读(833)  评论(0编辑  收藏  举报