尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

华为双活数据中心解决方案:从RPO=0到分钟级RTO的落地指南

华为双活数据中心解决方案:从RPO=0到分钟级RTO的落地指南 简介华为双活数据中心解决方案白皮书以DOCX文档形式发布面向企业IT架构师、数据中心容灾规划与运维人员系统解答双活数据中心如何实现业务连续性与数据安全的问题。资源包仅含1份Word文档约5.6MB内容完整、便于离线阅读与归档。文档从数据中心业务发展趋势切入阐述Active-Active创新设计理念并围绕存储、主机、应用、网络、安全、传输六个层级展开技术细节包括OceanStor V3阵列虚拟化与镜像实现存储双活、服务器虚拟化与HA跨中心切换、数据库及负载均衡集群部署、EVN/以太大二层互联、防火墙安全策略跟随以及波分设备11冗余等。白皮书还结合政府、公安、教育、企业、金融、医疗等行业案例说明双活解决方案的适用场景与价值同时涵盖均匀负载、第三方存储利旧、集中告警统一监控等维护特性。目前已有178人学习该资源适合作为企业容灾方案设计、售前交流及技术培训的参考资料。1. 华为双活数据中心解决方案先想清楚它解决的是哪一类“活”我刚入行那年在机房做灾备切换演练主备环境倒一次业务花了40分钟数据库还起了两遍才干净。后来接触华为双活数据中心解决方案才意识到“两个机房都在跑”和“两个机房都能接着跑”是两码事。这套方案解决的核心问题是让相同数据同时落在两个数据中心任何一个机房整体故障业务不用重建数据库、不用恢复备份应用在另一个机房直接接着写。RPO等于0RTO从小时级压到分钟级。它适合金融核心账务、政务一体化、医院HIS这类承受不了一次“数据回退”的生产系统。你手里这份《华为双活数据中心解决方案白皮书.docx》我拿到后最想先看的两张图永远是组网拓扑和切换流程后面落地时踩的坑多半都藏在这两张图里。2. 双活不是“两个机房都能开机”容灾等级、组件拆解与数据流2.1 容灾等级模型为什么RPO0要从同步复制说起容灾等级通用模型是SHARE 78的七级划分只有到第6级和第7级才谈得上真正的“零数据丢失”。华为双活数据中心解决方案对应的是第6级同步复制、应用集群、自动切换。核心不是“两个机房都有数据”而是“每一笔提交两端都落盘后才给应用返回成功”。主备模式哪怕做了小时级备份崩溃后仍会丢失最后一个备份窗口内的数据这是RPO永远大于0的根本原因。容灾等级数据同步方式典型RPO典型RTO适用场景第2级定期备份小时级天级办公系统、开发测试第4级异步复制分钟级小时级一般业务系统第6级同步复制双活0分钟级核心生产系统第7级双活自动化编排0分钟级以内关键交易系统同步复制有一个物理边界光和电在链路里的传播速度有限写I/O每次要往返两个机房一次距离越远时延越大。同城几十公里通常没有问题超过100公里后数据库写等待会明显恶化。所以“双活数据中心”在实践中基本等于“同城双活”异地容灾另用异步复制或“双活第三点灾备”组合。这个同城边界就是白皮书里所有距离建议和参数建议的前提。2.2 华为双活方案的组件拆解存储层HyperMetro、网络层、仲裁层华为这套方案里最核心的存储技术叫HyperMetro。它把两台存储阵列组成双活域在LUN粒度上做同步镜像主机写A阵列时B阵列同时落盘两端完成后才返回写成功。对外主机看到的是一个“双活LUN”对内数据副本分别放在两个站点。这一步解决了存储单点但远远不够主机、数据库、网络、机房配套都是单点任何一个挂了业务还是起不来。因此白皮书里的完整方案通常围绕五层展开存储层、网络层、主机层、应用层、管理运维层。落地时真正决定成败的是后四层。网络层要区分业务网、复制网、心跳仲裁网三条链路主机层要配多路径软件否则双活LUN对主机不可见或切换不生效应用层要做无状态化和会话外置管理运维层负责切换编排和巡检这一层在华为云Stack或ManageOne环境里一般会做统一编排。只看存储层双活不看应用层双活方案落地后大概率还是主备体验。2.3 双活与主备的数据流对比平时读本地切换读对端主备模式的数据流很直接应用写主库主存储落盘然后按备份周期或异步复制把数据送到备端故障发生时先拉起备库、回放日志、再启动应用。这个流程里任何一个环节没准备好RTO就可能从小时级变成半天。双活模式的数据流完全不同。应用发起写操作后主机通过多路径软件选路把I/O发到本地阵列A阵列A同步复制到阵列B两端都确认落盘后写成功才返回给应用。读操作默认走本地路径只有本地路径失败时才从对端读。这也是双活存储的一个附带优势读性能比主备更高两个机房都能分担读流量。但“读本地优先”要依赖多路径软件的读优化策略策略没配好对端链路抖动时读性能反而会崩这个坑在第5章会专门展开。3. 网络和存储层落地组网、HyperMetro配置与带宽估算3.1 网络层设计三层互联加二层延伸链路冗余怎么考虑双活网络设计首先要把链路分清。业务网负责服务器与应用之间的访问复制网承载存储间同步复制的流量走FC或万兆IP心跳仲裁网负责站点间状态协商这条链路对时延和稳定性最敏感。三条链路如果共用同一对光纤一次光缆被挖断就会同时造成复制中断和仲裁失效设备直接进入脑裂处理逻辑。常见做法是两个机房之间用裸光纤或DWDM波分互联业务网以三层路由为主数据库集群和少数有状态服务需要的二层广播域用大二层或VXLAN延伸。华为三层交换机在这里承担骨干互联角色例如配置Eth-Trunk链路聚合放行专用VLANinterface Eth-Trunk1 port link-type trunk port trunk allow-pass vlan 100 200 interface 10GE1/0/1 eth-trunk 1 interface 10GE1/0/2 eth-trunk 1这里vlan 100是业务网段vlan 200是存储复制专用网段。两条物理10GE口捆绑成一个Eth-Trunk任何一条单纤中断流量自动走另一条不会造成复制链路中断。存储复制流量如果走IP网络我一般会再给vlan 200打上QoS高优先级避免业务突发流量把复制拥塞拖垮。二层拉平要克制不要试图把所有VLAN都延伸到两个机房超大广播域会让故障半径变大建议只延伸数据库集群和管理网段。3.2 存储双活配置基于HyperMetro的最小配置流程华为存储的双活配置在OceanStor系列上最好通过DeviceManager图形界面操作生产环境第一次搭建不建议直接在CLI上试探。最小配置流程是先把两台存储加入同一个存储域配置远端设备互联和认证创建双活域然后创建双活Pair最后加入一致性组。一致性组非常关键它保证多个LUN的数据作为一个整体两端同步。如果要用CLI方式理解结构命令逻辑大致如下dpm hypermetro create \ -pair_name hm_dbdata \ -local_lun lun_data \ -remote_lun lun_data \ -domain_id 1 \ -sync_mode sync \ -consistency_group cg_db参数含义pair_name是这个双活对的名称用来在双活域里唯一标识local_lun和remote_lun分别是本端和对端承载同一数据内容的LUNsync_mode必须为sync双活才有RPO0的意义consistency_group指定一致性组数据库的数据文件、控制文件、在线日志最好放进同一个组。不同存储产品线这套命令存在差异做变更前一定以对应版本命令参考为准别拿这套命令直接怼生产。配置HyperMetro时还有几个关键参数要提前决定参数推荐值说明同步/异步模式sync双活必须同步复制写策略两端确认后返回保数据一致性偏好站点主站点脑裂仲裁时优先存活自动重建开启故障恢复后自动补数据容量规划两端一致一端满盘另一端也会被阻塞存储容量规划是一个经常被忽略的地方双活存储两端容量必须一致少算的一端在业务增长后会被动“锁写”那时候再扩容存储已经算紧急变更了。3.3 带宽与时延一个能直接套用的估算公式同步复制模式下每个写I/O都要在线路上往返一次链路带宽和时延直接影响业务写入性能。时延这类问题最像玄学链路看着没断业务就是慢根因往往是带宽余量不够或走了拥塞路径。我一般用下面的公式做前期估算def estimate_bandwidth(peak_write_iops, avg_io_kb, redundancy1.4): mbps peak_write_iops * avg_io_kb * 8 * redundancy / 1024 return round(mbps, 1) # 示例峰值写IOPS 5000平均I/O 8KB print(estimate_bandwidth(5000, 8))这个示例算出来约450Mbps。推导逻辑5000 IOPS乘以8KB得到40MB/s吞吐乘8换算成Mbps是320Mbps再乘1.4冗余系数覆盖协议开销和突发。落到实际链路规划建议直接上双链路1Gbps起步余量足够如果应用以小IO随机写为主IOPS指标比吞吐更敏感规划时要同时看存储阵列的复制IOPS上限留40%的余量。时延方面两站点间RTT建议小于3毫秒超过5毫秒数据库写等待会明显暴露给最终用户。光在光纤中传输约5微秒/公里往返乘2这个物理账决定了双活数据中心的距离限制。这也是为什么异地容灾几乎不做同步双活——距离远时延压不住RPO0的代价是业务写性能崩盘。4. 主机与数据库层让应用真正“双活”而不只是存储双活4.1 主机多路径与UltraPath为什么双活环境必须配多路径双活存储在主机侧呈现为一个LUN但主机到存储实际存在两条物理路径一条通过本地存储阵列一条通过对端存储阵列。主机的多路径软件负责选路和故障切换。华为环境常见做法是安装UltraPathLinux也可以使用DM-Multipath。不配多路径直接用单路径链路抖动一次IO就断了双活等于没做。多路径配置的核心是路径策略和回切策略。双活场景推荐“本地优先读两条路径都可用”故障恢复后的回切不能太激进。以DM-Multipath为例配置片段如下multipaths { multipath { wwid 3600...shared_lun_wwid alias mpath_db path_grouping_policy multibus path_checker tur failback 30 } }path_grouping_policy multibus表示所有路径归为同一组双活LUN的两条链路都能转发I/Opath_checker tur是常见的活跃路径检测方式failback设为30秒表示路径恢复稳定30秒后才回切到最优路径。这个参数是我的血泪经验最初设成immediate光纤链路抖动一次多路径就在两条路径间来回倒腾数据库I/O超时报警比链路本身故障还热闹。初始化配置完成后记得用multipath -ll查看路径状态确认两条路径都显示active。4.2 Oracle RAC跨机房部署ASM failgroup和voting disk的落法跨机房的数据库双活最常见做法是Oracle RAC这类共享存储集群。华为双活存储给RAC提供的是同一个虚拟LUNASM层再做数据冗余。ASM磁盘组建议使用normal redundancy两个failgroup分别对应A、B两台存储A存储上的磁盘归入failgroup fg_aB存储上的磁盘归入fg_b。这样一来任一台存储故障ASM仍能从另一个failgroup读到完整副本。ALTER DISKGROUP data NORMAL REDUNDANCY FAILGROUP fg_a DISK /dev/mapper/mpath_data_a FAILGROUP fg_b DISK /dev/mapper/mpath_data_b;这段SQL把data磁盘组定义成normal冗余并指定了failgroup与磁盘的对应关系。需要特别注意的是voting disk和OCR文件不能只放在一个站点的存储上否则那个站点宕机时整个集群无法仲裁。一般做法是用crsctl replace votedisk把表决盘写入独立的仲裁LUN并在两个机房各保留一份可用的表决盘副本。配置后用crsctl query votedisk验证。RAC私网interconnect也容易被低估。跨机房RAC的私网流量要在两个机房之间走二层或三层专线建议双万兆网卡绑定禁止和业务网络混跑。私网时延超过20毫秒RAC的Cache Fusion就会出现大量块传输等待数据库性能会显著劣化。有一点要明确如果你没打算做数据库级双活只是存储双活加数据库主备那存储双活的投入产出比要重新评估因为主备数据库的RTO瓶颈在数据库拉起和日志回放不在存储层。4.3 应用层多活的取舍无状态优先会话和文件另找出口应用层是最终决定“业务双活”体验的地方。无状态应用天然适合双活两个机房各部署一套应用节点前端接入通过负载均衡分发任意机房宕机流量自动切到对端。最常见做法是Nginx或LVS做流量入口后端应用实例两个机房均布。upstream app_cluster { server 10.1.1.10:8080 max_fails2 fail_timeout5s; server 10.2.1.10:8080 max_fails2 fail_timeout5s; } server { listen 80; location / { proxy_pass http://app_cluster; proxy_next_upstream error timeout http_502; } }proxy_next_upstream是关键后端节点返回错误或超时时Nginx自动把请求转发到另一个机房节点。业务侧也要做配套改造本地Session换成Redis集中会话上传文件落到共享文件系统或对象存储定时任务要加跨机房锁防止两个机房同时跑同一批任务。很多项目翻车都翻在“存储双活了但应用里有本地状态”这件事上落地上要多留一周做应用改造不要只盯着存储看。5. 华为双活数据中心方案常见坑仲裁、链路和回切5.1 仲裁链路抖动引发“假脑裂”业务两站同时停摆现象存储侧出现split-brain告警设备自动降级为单活业务本应无感知却发生了一段时间的写抖动部分应用连接中断。原因仲裁链路与复制链路共用了同一根物理线路或交换机拥塞导致仲裁报文延迟甚至丢失存储系统误认为对端失联进入了保护性决策。解决把仲裁链路单独VLAN隔离并尽量走独立物理路径在华为三层交换机上给仲裁报文打高优先级队列适当调大仲裁超时阈值但要参考官方建议范围不要为了“稳”调到秒级以上否则真脑裂时业务中断时间会变长。我判断仲裁链路是否健康的经验只有一条长ping存储仲裁IP时延必须稳定在1毫秒以内抖动超过50%就值得排查。5.2 同步复制链路拥塞设备没告警数据库先等现象双活存储无任何硬件告警数据库应用写等待暴涨存储时延从0.5毫秒升到20毫秒以上业务表现为间歇性卡顿。原因带宽按平均值估算业务高峰期写IOPS突发同步复制产生反压应用侧的写确认被拖住。解决按峰值写IOPS重新核算带宽参考第3章的公式并保留40%以上余量给复制流量配置独立VLAN和QoS和业务流量物理隔离最好关键告警里加上复制链路吞吐和时延监控不要只看存储健康状态。这个坑最大的迷惑性在于存储设备显示“正常”但业务都堵在链路排队上。5.3 主机多路径反复切换链路一抖IO超时一堆现象光纤链路短暂抖动几秒钟存储网络恢复后主机磁盘报大量I/O error多路径软件在两个控制器之间反复切换数据库实例直接evicted。原因多路径回切策略设置得太激进链路刚恢复就立刻回切而链路本身还不稳定形成回切后再抖动、抖动后再回切的死循环。解决把failback设为有延时的稳定回切如30秒先处理物理链路抖动源再谈多路径参数优化多路径参数不要照搬网上“最佳实践”不同光纤交换机和HBA卡组合的兼容性差异很大每次改完参数要做一次断纤注入演练验证。这类问题排查时先看系统日志里有没有连续多次path down/up记录有的话先安抚链路而非反复调多路径配置。5.4 回切不收敛数据切完几分钟后告警现象灾备演练从B站点切回A站点后业务短暂恢复几分钟存储侧出现数据一致性告警部分应用查询结果异常。原因回切时只做了主机切换没有先恢复双活复制关系也没有等B站点数据完全同步到A站点就放开了业务写导致两端数据产生分叉。解决严格固定回切顺序先恢复存储复制关系等待两端数据同步完成并确认一致性组状态为正常再切换主机最后才放开业务写。这个顺序直接写进操作指导书演练时按顺序执行不要凭现场感觉调整。数据库层面切换后先做只读验证检查redo/undo应用情况再开放写流量。5.5 逃生模式下的“数据分歧”存储恢复了业务对不上账现象两个机房之间心跳和复制链路同时中断为了保业务放行了单端写链路恢复后存储层无法自动合并两端差异数据库日志对不上。原因逃生AA模式牺牲一致性保可用性恢复时需要人工仲裁。存储层只能保证“块级副本”无法理解数据库日志的先后关系自动合并会把redo和undo搞乱。解决进入逃生模式前记录本端数据库日志序列号和系统时间点恢复后优先用数据库层redo/undo做一致性归并无法归并时以业务实际写入的那一端为准另一端做数据补齐。这类场景一定要提前定义业务决策规则到底是“保证不丢数据”还是“保证业务不停”两个目标在某些极端故障下是矛盾的白皮书方案只能给机制给不了决策。6. RTO数据要测出来故障注入演练与结果沉淀演练项目和预期结果可以按这套表格设计覆盖存储、网络、仲裁三个层面演练项目注入方式预期结果存储复制链路断开拔掉A站点到B站点的复制光纤业务不中断RPO0单台存储故障将A站点存储下电数据库IO闪断后自动恢复仲裁链路中断断开仲裁交换机的上行接口无脑裂告警业务不受影响整体站点切换执行存储侧切换并切主机RTO在预设分钟内完成测量RTO时我习惯用一个探活脚本记录时间简单直接#!/bin/bash start$(date %s) while true; do if curl -sf http://app-vip/health; then end$(date %s) echo RTO: $((end - start))s break fi sleep 2 done这个脚本从故障注入后开始每隔2秒探测一次业务虚拟IP的健康检查接口直到业务恢复记录消耗秒数。RPO的验证不能只看存储侧同步状态还要在数据库层比对两个机房的数据量或行数文件层再做一次checksum抽查双活在设计上是0丢失但验证必须按非0来查。我现在每个季度至少做一次故障注入演练把每次的结果、参数变更和现场处置顺序都沉淀进操作指导书顺手更新到白皮书的docx里。演练不是为了证明方案没问题而是为了在真正的故障来临前把“参数调错、顺序搞反、人忙中出乱”这些问题提前暴露掉。希望帮到你。本文还有配套的精品资源点击获取
返回列表