基于docker-compose搭建redis集群

一、简介

部署环境:

组件版本备注
docker19.03.6build 369ce74a3c
docker-compose1.27.4build 40524192
ubuntu18.04server版 X86_64
redis6.0.4

二、部署步骤

2.1 集群配置

  • 3主+3从

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

  • redis列表
redisIP+port备注
redis1192.168.1.4:6379
redis2192.168.1.4:6380
redis3192.168.1.4:6381
redis4192.168.1.4:6382
redis5192.168.1.4:6383
redis6192.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参数,即可完成认证。

参考链接

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
要使用docker-compose搭建Redis集群,你可以按照以下步骤进行操作: 1. 创建一个docker-compose.yml文件,并在其中定义Redis集群的服务。你可以使用以下示例作为参考: ``` version: '3' services: redis-6379: image: redis ports: - "6379:6379" volumes: - ./redis-6379:/data command: redis-server /data/redis.conf redis-6380: image: redis ports: - "6380:6379" volumes: - ./redis-6380:/data command: redis-server /data/redis.conf redis-6381: image: redis ports: - "6381:6379" volumes: - ./redis-6381:/data command: redis-server /data/redis.conf redis-6382: image: redis ports: - "6382:6379" volumes: - ./redis-6382:/data command: redis-server /data/redis.conf redis-6383: image: redis ports: - "6383:6379" volumes: - ./redis-6383:/data command: redis-server /data/redis.conf redis-6384: image: redis ports: - "6384:6379" volumes: - ./redis-6384:/data command: redis-server /data/redis.conf ``` 2. 在每个Redis服务的目录中创建一个redis.conf文件,用于配置Redis集群的参数。你可以使用以下示例作为参考: ``` port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ``` 3. 运行docker-compose命令来启动Redis集群: ``` docker-compose up -d ``` 这将启动Redis集群的所有服务,并将它们连接在一起。 请注意,以上步骤中的示例仅适用于在本地搭建Redis集群。如果你需要在生产环境中搭建Redis集群,你可能需要进行更多的配置和安全性措施。 #### 引用[.reference_title] - *1* *2* *3* [docker(八)—docker-compose搭建redis集群](https://blog.csdn.net/xiaoqiang65/article/details/121011071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值