Dcoker搭建Reids集群保姆级教程

Dcoker搭建Reids集群保姆级教程

前提说明:本教程所使用的Docker版本为 27.5.1,docker-compose版本为 v2.33.0。所使用的Redis版本是 7.0。本教程搭建的Redis集群模式为3主3从(官方推荐最小集群)。话不多说直接上干货。

步骤一: 创建目录结构体

redis-cluster/
│── docker-compose.yml
│── redis.cnf			# redis配置文件,适用于所有节点
│── Dockerfile

步骤二: 修改redis配置文件

官方下载redis:7.0版本的配置文件

在这里插入图片描述

对配置文件做出一下修改

port 6379
cluster-enabled yes					# 启用 Redis 集群模式
cluster-config-file nodes.conf		# 存储集群节点信息
cluster-node-timeout 5000			# 超时设置
appendonly yes						# 持久化
protected-mode no					# 允许外部访问
bind 0.0.0.0						# 监听所有网络接口

说一下为什么要做这些配置的修改

  1. cluster-node-timeout:节点超时时间,单位毫秒。 如果一个节点在指定时间内没有收到其他节点的 PING 消息,则认为该节点下线。这个选项会影响主从切换和数据迁移,如果主节点超时未响应,集群会选举新的主节点。同时会将节点的数据迁移到其他节点。
  2. appendonly yes:启用 AOF (Append Only File) 持久化。 强烈建议启用,以防止数据丢失。
  3. cluster-config-file:Redis 集群节点的信息(节点 ID、哈希槽分配、集群拓扑等)会保存在 nodes.conf 文件中,每次 Redis 启动时会读取它,如果它不存在,Redis 就会创建它。
  4. protected-mode:no是允许外部访问,默认yes,redis会处于保护模式,如果 bind 允许外部访问,但没有设置 requirepass(密码),Redis 会拒绝所有非本地 IP 的连接。
  5. bind 0.0.0.0:让redis监听所有网络接口,外部机器可以访问。如果redis集群是在docker中运行,必须允许外部访问,否则其他节点无法进入集群。

步骤三: 完成docker-compose.yamlDockerfile

Dockerfile

FROM redis:7.0
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]

基于官方的7.0版本的镜像,然后复制配置文件到容器,并启动redis服务。

docker-compose.yaml

version: '3.8'

services:
  redis-node-1:
    build: .
    container_name: redis-node-1
    hostname: redis-node-1
    networks:
      - redis-cluster
    ports:
      - "7001:6379"

  redis-node-2:
    build: .
    container_name: redis-node-2
    hostname: redis-node-2
    networks:
      - redis-cluster
    ports:
      - "7002:6379"

  redis-node-3:
    build: .
    container_name: redis-node-3
    hostname: redis-node-3
    networks:
      - redis-cluster
    ports:
      - "7003:6379"

  redis-node-4:
    build: .
    container_name: redis-node-4
    hostname: redis-node-4
    networks:
      - redis-cluster
    ports:
      - "7004:6379"

  redis-node-5:
    build: .
    container_name: redis-node-5
    hostname: redis-node-5
    networks:
      - redis-cluster
    ports:
      - "7005:6379"

  redis-node-6:
    build: .
    container_name: redis-node-6
    hostname: redis-node-6
    networks:
      - redis-cluster
    ports:
      - "7006:6379"

networks:
  redis-cluster:
    driver: bridge

解释一个问题

  1. 为何这里所有的节点都是6379端口?不会冲突吗?

    答:因为在每一个节点的容器内部,都相当于是一个独立的系统,他们之间的环境、端口都是隔离的,所以不会冲突,这也是docker的特点之一。但是映射到宿主机上就不能用同一个端口了。

步骤四: 启动集群

docker-compose.yaml文件所在的目录下(这里是redis-cluster)使用docker-compose up -d命令启动,构建集群,成功后随便进入一个redis集群容器,执行下面命令

redis-cli --cluster create \
  redis-node-1:6379 redis-node-2:6379 redis-node-3:6379 \
  redis-node-4:6379 redis-node-5:6379 redis-node-6:6379 \
  --cluster-replicas 1 --cluster-yes

如果终端输出下面内容,说明成功了

在这里插入图片描述

步骤五: 验证集群

随便进入一个节点,运行redis-cli -c(-c 以集群模式启动),设置一个值

在这里插入图片描述

进入另一个节点,运行redis-cli -c,看看能否获取值

在这里插入图片描述

OK,redis集群搭建成功~,如果大家在搭建过程中遇到了什么问题,欢迎咨询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猪不吃草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值