当前位置:首页 > 问答 > 正文

Redis集群 断网搭建 Redis集群断网环境下部署难点解析,如何离线安装和配置高可用Redis

断网环境如何硬核搭建Redis集群

场景:当机房突然变成"孤岛"

"王工,数据中心主交换机挂了,修复至少要8小时!但电商促销系统必须保证高可用..." 上周三凌晨3点接到这通电话时,我嘴里没喝完的咖啡差点喷出来,没有外网、没有yum源、甚至无法连接内部镜像仓库——这就是我们要在断网环境下紧急部署Redis集群的背景。

离线部署的三大拦路虎

  1. 依赖地狱:Redis集群需要ruby、gem等一整套工具链,缺一个依赖就能让安装卡死
  2. 配置玄学:没有网络时,那些原本自动化的配置全得手动处理
  3. 验证困境:怎么确认集群真的能抗住节点故障?

战前物资准备(离线安装包制作)

1 打包完整武器库

在有网络的机器上执行:

Redis集群 断网搭建 Redis集群断网环境下部署难点解析,如何离线安装和配置高可用Redis

# 创建离线资源目录
mkdir -p /opt/offline-redis/{rpms,scripts,conf}
# 下载Redis安装包及所有依赖(以CentOS7为例)
yum install --downloadonly --downloaddir=/opt/offline-redis/rpms \
    redis ruby rubygems ruby-devel gcc make zlib-devel

2 制作离线gem包

# 获取redis.gem及其依赖
gem fetch redis -v 4.6.0
mv *.gem /opt/offline-redis/rpms/

断网环境下的硬核安装

1 手工搬运安装

# 将整个目录拷贝到目标机器
scp -r /opt/offline-redis root@target-machine:/opt/
# 离线安装所有rpm包
cd /opt/offline-redis/rpms
rpm -ivh *.rpm --nodeps --force
# 离线安装redis.gem
gem install --local /opt/offline-redis/rpms/redis-4.6.0.gem

2 集群配置文件模板(关键!)

在每台节点创建/etc/redis/cluster.conf

port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
logfile "/var/log/redis/cluster.log"

集群搭建的黑暗兵法

1 手动启动节点

# 每台节点执行
mkdir -p /var/log/redis
redis-server /etc/redis/cluster.conf

2 离线集群组建

任选一台节点执行(假设有3主3从):

redis-cli --cluster create \
    192.168.1.101:6379 \
    192.168.1.102:6379 \
    192.168.1.103:6379 \
    192.168.1.104:6379 \
    192.168.1.105:6379 \
    192.168.1.106:6379 \
    --cluster-replicas 1 \
    --cluster-yes

验证高可用的土方法

  1. 暴力拔节点测试:直接kill掉一个主节点,观察自动切换

    Redis集群 断网搭建 Redis集群断网环境下部署难点解析,如何离线安装和配置高可用Redis

    ps -ef | grep redis | grep -v grep | awk '{print $2}' | head -1 | xargs kill -9
  2. 数据完整性检查

    # 在所有节点执行对比
    redis-cli keys "*" | sort > /tmp/keys.node1
    diff /tmp/keys.node1 /tmp/keys.node2

血泪经验总结

  1. 离线环境必须提前准备:我们后来在每台服务器都常备了离线安装包
  2. 配置模板要版本化:不同Redis版本的集群配置有细微差别
  3. 日志目录权限陷阱:遇到过因为/var/log/redis目录权限导致集群启动失败的坑

那次断网事故最终让我们在5小时内恢复了系统,期间Redis集群顶住了每秒3万次的查询压力,现在想来,正是这种极端场景的磨练,才让我们真正理解了分布式系统的精髓。

发表评论