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

【Day 57】Redis的部署

(一)多实例部署

  • 多实例部署:通常指的是在同一台物理服务器或者同一个服务器集群环境中,部署多个不同的 Redis 实例。这些实例可以基于不同配置、端口号等区分开来,它们能各自按照单机模式运行,也可以组合起来形成主从关系,或者作为哨兵集群、分片集群的组成部分,目的往往是为了充分利用硬件资源或隔离不同业务的 Redis 使用场景。

        准备工作:确保安装了 gcc 和 tcl 等必要依赖,下载与安装 Redis。
        配置多实例:复制 Redis 配置文件,修改port参数为不同端口,如 7400、7401 等,同时可根据需要修改pidfile、logfile等参数。
        启动实例:使用不同的配置文件启动各个实例。

# 一、初始化目录结构(创建 Redis 实例的 conf/date 目录)
# 创建6380/6381/6382三个实例的conf(配置)和date(数据)目录(-p递归创建)
mkdir 638{0,1,2}/{conf,date} -p
# 检查6380目录结构(确认conf/date是否创建成功)
ls 6380
# 检查三个实例的conf目录是否存在(-d仅显示目录)
ls -ld /opt/6380/conf/ /opt/6381/conf/ /opt/6382/conf/cp /usr/local/redis/conf/redis.conf /opt/6380/conf/redis.conf
cp /usr/local/redis/conf/redis.conf /opt/6381/conf/redis.conf
cp /usr/local/redis/conf/redis.conf /opt/6382/conf/redis.conf# 1. 编辑三个实例的redis.conf(配置端口、主从关系、数据目录等)
vim /opt/6380/conf/redis.conf 
vim /opt/6381/conf/redis.conf 
vim /opt/6382/conf/redis.conf 
bind 192.168.140.141
protected-mode yes
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
loglevel warning
logfile "/var/log/redis_6380.log"
rdbchecksum yes
dbfilename dump7000.rdb
dir /opt/6380/date# 基于6380的配置文件生成6381的配置(批量替换端口相关参数)
sed 's/6380/6381/g' /opt/6380/conf/redis.conf > /opt/6381/conf/redis.conf
# 同理生成6382的配置
sed 's/6380/6382/g' /opt/6380/conf/redis.conf > /opt/6382/conf/redis.conf# 2. 启动三个Redis实例(指定各自配置文件)
redis-server /opt/6380/conf/redis.conf 
redis-server /opt/6381/conf/redis.conf 
redis-server /opt/6382/conf/redis.conf 
# 3. 停止6382实例(修正配置后重启)
redis-cli -h 192.168.140.141 -p 6382 shutdown
# 4. 重启6382实例(应用修正后的配置)
redis-server /opt/6382/conf/redis.conf 

(二)主从复制

  • 主从复制 :该架构由一个主节点和一个或多个从节点组成,从节点复制主节点的数据。

        配置主节点:编辑主节点配置文件
配置从节点:复制主节点配置文件并修改,添加masterauth(主节点密码)和replicaof(主节点 IP 和端口)参数,如replicaof 192.168.31.72 6379。
启动节点:依次启动主节点和从节点,使用INFO replication命令可查看主从复制状态。

        主从复制

vim /opt/6380/conf/redis.conf 
# 声明主节点地址和端口
replicaof 192.168.140.141 6381
# 设置密码(避免未授权访问,所有实例密码需一致,方便后续主从配置)
requirepass your_redis_password
# 允许从节点使用密码连接主节点(主从复制必备)
masterauth your_redis_password redis-cli -h 192.168.140.141 -p 6380 shutdown
# 启动实例
redis-server /opt/6380/conf/redis.conf

检验

# 登录验证
redis-cli -h 192.168.140.141 -p 6380 -a 原主节点的密码 info replication
# 确认输出中 role:slave 且 master_link_status:up# 1. 查看6380(主节点)的复制信息
redis-cli -h 192.168.140.141 -p 6380 info replication
# 2. 查看6381(从节点)的复制信息
redis-cli -h 192.168.140.141 -p 6381 info replication
# 3. 查看6382(从节点)的复制信息(排查连接问题)
redis-cli -h 192.168.140.141 -p 6382 info replication# 停止6380实例(测试主从切换)
redis-cli -h 192.168.140.141 -p 6380 shutdown
# 查看Redis进程/端口占用(验证启停状态)
netstat -tunlp |grep redis

从-默认只读

查看主从复制的状态-info

从提升为新主

原主节点:192.168.140.141:6380(需转换为从节点)
原从节点:192.168.140.141:6381(需升级为主节点)
其他从节点:192.168.140.141:6382(需重新指向新主节点)一、将原从节点(6381)升级为新主节点 
redis-cli -h 192.168.140.141 -p 6381 -a 原密码  
# 执行命令解除主从关系,变为主节点
192.168.140.141:6381>slaveof no one
# 验证角色转换结果
192.168.140.141:6381>info replication
vim /opt/6381/conf/redis.conf
# 注释或删除原主从配置(若有)
# replicaof 192.168.140.141 6380
# masterauth 原密码
# 重启6381实例
redis-cli -h 192.168.140.141 -p 6381 -a 原密码 shutdown
redis-server /opt/6381/conf/redis.conf二、将原主节点(6380)转换为从节点 
# 停止原主节点(6380)
redis-cli -h 192.168.140.141 -p 6380 -a 原密码 shutdown
# 修改配置文件,指向新主节点
vim /opt/6380/conf/redis.conf
# 添加以下配置(指向新主节点6381)
replicaof 192.168.140.141 6381  # 新主节点IP和端口
masterauth 原密码               # 新主节点密码(与原密码一致)
# 启动原主节点(6380),使其以从节点身份运行
redis-server /opt/6380/conf/redis.conf
# 验证转换结果
redis-cli -h 192.168.140.141 -p 6380 -a 原密码 info replication三、将其他从节点(6382)重新指向新主节点(6381)
redis-cli -h 192.168.140.141 -p 6382 -a 原密码
replicaof 192.168.140.141 6381  # 指向新主节点6381
vim /opt/6382/conf/redis.conf
# 注释原主节点配置,添加新主节点配置
# replicaof 192.168.140.141 6380  # 注释原主节点
replicaof 192.168.140.141 6381    # 新主节点
masterauth 原密码                 # 保持密码一致
# 重启6382实例
redis-cli -h 192.168.140.141 -p 6382 -a 原密码 shutdown
redis-server /opt/6382/conf/redis.conf
# 验证转换结果
redis-cli -h 192.168.140.141 -p 6382 -a 原密码 info replication

(三) 哨兵集群

  • 哨兵集群 :这是在主从复制基础上构建的高可用架构。Redis Sentinel 是一个分布式系统,由多个哨兵节点构成,它们通过共识算法来协同监控主从节点的运行状态,当主节点发生故障时,能自动将从节点提升为主节点,还可以在故障发生时通知管理员,并且自动重新配置客户端指向新主节点。其优势是自动化故障转移,提高了系统可用性,但哨兵本身也可能形成单点故障风险,并且故障转移过程中可能有短暂数据不一致。

        哨兵集群用于监控主从节点,并在主节点故障时自动进行故障转移。安装主从节点:先按照主从复制的步骤搭建好一个主节点和多个从节点。
        配置哨兵:编辑sentinel.conf配置文件,设置sentinel monitor mymaster 192.168.234.130 6379 2(监控主节点),daemonize yes(后台运行)。若 Redis 节点有密码,需设置sentinel auth-pass mymaster password。
        启动服务:先启动主从节点,再启动哨兵节点,命令为./redis-sentinel ./sentinel.conf。

# 1. 查看哨兵配置文件源文件(确认sentinel.conf存在)
ls redis-5.0.12/sentinel.conf 
# 2. 创建三个实例的sentinel目录(存放哨兵配置)
mkdir /opt/6380/redis-sentinal
mkdir /opt/6381/redis-sentinal
mkdir /opt/6382/redis-sentinal
# 3. 创建哨兵数据目录(按端口区分,如26380对应6380实例的哨兵)
mkdir /opt/6380/date/26380
mkdir /opt/6381/date/26381
mkdir /opt/6382/date/26382
# 4. 复制sentinel.conf到三个哨兵目录
cp redis-5.0.12/sentinel.conf /opt/6380/redis-sentinal/
cp redis-5.0.12/sentinel.conf /opt/6381/redis-sentinal/
cp redis-5.0.12/sentinel.conf /opt/6382/redis-sentinal/
# 5. 编辑三个哨兵的配置文件(指定监控主节点、端口、quorum等)
vim /opt/6380/redis-sentinal/sentinel.conf 
vim /opt/6381/redis-sentinal/sentinel.conf 
vim /opt/6382/redis-sentinal/sentinel.conf 
# 6. 启动三个哨兵实例(指定各自配置文件)
redis-sentinel /opt/6380/redis-sentinal/sentinel.conf 
redis-sentinel /opt/6381/redis-sentinal/sentinel.conf 
redis-sentinel /opt/6382/redis-sentinal/sentinel.conf 
# 7. 查看哨兵日志(排查哨兵运行问题)
ls /var/log/sentinal_26380.log 
vim /var/log/sentinal_26380.log 

(四)分片集群

  • 分片集群 :Redis Cluster 是 Redis 官方的分布式部署方案,它将数据空间划分为 16384 个哈希槽,每个主节点负责一部分哈希槽。基于哈希槽,数据被自动分片存储在不同的主节点上,每个主节点又能搭配一个或多个从节点用于冗余。
  • 优点:可以水平扩展,能支撑大规模数据存储和高并发访问,也具备自动故障转移等高可用机制。
  • 缺点:部署难度较高,而且集群数据迁移等操作会对性能有一定影响。

        分片集群将数据分布在多个节点上,实现数据的分布式存储和高并发处理。

        准备工作:准备至少三台 CentOS 7 服务器,在每台服务器上安装 gcc 和 tcl 依赖,Redis。
        配置集群节点:在每台服务器上创建集群配置目录,如mkdir /etc/redis-cluster,复制并修改redis.conf,设置bind、requirepass、port、cluster-enabled yes、cluster-config-file、cluster-node-timeout等参数。

# 在多台机子上分别创建
mkdir -p /opt/redis-cluster/{7000,7001,7002,7003,7004,7005}/{conf,data,log}# 配置各节点(每节点单独配置)
# 1. 复制默认配置文件到各节点(以7000为例,其他节点替换端口即可)
cp redis-6.2.14/redis.conf /opt/redis-cluster/7000/conf/
# 2. 编辑7000节点配置(关键参数)
vim /opt/redis-cluster/7000/conf/redis.conf
# 按以下内容修改(其他节点仅需替换端口号):
bind 192.168.140.141  # 替换为实际服务器IP
port 7000
daemonize yes
pidfile /var/run/redis-7000.pid
logfile /opt/redis-cluster/7000/log/redis-7000.log
dir /opt/redis-cluster/7000/data
requirepass Redis@123  # 集群统一密码
masterauth Redis@123   # 与上面密码一致
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
appendonly yes# 3. 批量配置其他节点(复制7000的配置并替换端口)
for port in 7001 7002 7003 7004 7005; docp /opt/redis-cluster/7000/conf/redis.conf /opt/redis-cluster/$port/conf/sed -i "s/7000/$port/g" /opt/redis-cluster/$port/conf/redis.conf
done
三、启动所有节点
# 启动6个节点(分别指定配置文件)
/usr/local/redis/bin/redis-server /opt/redis-cluster/7000/conf/redis.conf
/usr/local/redis/bin/redis-server /opt/redis-cluster/7001/conf/redis.conf
/usr/local/redis/bin/redis-server /opt/redis-cluster/7002/conf/redis.conf
/usr/local/redis/bin/redis-server /opt/redis-cluster/7003/conf/redis.conf
/usr/local/redis/bin/redis-server /opt/redis-cluster/7004/conf/redis.conf
/usr/local/redis/bin/redis-server /opt/redis-cluster/7005/conf/redis.conf
# 验证启动状态(应显示6个进程)
ps -ef | grep redis-server | grep -v grep
四、创建集群(分配主从和哈希槽)
# 创建3主3从集群(--cluster-replicas 1表示每个主节点1个从节点)
/usr/local/redis/bin/redis-cli -a Redis@123 --cluster create \
192.168.140.141:7000 \
192.168.140.141:7001 \
192.168.140.141:7002 \
192.168.140.141:7003 \
192.168.140.141:7004 \
192.168.140.141:7005 \
--cluster-replicas 1
# 执行后会提示分配方案,输入yes确认# 1. 查看集群整体信息(连接任意节点)
/usr/local/redis/bin/redis-cli -h 192.168.140.141 -p 7000 -a Redis@123 cluster info
# 2. 查看节点详情(主从关系、槽位分配)
/usr/local/redis/bin/redis-cli -h 192.168.140.141 -p 7000 -a Redis@123 cluster nodes
# 3. 测试数据写入(会自动路由到对应槽位的主节点)
/usr/local/redis/bin/redis-cli -h 192.168.140.141 -p 7000 -a Redis@123 set cluster_key "hello"
/usr/local/redis/bin/redis-cli -h 192.168.140.141 -p 7001 -a Redis@123 get cluster_key  # 从其他节点读取

        启动节点:使用配置文件启动每个节点,如redis-server /etc/redis-cluster/redis-7400.conf。

        创建集群:进入 Redis 安装目录的src目录,执行redis-cli --cluster create 192.168.117.128:7400 192.168.117.128:7401 192.168.117.129:7402 192.168.117.129:7403 192.168.117.131:7404 192.168.117.131:7405 --cluster-replicas 1命令创建集群,其中--cluster-replicas 1表示每个主节点配一个从节点。


文章转载自:

http://ws11kLIN.qypjk.cn
http://w3plcnKI.qypjk.cn
http://g18wAAti.qypjk.cn
http://1cA6r2AJ.qypjk.cn
http://lo2aVuyw.qypjk.cn
http://Klp7JFto.qypjk.cn
http://B0qkeqxG.qypjk.cn
http://0pJ04zVg.qypjk.cn
http://9jmcNSae.qypjk.cn
http://9lbtRQSL.qypjk.cn
http://1DketYah.qypjk.cn
http://oEg3Embt.qypjk.cn
http://7MDOjEvk.qypjk.cn
http://63mCvsCP.qypjk.cn
http://RfYTW8Mj.qypjk.cn
http://w1HthUvP.qypjk.cn
http://9YVtiVs7.qypjk.cn
http://W3fjPKi7.qypjk.cn
http://v5Ltduwa.qypjk.cn
http://q0V76khz.qypjk.cn
http://U3EEpYSm.qypjk.cn
http://303fIu3K.qypjk.cn
http://jzIr1LmS.qypjk.cn
http://BJeVPFEk.qypjk.cn
http://1ZgT6p8s.qypjk.cn
http://pIDl32ud.qypjk.cn
http://2I9w5XzW.qypjk.cn
http://3uoWJPy9.qypjk.cn
http://xohvCNAR.qypjk.cn
http://2tEuoaKn.qypjk.cn
http://www.dtcms.com/a/386143.html

相关文章:

  • 在 Zellij 中用 Neovim 优雅地解决剪贴板同步问题
  • 云手机的技术架构可分为哪些
  • 基于 GitHub Actions 的 Kubernetes 集群节点变更操作自动化
  • 嵌入式第五十四天(EPIT,GPT)
  • 何为楼宇自动化控制系统的质量管理?本质与关键要素解析
  • Spring 源码学习(十二)—— HandlerMapping(一)
  • 七牛云技术前瞻:GPT-5-Codex如何开启智能体编程新时代
  • The Oxford-IIIT宠物图像识别数据集(753M)
  • 从Cursor到GPT-5-Codex:AI编程Agent的技术与商业全解析
  • 实践-医学影像AI诊断系统:基于DICOMweb、ViT/U-Net和Orthanc的端到端实现
  • HarmonyOS 应用开发新范式:深入理解声明式 UI 与状态管理 (基于 ArkUI API 12+)
  • UDP和TCP网络通信
  • 基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例应用
  • 网络:RDMA原理以及在AI基础设施中的应用
  • 深度学习之pytorch基本使用(二)
  • Redis 协议(RESP)详解:请求与响应解析
  • k8s污点与容忍介绍
  • 设计模式-桥接模式04
  • 设计模式-桥接模式01
  • 架构设计java
  • 零知IDE——基于STM32F407VET6的HC-SR505安防监控系统
  • P1439 两个排列的最长公共子序列-普及+/提高
  • C#上位机软件:1.2 工控上位机学习内容和前提条件
  • 非常经典的Android开发问题-mipmap图标目录和drawable图标目录的区别和适用场景实战举例-优雅草卓伊凡
  • Linux-> UDP 编程2
  • EPLAN-关联参考
  • 实验部分撰写要求
  • R语言入门课| 08 变量的重编码与重命名
  • Ubuntu 系统下搭建 FTP 服务器及文件传输
  • Field II 超声成像仿真 --2-CPWC (Coherent Plane-Wave Compounding)