ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

双活数据中心架构解析:存储双活、仲裁与故障注入实战指南

双活数据中心架构解析:存储双活、仲裁与故障注入实战指南 简介一份聚焦双活数据中心端到端技术架构的PPT方案面向IT架构师、运维工程师与容灾方案设计人员帮助读者理清存储层、应用层、网络层如何协同实现业务连续性和数据零丢失。包内为单个pptx演示文档压缩包大小5.29MB内容覆盖双活存储层的VIS集群部署、异构阵列镜像冗余与仲裁机制应用层的Oracle RAC“21”集群部署、TAF访问分离以及VMware vSphere HA/DRS跨数据中心双活配置网络层GSLB/SLB负载均衡与100km内裸光纤互联设计。同时介绍了前端应用双活的VMware配置要点与数据故障后自动漂移回切逻辑。已有630人学习适合作为双活数据中心方案规划、技术选型、项目汇报或内部培训的参考材料。1. 双活数据中心不是 PPT 上的四个字先回答三个现实问题做双活最怕听到一句话“方案早就交了演练也做了但从来没真切过。”真正在日切演练里拔过光纤的人都知道双活数据中心不是说两个机房都能跑业务就完了——而是两个机房在同一时刻都承载读写任何一个站点挂掉流量能平滑落到另一边数据一条不丢。这篇东西就是把“双活数据中心解决方案”从 PPT 里拉出来讲清楚架构怎么选、存储和网络怎么搭、仲裁参数怎么调、切换怎么验证以及那些只在故障当天才露出来的坑。适合正在做容灾规划或者单活机房想升级成双活的数据中心运维和架构同学。2. 架构先行同城双活与两地三中心怎么把 RPO/RTO 从口号变成可验收的数字2.1 双活的三层形态不是所有“双活”都敢叫 Active-Active不少机房的主机层确实做了集群但后端存储其实只有一个阵列。主机这边看着是双活存储那边一断电集群直接裂成两半——严格说这叫“单活 高可用”不叫双活数据中心。我一般从三个层面来判断一套方案到底是不是双活主机层集群。两台或更多服务器通过集群软件对外提供服务但共享的存储只有一个副本。这种形态能解决计算节点故障解决不了存储故障更解决不了机房级故障。存储层双活。两份数据分别放在两个站点的存储阵列上两端同时可读可写靠同步复制保持一致性RPO 趋近于 0。这是数据中心双活的地基也是后面所有参数调整的核心对象。应用层双活。两边都跑着业务实例负载均衡器把流量按比例分发到两个站点应用本身不绑定某一个物理机房。应用层双活解决的是“流量怎么过去”存储层解决的是“数据有没有”。三层都齐了才叫数据中心级双活。只要存储层还是单点不管应用层做得再花哨真出机房级别的断电恢复时间照样按小时算。2.2 同城 50 公里是物理极限距离、时延与同步复制的账双活数据中心最常见的选址是“同城两机房”距离一般控制在 30 到 70 公里。为什么大家都卡在这个数核心不是合同或地皮而是光速。光纤里光的传播速度大约是真空中的三分之二按每公里 5 微秒折算一个 50 公里的往返就是 500 微秒也就是 0.5 毫秒。听起来很小但别忘了同步复制的每个写 IO 都要等远端确认0.5 毫秒的往返时延会直接叠加到每一次写操作的响应时间上。如下表所示站点间距直接影响同步复制对写延迟的追加量两站点间距理论往返时延不含设备排队对普通 OLTP 的影响对高 IOPS 小写/日志盘的影响10 公里约 0.1 ms几乎无感可见日志盘 fsync 延迟翻倍30 公里约 0.3 ms轻微明显需关注写缓存策略50 公里约 0.5 ms可接受显著数据库 commit 变慢70 公里约 0.7 ms开始有感知建议评估应用改造100 公里以上1 ms 以上部分业务不可接受不建议做同步复制双活这里的账不是算给网络工程师看的是算给业务方看的。我见过一个 ERP 系统做双活之前单笔订单写入 3 毫秒上了同步复制以后变成 9 毫秒业务方直接打电话来问是不是系统坏了。后来把高频率的小账本事务和低频大事务拆开核心表走双活日志类数据走异步复制才压回 5 毫秒以内。距离是买定离手的事机房一旦定了时延就定了能调整的只有数据分类和缓存策略。2.3 RPO/RTO 怎么变成验收数字以及那张 TCO 账双活方案里RPO 和 RTO 是最容易被写进 PPT 但最难验收的两个数字。RPO0 不是口号是动作把主站点存储整个断电去备站点拉数据看最后一条已提交记录的写入时刻和故障时间点是否完全一致差一条都不算零丢失。RTO 也一样从故障发生到业务恢复可用的分钟数必须是在不通知任何研发的情况下靠值班运维独立完成切换来测。做数据中心建设动态 TCO 分析时你会发现双活的成本大头不在存储设备本身而在三块两站点之间的物理链路月租和波长设备双活复制带来的存储空间翻倍可用容量直接打五折以及维持两套环境一致性的运维人力。选型阶段先别急着谈高端存储先按“RPO0 必须同步复制、两条链路必须物理独立、仲裁只能放第三点”这三个约束去倒推设备配置比直接抄别人的配置清单靠谱得多。机柜功率密度和暖通设计也是 TCO 的一环高密度存储节点的散热冗余不够双活跑到高负载时还会触发风扇降额性能反而往下掉这个前面很少有人提。3. 存储双活是地基网关方案与阵列原生复制仲裁参数照这张表调3.1 两条技术路线存储网关和阵列原生复制怎么选存储层双活有两条主流技术路线一条是存储网关虚拟化另一条是阵列原生复制。网关方案在两个存储阵列前加一层虚拟化设备把两端的 LUN 做成镜像关系对上层主机只暴露一块统一的盘。它的最大优势是异构纳管——两个站点不必用同一品牌同一代的存储整合老设备时很实用。缺点是网关本身成为新单点网关控制器故障后的切换速度通常比阵列原生慢一个档次而且网关的软件升级往往需要业务窗口。阵列原生复制则是由存储固件直接承担同步复制比如华为 HyperMetro、NetApp MetroCluster 这类方案两个阵列之间直接建立镜像关系不依赖额外硬件。优点是故障域小复制链路和一致性组的管理都在存储内部完成日常巡检简单切换速度也更快。缺点是对品牌和型号有强约束两边的存储必须是同一套系统老设备基本没机会参与。选型我一般看一个条件两个站点如果已有不同品牌、不同代的存储再加预算有限那就老老实实走网关方案如果是新建数据中心品牌统一、预算充足直接上阵列原生别让中间那层设备变成未来的背锅侠。3.2 用命令核对双活状态最小健康检查脚本存储双活运行得好不好日常巡检不用天天看管理系统的大屏一条多路径命令加一条存储查询命令就能说明问题。下面是我在多个现场保留下来的最小健康检查脚本适合放在 cron 里每天跑一次#!/bin/bash # 双活存储日常巡检路径、仲裁、写缓存三件事一次查完 # 用法: 放到双活任一站点的运维跳板机上, 每日定时执行 # 1. 主机多路径状态: 正常应只见 active/active, 出现 failed 或 degraded 则告警 multipath -l | grep -E dm-|active|failed | grep -E failed|degraded \ echo [ERROR] 多路径出现异常, 请检查光纤交换机端口和 HBA 卡 \ || echo [OK] 主机多路径状态正常 # 2. 存储仲裁状态: 双活必须确认仲裁设备在线, 否则脑裂后无决策者 ssh storage_admin10.0.0.1 show replication consistency-group; show arbitrator status # 3. 写缓存回刷策略: 确认两端写缓存处于镜像状态, 防止掉电丢数据 ssh storage_admin10.0.0.1 show cache-mirror status脚本里有三个关键点。multipath -l检查的是主机到存储的路径数量与状态双活环境里每块 LUN 正常应该看到至少四条 active 路径两个存储控制器各两条出现 failed 或 degraded 说明光纤链路或 HBA 卡已经开始抖动。show replication consistency-group查询一致性组状态正常返回的应该是 mirrored 或 normal如果出现 split 或者 paused复制链路大概率已经断了。show cache-mirror很多人会漏掉双活存储两端写缓存必须互相镜像只要一端缓存失效整个双活会强制降级为单活模式业务波动往往从这里开始。3.3 三个必调的仲裁参数照着这张表检查存储双活的很多故障不是复制链路断了而是仲裁参数没调对。我交付时通常会逐个核对下面三个参数任何一个不对双活都是纸面双活。参数项常见默认值推荐配置调错会怎样心跳探测间隔1000 ms100–300 ms设太短误判链路断设太长脑裂窗口变大仲裁失败判定次数6 次3–5 次次数太多真断链时迟迟不触发仲裁写缓存镜像策略视阵列而定强制开启禁止关闭关掉后掉电即丢最近若干秒数据心跳超时这一项最容易出错。很多人觉得间隔越短越灵敏直接配成 10 毫秒结果机房一波动心跳误判双活被自己吓到分裂。经验值是 100 到 300 毫秒间隔、连续 3 到 5 次失败才判链路中断既不会误报也不会让脑裂窗口开得太大。仲裁优先级方面两站点要明确谁是默认优先站点但必须配合“自动回切”选项否则优先站点断电恢复后数据还得手动合并。写缓存镜像这个开关我几乎每次上线都要确认部分阵列在维护模式或低功耗模式下会悄悄把它关掉业务还在跑双活已经降级了。3.4 复制链路带宽同步复制不是按平均流量算的同步复制的带宽规划是双活里最反直觉的一环。它不按每天平均增量来计算而按峰值 IOPS 乘以写块大小来计算。假设一套存储峰值跑到 5 万随机写 IOPS平均写块 8KB那一秒要复制约 400MB 的数据折合 3.2Gbps。链路至少要按这个数值的两倍去预留因为复制流量的突发性很强存储缓存刷盘时经常瞬间翻倍。带宽不够的直接表现不是复制变慢而是生产 IO 变慢——同步复制必须等数据到达对端才返回写完成复制队列一拥堵应用侧延迟立刻上升。这里有个常用排查技巧如果双活上线后应用写延迟偶发飙升先看复制链路的丢包率和队列深度而不是看存储控制器 CPU。丢包超过千分之一双活就该考虑加链路或压缩了。4. 网络与数据库层双活大二层、无状态应用和 Oracle RAC 的取舍边界4.1 大二层怎么通VXLAN 与波分两种走法STP 怎么处理存储双活就绪后网络层要解决的是“两个机房在逻辑上像一个机房”。常见做法有两种各有各的适用场景。波分直连。两个机房间拉纤芯通过波分设备把二层透传过去交换机视角里这就是一根扩展口。优点是配置简单时延低适合距离 30 公里内、纤芯资源充足的同城双活。缺点是它把整个二层域扩大了一倍ARP 广播、IPv6 NS 网络发现报文都会横跨两个机房流量模型变了核心交换机的 CPU 要留余量。VXLAN 或 OTV 叠加网。在三层网络上叠加二层隧道广播被限制在本地跨机房只走单播。优点是距离不受二层限制故障域隔离得干净。缺点是叠加层设备会成为新单点VXLAN 网关的转发性能直接决定全网吞吐两边还得同时维护 VTEP 配置运维复杂度明显高。不管走哪条路STP 必须处理干净。我见过最经典的翻车是双活上线后链路一切正常某天网络团队例行检查发现某个低端交换机默认开了 STP一个边缘端口在广播风暴里开始收敛倒计时 30 秒内两个机房之间的二层通信全断存储复制和心跳走同一条链路差点触发脑裂双写。在任何一张双活网络里面向服务器和存储的端口要全部配置边缘端口或直接关 STP BPDU 处理核心端口要么指定根桥要么用 MSTP 明确划分实例绝不能让交换机自己算。4.2 让应用“无状态化”会话保持、分布式缓存与读写分离网络层通了应用层不做配合双活也立不起来。核心工作是让应用不再绑定“本机内存里的那一份状态”。最常见的包袱是会话保持——用户登录后 session 存在单机内存里负载均衡一旦把请求转到另一个机房用户直接被踢下线。解决思路就那么几条会话丢进 Redis 这类分布式缓存里两个机房共用一套缓存集群或者把负载均衡的会话保持策略从“源地址保持”改为“Cookie 保持”让用户请求永远追着 Cookie 走双活退化为双机房的会话绑定。更彻底的做法是改造应用为无状态设计所有状态都放到后端数据库或缓存中前端的每个实例都是平等的谁接请求都一样处理。这个改造不一定要一步到位先把会话缓存抽出来业务就能在双活之间切得动了。读写分离是另一个被低估的点。双活存储两个站点都能写但如果应用层只在一个站点写、另一个站点只读那叫“读双活写单活”性能压力全在主站点。要在两边同时写数据库层的冲突合并必须提前设计好按业务线或者按用户 ID 分片永远不让同一把写锁跨站点争抢。4.3 数据库层 RAC 与中间件的坑SCAN IP、表决盘和 Cache Fusion数据库层做双活Oracle RAC 是最常被点名的方式也是坑最密集的地方。RAC 的原理是多个节点共享一套数据库通过 Cache Fusion 在节点间同步数据块。它天然适合双活但三个细节没处理好反而比单活更脆。SCAN IP 的跨站点浮动。RAC 的 SCAN IP 要能跟着节点漂移DNS 解析必须同时包含两个站点的节点地址。如果 DNS 配错应用连接池只连到一个站点的 SCAN IP那 RAC 双活的流量分发就形同虚设。表决盘要在两边的存储上都放副本最好第三份放在独立仲裁设备上否则存储链路抖动时集群投票容易出现平局。Cache Fusion 对距离极其敏感。RAC 节点间的心跳和缓存合并流量要求网络延迟在 5 毫秒以内超过这个值数据库的全局缓存等待事件会暴涨双活节点互相拖慢。前面讲过50 公里的往返时延是 0.5 毫秒理论上是够的但中间经过交换机叠加、防火墙、波分设备后实测经常到 2 到 3 毫秒余量并不大。上线前必须压测不要只看理论值。最让人头疼的是分布式锁的跨站点争抢两个站点的应用同时频繁更新同一批数据行RAC 的全局队列会在两站点间疯狂传来传去性能雪崩。这时只能做业务拆分让每个站点尽量在本端处理自己那部分数据跨站点访问的比例越小越好。5. 避坑记录双活数据中心翻车的五个高频现场5.1 脑裂后两份数据都算数仲裁却选了错误的一方现象复制链路中断两个站点同时进入独立写模式业务没停但两端数据开始分叉。链路恢复后仲裁自动选了一方作为基准另一方的数据被回滚正好覆盖了故障期间新写入的订单。原因仲裁规则里“站点优先级”配置错误或者仲裁逻辑默认选了数据时间戳更新的一方而业务上应该保的是另一个站点。很多人以为脑裂只发生在网络断开时其实存储控制器重启、复制服务异常退出也会触发类似场景而这两类场景里“新数据”和“正确数据”经常不是同一份。解决仲裁优先级必须在方案设计阶段和业务方一起定清楚写进配置后做两次注入演练一次断主站点一次断备站点分别验证切换后保留的是不是业务方要的那份数据。优先级不是技术参数是业务决策。5.2 同步复制把 IO 延迟拉到 30ms双活直接变“双瘫”现象双活上线后业务平稳某天大促流量上来应用写延迟从 3ms 一路飙到 30ms数据库连接池被打满两个站点的业务同时卡死。原因同步复制的等待机制决定的。每个写 IO 要等对端确认复制链路带宽被峰值流量打满后写 IO 排队存储控制器缓存被占满新请求全部堵塞。双活对性能的拖累不是线性的流量一旦突破复制链路的临界点整个系统会断崖式变慢。解决上线前用峰值流量做过压测并给复制链路留出至少一倍余量。另外要建立监控告警盯住复制链路的队列深度而不是带宽利用率队列开始增长时提前扩容或降载别等延迟出问题才去查。5.3 仲裁设备放在其中一个站点网络抖动触发假脑裂现象两个机房之间的专线抖动持续了 5 分钟业务没断过但双活系统自己“分裂”了仲裁直接把业务踢到了另一个站点。原因仲裁设备部署在站点 A站点 A 与 B 之间的链路一抖动站点 A 的存储认为对端失联但仲裁设备自己也连不上自动按“本端优先”策略降级为单活。这段抖动期间两个站点实际上都在尝试对外提供服务数据分叉发生了而业务层没有感知。解决仲裁设备必须部署在第三个物理位置或者至少部署在不与任一站点共享同一条传输链路的机房。如果实在没有第三机房就接受“仲裁链路必须高可用”的结论给仲裁单独拉一条物理线路别和生产复制链路走同一根光纤。5.4 复制链路拥塞时限速与队列是两回事现象为保护业务 IO运维给复制流量配置了速率限制结果不做业务没有影响一跑高峰业务反而更卡。原因限速限制的是复制带宽但存储按 IO 队列来排队。限速压低了复制吞吐队列里堆积的复制请求越来越多存储要同时维护两端的数据队列队列本身占用的缓存资源反而挤占了生产 IO。解决限速只能作为最终兜底手段正常运维要保持复制队列深度在缓存容量的 50% 以下。如果业务峰值实在躲不开优先扩带宽或压缩复制流量而不是死磕限速值。运维值班手册里要写明队列深度告警优先于带宽告警处理。5.5 备份作业与双活互相“陷害”快照合并失败和备份黑洞现象双活上线后备份策略没变还是每天夜间从存储快照拉数据到备份系统。某天早上发现存储可用容量突然下降快照合并一直失败双活镜像关系被暂停。原因双活存储的空间占用是双份的快照再打一份就是三份。备份系统按原单活环境规划的容量完全没考虑双活的存储空间放大效应。夜间备份作业脚本还存在一个隐藏问题它直接挂载了双活一致性组的快照备份到一半快照超时失效存储还要回收快照空间和双活的数据同步互相抢缓存。解决双活上线前重新测算快照频率和保留周期给快照合并留出明确的低峰窗口。备份作业要从同步复制链路之外的数据副本去拉取不要在双活一致性组上直接做快照备份避免备份系统把自己变成双活的第二个复制订户。IT 运维体系文档里备份策略必须和容灾策略一起变更评审分开走流程是双活环境中最容易漏掉的坑。6. 故障注入三步法把切换练到不用看 PPT 也能完成6.1 第一步从拔链路开始记录收敛时间第一次演练不要上来就拔存储电源先拔两站点之间的复制链路。选一个业务低峰窗口断开主备机房之间的物理链路记录从链路中断到仲裁完成决策、再到业务流量归位的完整时间线。这个时间要做成表格存档它就是你这套双活真实的 RTO 底线。演练时有人盯着存储控制台有人盯着应用监控还要有人掐秒表。很多人只关心中间业务是不是断了但断多久才是关键数据。至少连续做三次取中位数一次断主站方向的链路一次断备站方向的链路两边的收敛时间通常不一样因为仲裁优先级会影响决策路径。6.2 第二步存储故障注入从控制器重启到 LUN 抖动链路断得干净利落存储故障才是真正考验。比较安全的注入方式是远程连接存储管理口执行控制器重启。这个动作模拟的是生产环境里最常发生的硬件故障——控制器升级失败、内存报错触发重启而不是整机断电那种大事件。LUN 抖动测试更贴近真实故障通过管理口把某个 LUN 临时设置为 offline 再恢复观察多路径软件是否能在几秒内自动切换路径IO 是否出现大量失败重试。这一步做完你才知道应用的 JDBC 连接池超时设置是不是够长是不是所有中间件都在故障期间把连接断光了。6.3 第三步把注入写进值班手册做成固定肌肉记忆故障注入结果要沉淀成文字。切换步骤、判定条件、回退条件、联系人清单全部写进数据中心的 IT 运维体系文档。每季度或每半年做一次注入回归人员换了也不怕值班的人照着文档能在 15 分钟内完成判断和切换这比任何演练总结都值钱。我自己有个习惯每次演练结束一定把“这次有没有出现和上次不一样的地方”单独写一段。没有差异是好事但大多数时候是有的——某个参数被调过某台设备固件升过级某条链路的时延变了。把这些差异追出来并确认影响比演练本身更重要。双活的本质是对一致性的持续承诺不保持高频验证系统就会悄悄退回单活等你真需要它的时候才发现来不及。希望帮到你。本文还有配套的精品资源点击获取
返回列表