当前位置: 首页 > ai >正文

openEuler2403部署Redis8集群

文章目录

  • openEuler2403部署Redis8集群
  • 一、前言
    • 1.简介
    • 2.环境
  • 二、正文
    • 1.集群说明
      • 1)Redis Cluster
      • 2)Redis Sentine
    • 2.硬件配置
    • 3.部署Redis
    • 4.部署Cluster
      • 1)集群配置文件
      • 2)systemd服务管理
      • 3)客户端连接
    • 5.部署Sentinel
      • 1)主从复制模式
        • (1)主节点配置
        • (2)从节点配置
        • (3)systemd服务管理
      • 2)Sentinel监控和管理工具
        • (1)Sentinel配置文件
        • (2)systemd服务管理
      • 3)客户端连接

openEuler2403部署Redis8集群

一、前言

1.简介

Redis 是一种内存数据存储,被数百万开发者用作缓存、向量数据库、文档数据库、流处理引擎和消息代理。Redis 内置复制功能,并提供多种级别的磁盘持久化方案。它支持复杂数据类型(如字符串、哈希、列表、集合、有序集合和 JSON),并针对这些数据类型定义了原子操作。

2.环境

  • LInux发行版: openEuler-24.03-LTS-SP2-x86_64-dvd.iso
  • Redis 版本:8.2.1

Redis Download:https://redis.io/download/

Redis Tag:https://github.com/redis/redis/tags
High availability with Redis Sentinel:https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel/
Scale with Redis Cluster:https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/

openEuler2403安装部署Redis8:https://blog.csdn.net/u011424614/article/details/151024850

Redis入门和使用实践v2018:https://blog.csdn.net/u011424614/article/details/100170313

[Windows] Redis使用记录:https://blog.csdn.net/u011424614/article/details/101531772

openEuler常用操作指令:https://blog.csdn.net/u011424614/article/details/150942929

openEuler中LVM调整实现home与root分区空间平衡:https://blog.csdn.net/u011424614/article/details/150961763

openEuler安装部署JDK11:https://blog.csdn.net/u011424614/article/details/150961633

openEuler2403安装部署MySQL8:https://blog.csdn.net/u011424614/article/details/150966094

VirtualBox安装openEuler24.03:https://blog.csdn.net/u011424614/article/details/150725588

VMware安装openEuler24.03:https://blog.csdn.net/u011424614/article/details/150723134

二、正文

1.集群说明

1)Redis Cluster

Redis Cluster 是 Redis 的一个分布式部署模式,旨在提供高可用性、横向扩展性和分布式数据存储。Redis Cluster 的主要特点包括:

  1. 分布式数据存储: Redis Cluster 将数据分割成多个槽(slots)并将这些槽分布在多个节点上。这允许数据在多个节点之间分布存储,从而实现数据的分布式存储和负载均衡
  2. 高可用性: Redis Cluster 支持多个主节点和从节点,并自动处理节点故障。如果一个主节点发生故障,Redis Cluster 将自动选择一个从节点升级为新的主节点,以确保数据的可用性
  3. 自动故障转移: 当主节点发生故障时,Redis Cluster 可以自动执行故障转移操作,将一个从节点升级为新的主节点。这使得系统能够自动从故障中恢复
  4. 自动分片: Redis Cluster 提供自动分片功能,客户端可以连接到任何集群节点,并通过集群的路由功能自动将请求路由到正确的节点
  5. Redis Cluster 不支持多个数据库,即只有 1 个数据库 ;在 Redis Cluster 中,所有数据都分布在不同的槽(slots)上,并且每个节点只负责存储和管理自己负责的槽上的数据

2)Redis Sentine

Redis Sentinel(主从复制模式) 是用于监控和管理 Redis 服务器高可用性的工具。它可以确保在 Redis 主节点发生故障时执行自动故障转移操作,将一个从节点升级为新的主节点,以维持系统的可用性。以下是 Redis Sentinel 的主要特点和功能:

  1. 监控主从复制: Sentinel 负责监控 Redis 主节点和从节点的状态。它会定期检查节点是否可用,包括主节点是否宕机或无法访问
  2. 自动故障检测: 如果 Sentinel 检测到主节点不可用,它会触发自动故障检测并选择一个从节点升级为新的主节点。这确保了系统在主节点故障时能够自动恢复
  3. 故障转移: Sentinel 负责协调故障转移操作,它会通知其他 Sentinel 进程和 Redis 客户端有关主节点故障和新主节点的信息。这确保了数据的连续性和可用性
  4. 多节点支持: 您可以在一个 Redis 集群中运行多个 Sentinel 进程,以提高监控的可靠性。如果一个 Sentinel 失败,其他 Sentinel 进程仍然可以继续监控和执行故障转移
  5. Redis Sentinel(主从复制模式) 支持多个数据库

2.硬件配置

IP端口
192.168.249.1313306、33061
192.168.249.1323306、33061
192.168.249.1333306、33061

3.部署Redis

在 3 台服务器上安装 Redis

  • 安装参考:《openEuler2403安装部署Redis8》

  • 安装目录:/opt/redis/redis-8.2.1/src

  • 创建日志目录和数据目录

mkdir -p /opt/redis/redis-8.2.1/{data,logs}

4.部署Cluster

1)集群配置文件

在 3 台服务器上使用相同的配置文件

  • redis-cluster-6379.conf
cat > /opt/redis/redis-8.2.1/redis-cluster-6379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 6379
# 关闭保护模式
protected-mode no
# Redis 服务器以守护进程的方式运行
# daemonize no
# Redis 服务器的密码
requirepass "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-8.2.1/logs/cluster-6379.log"
# 启用Redis的持久化日志
appendonly yes
# 持久化数据文件(快照文件)的文件名
dbfilename "cluster-6379.rdb"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-8.2.1/data/"
# 从节点连接到主节点所需的密码
masterauth "redis123456"
# 是否开启集群
cluster-enabled yes
# 集群端口
cluster-port 16379
# 生成的node文件,记录集群节点信息,默认为 nodes.conf
cluster-config-file nodes-6379.conf
#节点连接超时时间
cluster-node-timeout 20000
EOF

2)systemd服务管理

在 3 台服务器上使用相同的配置文件

  • redis-server.service
cat > /etc/systemd/system/redis-server.service <<EOF
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target[Service]
Type=simple
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/redis-8.2.1/src/redis-server /opt/redis/redis-8.2.1/redis-cluster-6379.confExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID[Install]
WantedBy=multi-user.target
EOF
  • 启动 redis 服务
# 重新加载服务配置文件
systemctl daemon-reload
# 启动服务
systemctl start redis-server.service
# 重启服务
systemctl restart redis-server.service
# 服务自启动
systemctl enable redis-server.service
# 停止服务
systemctl stop redis-server.service
# 服务状态
systemctl status redis-server.service

3)客户端连接

其中一个服务器执行

cd /opt/redis/redis-8.2.1# 创建集群
./src/redis-cli --cluster create 192.168.249.131:6379 192.168.249.132:6379 192.168.249.133:6379 -a redis123456# 集群访问
./src/redis-cli -c -h 192.168.249.131 -p 6379 -a redis123456# 查询集群状态
cluster info# 测试
set name abc
get name# 停止 redis 服务端
redis-cli shutdown

5.部署Sentinel

1)主从复制模式

(1)主节点配置

131 主服务器上修改配置文件

cat > /opt/redis/redis-8.2.1/redis-sentinel-6379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 6379
# 关闭保护模式
protected-mode no
# Redis 服务器以守护进程的方式运行
# daemonize no
# Redis 服务器的密码
requirepass "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-8.2.1/logs/sentinel-6379.log"
# 启用Redis的持久化日志
appendonly yes
# 持久化数据文件(快照文件)的文件名
dbfilename "sentinel-6379.rdb"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-8.2.1/data/"
EOF
(2)从节点配置

132 和133 从服务器上修改配置文件

  • 根据实际情况,修改 replicaof 指向主节点
cat > /opt/redis/redis-8.2.1/redis-sentinel-6379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 6379
# 关闭保护模式
protected-mode no
# Redis 服务器以守护进程的方式运行
# daemonize no
# Redis 服务器的密码
requirepass "redis123456"
# 从节点连接到主节点所需的密码
masterauth "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-8.2.1/logs/sentinel-6379.log"
# 启用Redis的持久化日志
appendonly yes
# 持久化数据文件(快照文件)的文件名
dbfilename "sentinel-6379.rdb"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-8.2.1/data/"
# 指向主节点
replicaof 192.168.249.131 6379
EOF
(3)systemd服务管理

在 3 台服务器上使用相同的配置文件

  • redis-server.service
cat > /etc/systemd/system/redis-server.service <<EOF
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target[Service]
Type=simple
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/redis-8.2.1/src/redis-server /opt/redis/redis-8.2.1/redis-sentinel-6379.confExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID[Install]
WantedBy=multi-user.target
EOF
  • 启动 redis 服务
# 重新加载服务配置文件
systemctl daemon-reload
# 启动服务
systemctl start redis-server.service
# 重启服务
systemctl restart redis-server.service
# 服务自启动
systemctl enable redis-server.service
# 停止服务
systemctl stop redis-server.service
# 服务状态
systemctl status redis-server.service

2)Sentinel监控和管理工具

(1)Sentinel配置文件

在 3 台服务器上使用相同的配置文件

  • 根据实际情况,修改 sentinel auth-pass mymaster 指向主节点
cat > /opt/redis/redis-8.2.1/redis-sentinel-26379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 26379
# 关闭保护模式
protected-mode no
# Redis 服务器的密码
requirepass "redis123456"
# 从节点连接到主节点所需的密码
masterauth "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-8.2.1/logs/sentinel-26379.log"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-8.2.1/data/"
# 设置 Sentinel 监视的 Redis 主节点 mymaster 的认证密码
sentinel auth-pass mymaster redis123456
# Sentinel 监视名为 mymaster 的 Redis 主节点
sentinel monitor mymaster 192.168.249.131 6379 2
# 配置指定了 Sentinel 在认为主节点不可用之前等待的毫秒数
sentinel down-after-milliseconds mymaster 10000
# 定了在进行故障转移时,同时同步的从节点数量
sentinel parallel-syncs mymaster 1
# 配置定义了执行故障转移的超时时间
sentinel failover-timeout mymaster 60000
EOF
(2)systemd服务管理

在 3 台服务器上使用相同的配置文件

cat > /etc/systemd/system/redis-sentinel.service <<EOF
[Unit]
Description=The redis-sentinel Process Manager
After=syslog.target network.target[Service]
Type=simple
PIDFile=/var/run/redis_sentinel_6379.pid
ExecStart=/opt/redis/redis-8.2.1/src/redis-sentinel /opt/redis/redis-8.2.1/redis-sentinel-26379.confExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID[Install]
WantedBy=multi-user.target
EOF
  • 启动 redis 服务
# 重新加载服务配置文件
systemctl daemon-reload
# 启动服务
systemctl start redis-sentinel.service
# 重启服务
systemctl restart redis-sentinel.service
# 服务自启动
systemctl enable redis-sentinel.service
# 停止服务
systemctl stop redis-sentinel.service
# 服务状态
systemctl status redis-sentinel.service

3)客户端连接

其中一个服务器执行

cd /opt/redis/redis-8.2.1# 客户端连接 redis 服务
./src/redis-cli -h 192.168.249.131 -p 6379 -a redis123456
# 查询主从模式状态
info replication
# 测试
set name abc
get name# 客户端连接 redis sentinel 服务
./src/redis-cli -h 192.168.249.131 -p 26379 -a redis123456
# 查询 sentinel 状态
info sentinel
http://www.xdnf.cn/news/19462.html

相关文章:

  • 京东入局外卖,还有很多问题。
  • Ubuntu 服务器实战:Docker 部署 Nextcloud+ZeroTier,打造可远程访问的个人云
  • 学习 Android (十八) 学习 OpenCV (三)
  • OpenHarmony 分布式感知中枢深度拆解:MSDP 框架从 0 到 1 的实战指南
  • 餐饮外卖同城配送酒水寄存餐品加价换购促销小程序APP
  • Windows 安装配置解压版MongoDb
  • TFT屏幕:STM32硬件SPI+DMA+队列自动传输
  • 【RelayMQ】基于 Java 实现轻量级消息队列(五)
  • 2025 最新Vue前端面试题目 (9月最新)
  • AI 重构医疗诊断:影像识别准确率突破 98%,基层医院如何借技术缩小诊疗差距?
  • 设备服务管理上报方案
  • 两轮车车机 OS 演进路线深度解析
  • libmodbus源码分析
  • 【前端】《手把手带你入门前端》前端的一整套从开发到打包流程, 这篇文章都会教会你;什么是vue,Ajax,Nginx,前端三大件?
  • 差角函数差角矩阵位置编码
  • 无需服务器也能建网站:Docsify+cpolar让技术文档分享像写笔记一样简单
  • 手机版碰一碰发视频源码搭建,技术实现与实操指南
  • 鸿蒙开发进阶(HarmonyOS)
  • Unity中多线程与高并发下的单例模式
  • MobaXterm介绍
  • Git将多笔patch合并成一笔
  • 苹果 Safari 地址栏可能被超大光标视觉欺骗
  • HarvardX TinyML小笔记2(番外3:数据工程)(TODO)
  • 杰理ac791无法控制io脚原因
  • Coze源码分析-工作空间-项目开发-后端源码
  • 传输层TCP 与 安全层SSL/TLS
  • shell之扩展
  • 接口自动化测试之设置断言思路
  • 什么是MIPS架构?RISC-V架构?有什么区别?【超详细初学者教程】
  • 深入Linux内核:IPC资源管理揭秘