"王工,数据中心主交换机挂了,修复至少要8小时!但电商促销系统必须保证高可用..." 上周三凌晨3点接到这通电话时,我嘴里没喝完的咖啡差点喷出来,没有外网、没有yum源、甚至无法连接内部镜像仓库——这就是我们要在断网环境下紧急部署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
# 获取redis.gem及其依赖 gem fetch redis -v 4.6.0 mv *.gem /opt/offline-redis/rpms/
# 将整个目录拷贝到目标机器 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
在每台节点创建/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"
# 每台节点执行 mkdir -p /var/log/redis redis-server /etc/redis/cluster.conf
任选一台节点执行(假设有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
暴力拔节点测试:直接kill掉一个主节点,观察自动切换
ps -ef | grep redis | grep -v grep | awk '{print $2}' | head -1 | xargs kill -9
数据完整性检查:
# 在所有节点执行对比 redis-cli keys "*" | sort > /tmp/keys.node1 diff /tmp/keys.node1 /tmp/keys.node2
那次断网事故最终让我们在5小时内恢复了系统,期间Redis集群顶住了每秒3万次的查询压力,现在想来,正是这种极端场景的磨练,才让我们真正理解了分布式系统的精髓。
本文由 礼文斌 于2025-07-27发表在【云服务器提供商】,文中图片由(礼文斌)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/461985.html
发表评论