Redis集群搭建

简介

以前写过一篇搭建 Redis 分片集群的博客,本文介绍使用 Docker 容器的方式搭建 Redis 集群,更简单

搭建

(1)环境介绍

我这有三台 Linux(CentOS7)虚拟机,IP 分别是:

  • 192.168.101.11

  • 192.168.101.15

  • 192.168.101.16

(2)搭建

分别在三台服务器上,执行下面这些命令

shell 复制代码
# 1.创建目录
mkdir /usr/local/dev/redis && cd /usr/local/dev/redis

# 2.创建配置目录
mkdir -p ./redis-cluster/7001 ./redis-cluster/7002

# 3.写入配置
cat > ./redis-cluster/7001/redis.conf << EOF
port 7001
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
EOF

cat > ./redis-cluster/7002/redis.conf << EOF
port 7002
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
EOF

# 4.启动容器(我这里用 redis-7.0.8 版本)
docker run -d \
  --name redis-7001 \
  --net=host \
  --restart=always \
  -v ./redis-cluster/7001/redis.conf:/usr/local/etc/redis/redis.conf \
  -v ./redis-cluster/7001/data:/data \
  redis:7.0.8 redis-server /usr/local/etc/redis/redis.conf

docker run -d \
  --name redis-7002 \
  --net=host \
  --restart=always \
  -v ./redis-cluster/7002/redis.conf:/usr/local/etc/redis/redis.conf \
  -v ./redis-cluster/7002/data:/data \
  redis:7.0.8 redis-server /usr/local/etc/redis/redis.conf

(3)配置

在任何一台服务器上,敲下面这个命令,进入 Redis 组建集群结构

shell 复制代码
docker exec -it redis-7001 \
redis-cli --cluster create \
192.168.101.11:7001 \
192.168.101.11:7002 \
192.168.101.15:7001 \
192.168.101.15:7002 \
192.168.101.16:7001 \
192.168.101.16:7002 \
--cluster-replicas 1

其中 --cluster-replicas 1 表示主节点、从节点是一比一,即每个主节点分配一个从节点

验证

以上就搭建好了,可以敲下面的命令,查看集群状态、信息

powershell 复制代码
# 1.随便在某一台服务器上进入 Redis 客户端
docker exec -it redis-7001 redis-cli -c -p 7001

# 2.查看集群信息
cluster info

# 3.查看集群的节点信息
cluster nodes

如下,可见集群状态 cluster_state:ok,其中 192.168.101.15 上的两台 Redis,和 192.168.101.11 上的 7002 端口的 Redis 是主节点

在我本地 Windows 系统上,分别连接四个不同的 Redis,主从都有,验证一下读写情况

如下

需要注意的是,以集群方式连接,需要加 -c 参数,如下

powershell 复制代码
redis-cli -c -h 192.168.101.15 -p 7001

验证读写情况

再验证一下停机情况,停掉 192.168.101.11:7001 的 Redis

查看集群节点,可见一个从节点挂机

再启动这个节点,把 192.168.101.11:7002 这个主节点给停掉

可以看到推举出了新的主节点,也就是 192.168.101.16:7001 这个节点

此时,再重启 192.168.101.11:7002,会以从节点的方式加入集群

项目配置

在 Spring Boot 项目中,使用 Redis 集群的配置,配置文件,如下

yml 复制代码
spring:
  redis:
    cluster:
      nodes:
        - 192.168.101.11:7001
        - 192.168.101.11:7002
        - 192.168.101.15:7001
        - 192.168.101.15:7002
        - 192.168.101.16:7001
        - 192.168.101.16:7002

建议把所有节点的地址都加进去,这里的配置不关心是不是主节点,实际上主从关系是时刻变化的,这里固定写死不太现实。

配置文件中写的节点,只是一个进入 Redis 集群的入口,写一个应该都行,

只不过写一个或者少数几个,如下,

yml 复制代码
spring:
  redis:
    cluster:
      nodes:
        - 192.168.101.11:7001
        - 192.168.101.15:7001
        - 192.168.101.16:7001

当这三个节点恰好宕机时,集群还是能提供服务的,但因为这三个 "入口节点" 挂了,项目就用不了 Redis 。

相关推荐
java_logo1 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司9 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手11 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学11 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
二宝哥12 小时前
CentOS 7.9 系统下 Redis 5.0.4 单机安装与源码编译安装指南
redis·centos
oradh13 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898614 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD14 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo14 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
TlSfoward15 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php