华为存储双活容灾配置
实验环境
- 实验环境:O3社区· 闪存存储双活容灾解决方案实验
- HyperMetor双活参考:https://support.huawei.com/enterprise/zh/doc/EDOC1100112567
- 文件系统双活参考:https://info.support.huawei.com/storage/docs/zh-cn/dorado-6.1.0/hypermetro-userguide-file/aa_nas_config_feature.html
- 仲裁原理参考:https://support.huawei.com/enterprise/zh/doc/EDOC1100112567/fffc5aec
- 仲裁网络配置参考:https://support.huawei.com/enterprise/zh/doc/EDOC1100112567/6fc1abde
- OceanStor Dorado 5500 V6资料:https://support.huawei.com/enterprise/zh/flash-storage/oceanstor-dorado-5500-v6-pid-250662043
- OceanStor Dorado V6系列产品文档:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100214757&tocURL=resources%2Fhedex-homepage.html

Dorado 5500 V6存储设备每台有双主控(A主控 B从控),以下以本端存储设备为例
- 存储管理网络 (登录存储设备、连接仲裁服务器等)
- A控:
CTE0.A.MGMT接口10.175.210.171 - B控:
CTE0.B.MGMT接口10.175.210.172
- A控:
- 存储业务网络(块业务和文件系统)
- Bond_A绑定端口:控制器
CTE0.A、端口CET0.A.IOM0.P0、端口CET0.A.IOM0.P1 - Bond_B绑定端口:控制器
CTE0.B、端口CET0.B.IOM0.P0、端口CET0.B.IOM0.P1
- Bond_A绑定端口:控制器
- 双活复制网络
- RepA1逻辑端口:角色
复制、地址100.100.100.101/24、以太网端口CTE0.A.IOM1.P0 - RepA2逻辑端口:角色
复制、地址100.100.100.102/24、以太网端口CTE0.A.IOM1.P1 - RepB1逻辑端口:角色
复制、地址100.100.100.103/24、以太网端口CTE0.B.IOM1.P0 - RepB2逻辑端口:角色
复制、地址100.100.100.104/24、以太网端口CTE0.B.IOM1.P1
- RepA1逻辑端口:角色

基础知识
基本概念
- 仲裁服务器:当两端存储设备间出现心跳中断时,仲裁服务器可以决定应该由哪一站点继续为主机业务提供服务,从而最大程度提高主机业务的连续性
- 保护对象:通过存储特性(如双活特性)对LUN或保护组进行备份、容灾等保护
- 保护组:用于一致性组的数据保护场景;当用户将多个应用中有相同保护场景的LUN统一进行保护时,可以把不同应用中有相同保护场景的LUN组合成LUN组并把LUN组映射给主机或主机组,然后对LUN组创建保护组,完成对多个应用中有相同保护场景的LUN统一的数据保护
- 双活域:双活域由本端存储设备、远端存储设备和仲裁服务器组成,通过双活域,应用服务器可以实现跨站点的数据访问
- 双活一致性组:基于保护组创建的双活关系,即多个业务相关联的双活Pair的集合;例如,在大中型数据库应用中,数据、日志、修改记录等文件存放在存储设备的不同LUN中,可以通过将这些LUN加入保护组后再创建双活一致性组,实现数据复制的一致性
- 租户:租户是指在一套物理存储系统中创建多个虚拟存储系统,让多个租户既能共享相同的存储硬件资源,又不影响相互的数据安全性和隐私
- 双活Pair:本端LUN和远端LUN之间的双活关系;在配置双活时,本端存储系统的一个本端LUN和远端存储系统的一个远端LUN构成一个Pair
- 双活租户Pair:双活租户Pair是指本端存储系统的租户和远端存储系统的租户之间的双活关系
- 漂移组:存储系统上可用于IP漂移的端口组合,建议优先规划同一控制框内的端口组合创建漂移组
LUN、保护组、双活Pair、双活一致性组的关系



HyperMetro双活
基本概念
- 华为HyperMetro特性又称双活特性,双活特性中的两个数据中心互为备份,且都处于运行状态
- 当一个数据中心发生设备故障,甚至数据中心整体故障时,业务自动切换到另一个数据中心,解决了传统灾备业务无法自动切换的问题
存储双活架构
本地数据中心部署:通常部署在同园区的不同机房
- 主机采用集群部署方式,主机与存储设备间通常通过FC或IP交换机进行通信,同时存储侧部署存储双写镜像通道,保证双活业务的运行

跨数据中心部署:通常部署在同城或相近城市存在的两个数据中心
- 部署物理距离在300km以内,两个数据中心均处于运行状态,可同时承担相同业务。提高数据中心的整体服务能力和系统资源利用率,当单数据中心故障时,业务自动切换到另一个数据中心
- 在长距离传输(FC组网≥25km;IP组网≥80km)时,方案需要配套波分设备来保证网络传输时延。同时存储侧部署存储双活镜像通道,保证双活业务的运行

双活一致性组
- 在未使用双活一致性组时,当某个LUN的双活Pair故障后,其他Pair不会因为某个双活Pair的故障而停止数据同步;所以远端存储与本端存储的数据是不一致的,当本端存储故障后,远端存储进行数据恢复时,因为这三个LUN的数据并不是同一个时间点的数据,所以数据是无效的

- 在使用双活一致性组后,当某个LUN的双活Pair故障后,其他Pair也会因为某个Pair故障停止同步,防止两端数据不一致

块业务和文件业务的选择
块业务:对于结构化数据,例如业务系统核心数据库数据和虚拟化数据,推荐配置使用SAN闪存存储,保障核心系统数据库性能
文件业务:对于非结构化文件,推荐配置NAS闪存存储,使用存储上的文件系统方便业务挂载、文件存储及共享
仲裁模式
当两个数据中心之间的链路故障或其中一个数据中心故障时,两个数据中心之间无法实时同步,此时只能由双活Pair或双活一致性组中的一端继续提供服务。为了保证数据一致性,双活通过仲裁机制决定数据中心的服务优先级
参考:https://support.huawei.com/enterprise/zh/doc/EDOC1100112567/fffc5aec
静态优先级模式
- 用户在未配置仲裁服务器或仲裁服务器无法访问时,双活仲裁模式为静态优先级模式,双活Pair发生仲裁时优先站点端获得仲裁并提供业务
- 当发生阵列间链路故障,或者双活Pair中设置为非优先站点的站点故障时,双活Pair优先站点上的LUN继续提供双活业务,非优先站点的LUN停止提供双活业务
- 双活Pair中设置为优先站点的站点故障时,非优先站点不能自动接管双活业务,双活业务停止,需要人工强制启动非优先站点双活业务
- 当优先站点阵列主动下电(即通过DeviceManager,进入“设置 > 设备下电”)维护时,非优先站点阵列会接管所有双活业务,业务不会中断
以数据中心A为优先站点、数据中心B为非优先站点为例

仲裁服务器模式
- 使用独立的物理服务器或者虚拟机作为仲裁设备,仲裁服务器建议部署在第三方仲裁站点。这样可以避免单数据中心整体发生灾难时,仲裁设备也同时故障
- 仲裁服务器模式下,一旦出现任一数据中心整体故障或阵列间链路故障时,阵列向仲裁服务器发起仲裁请求,由仲裁服务器综合判断哪端获胜。仲裁获胜的一方继续提供服务,另一方停止服务。仲裁服务器模式下优先站点会优先获得仲裁胜利
以数据中心A为优先站点、数据中心B为非优先站点为例



HyperMetro块业务双活配置
存储初始化配置
在两台OceanStor Dorado存储上创建存储池:冗余策略为盘级冗余、RAID策略为RAID 6、勾选控制框CET0、磁盘数量选择全部,其他默认




块业务存储基础配置
配置存储业务端口
当存储系统与主机采用iSCSI连接时,在配置连通性前,需根据业务需要在存储侧完成端口配置,确保后续存储与主机间能正常通信
创建绑定端口(两台存储设备都要配置)
根据不同的控制器创建不同的绑定端口(聚合组),并将指定的接口加入到对应聚合组中,用于后续创建业务逻辑端口
- Bond_A绑定端口:控制器
CTE0.A、端口CET0.A.IOM0.P0、端口CET0.A.IOM0.P1 - Bond_B绑定端口:控制器
CTE0.B、端口CET0.B.IOM0.P0、端口CET0.B.IOM0.P1


本端存储-绑定端口

远端存储设备-绑定端口

创建逻辑端口(两台存储设备都要配置)
基于不同的绑定端口分别创建不同的iSCSI逻辑端口,用于后续虚拟机存储业务将通过该逻辑端口连接到存储设备上;下图以本端存储为例
- Logical_A_iSCSI逻辑端口:角色数据、数据协议iSCSI、绑定端口Bond_A、存储业务网段10.175.212.171/24、网关10.175.212.1
- Logical_B_iSCSI逻辑端口:角色数据、数据协议iSCSI、绑定端口Bond_B、存储业务网段10.175.212.172/24、网关10.175.212.1



远端存储设备-逻辑端口配置
- Logical_A_iSCSI逻辑端口:角色数据、数据协议iSCSI、绑定端口Bond_A、存储业务网段10.175.212.175/24、网关10.175.212.1
- Logical_B_iSCSI逻辑端口:角色数据、数据协议iSCSI、绑定端口Bond_B、存储业务网段10.175.212.176/24、网关10.175.212.1

创建业务LUN及LUN组
将存储池中的存储空间划分为多个逻辑单元(LUN),用于后续映射给业务主机使用。针对同一应用系统的多个LUN,建议创建LUN组来保障所有业务LUN的一致性
在配置双活时,只需要在本端存储设备上创建LUN及LUN组,后续配置双活后会自动同步过去
- LUNGrouptest组:创建三个
5G的LUN划分到该LUN组中,名称为LUNtest01~03(此处数量、名称、大小均无要求) - 后续该LUN组及组下的LUN,将作为双活(将LUN组加入到保护组中)


创建主机及主机组
为建立存储与应用服务器的连接,需先创建虚拟主机。如果一个应用部署到多个主机构成的集群上,这些主机均需访问这个应用的数据卷,务必将这些主机创建成一个主机组
在配置双活时,只需要在本端存储设备上创建主机及主机组,后续配置双活后会自动同步过去(远端存储设备也需要创建对应的启动器,后续会创建)
- 根据业务需求创建两个主机
HosttestA和HosttestB,并将主机加入到主机组HostGrouptest中,此处的主机IP地址配置无强制要求 - 以下的iSCSI启动器为空,是因为主机还没有向存储设备发起连接,可以后续手动指定启动器,或让主机先发起iSCSI请求再创建主机




建立LUN映射关系
为了使业务主机最终能访问LUN的存储空间,需要先建立主机组与LUN组之间的映射关系
在配置双活时,只需要在本端存储设备上建立LUN与主机的映射关系,后续配置双活后会自动同步过去
- 将主机组
HostGrouptest与LUN组LUNGrouptest进行映射


在两台主机上对存储设备的iSCSI业务地址发起连接,以下以主机A为例
1 | cat /etc/iscsi/initiatorname.iscsi # 查看本机iSCSI的IQN |
1 | iscsiadm -m discovery -t st -p 10.175.212.171 # 发现10.175.212.171地址的iSCSI目标器 |

主机向本端存储设备发起连接后,可以在本端存储设备上看到两台主机对应的iSCSI启动器;按照对应的IQN号关联对应的主机名或IP即可



在两台主机上查看多路径状态以及映射到本机的LUN信息(需要在主机上提前安装华为UltraPath多路径软件)
1 | iscsiadm -m session --rescan # 重新扫描iscsi启动器,或使用hot_add命令 |

块业务存储双活配置
仲裁服务器配置
使用独立的物理服务器或者虚拟机作为仲裁设备,仲裁服务器建议部署在第三方仲裁站点。这样可以避免单数据中心整体发生灾难时,仲裁设备也同时故障
配置仲裁软件
通过ssh连接到仲裁服务器后,将仲裁服务器用于提供仲裁服务的所有IP地址和软件监测的端口号加入到仲裁软件里进行管理
1 | qsadmin # 进入仲裁软件配置 |

配置仲裁白名单
查看本端和远端存储设备的ESN编号,并复制该编号


1 | qsadmin # 进入仲裁软件配置(没退出就不用再进) |


检查License
需要确保两台存储设备上都有SAN双活(HyperMetro)的License授权

添加远端设备
创建复制逻辑端口
在两台存储设备上创建复制角色的逻辑端口,用于后续的双活复制链路连接;以下以本端存储设备为例
- RepA1逻辑端口:角色
复制、地址100.100.100.101/24、以太网端口CTE0.A.IOM1.P0 - RepA2逻辑端口:角色
复制、地址100.100.100.102/24、以太网端口CTE0.A.IOM1.P1 - RepB1逻辑端口:角色
复制、地址100.100.100.103/24、以太网端口CTE0.B.IOM1.P0 - RepB2逻辑端口:角色
复制、地址100.100.100.104/24、以太网端口CTE0.B.IOM1.P1


远端存储-复制链路逻辑端口配置
- RepA1逻辑端口:角色
复制、地址100.100.100.105/24、以太网端口CTE0.A.IOM.P0 - RepA2逻辑端口:角色
复制、地址100.100.100.106/24、以太网端口CTE0.A.IOM.P1 - RepB1逻辑端口:角色
复制、地址100.100.100.107/24、以太网端口CTE0.B.IOM.P0 - RepB2逻辑端口:角色
复制、地址100.100.100.108/24、以太网端口CTE0.B.IOM.P1

创建远端设备管理员
在远端存储设备上创建远端设备管理员,用户名密码无特定要求,能在本端存储上登录就行


添加远端设备
在本端存储设备上添加远端存储设备,通过IP链路、本端端口为RepA1(100.100.100.101)、远端IP为100.100.100.105,连接成功后,再勾选其余链路端口



创建块双活域
在本端存储设备上创建双活域和仲裁服务器;在仲裁服务器模式下,当任意一个存储设备故障时,阵列向仲裁服务器发起仲裁请求,仲裁服务器综合判断哪端获胜,获胜方继续提供服务
- 本端仲裁链路:仲裁服务器IP
10.175.210.101:30002、端口类型管理端口、端口CTE.A.MGMT.xxxxx(与仲裁服务器逻辑互通的端口) - 远端仲裁链路:仲裁服务器IP
10.175.210.102:30002、端口类型管理端口、端口CTE.A.MGMT.xxxxx(与仲裁服务器逻辑互通的端口)




创建双活Pair和双活一致性组
通过创建双活Pair和双活一致性组,可以建立本端LUN资源与远端LUN资源之间的双活关系
远端存储创建启动器
在远端存储设备上创建两台客户端的iSCSI启动器,无需创建主机与主机组


本端存储为LUN组创建双活
在本端存储设备上为LUN组LUNGrouptest创建双活保护,保护组名称PG001、双活域为刚才创建的块双活域名称


Pair创建模式为自动、远端资源租户System_vStore(按需求来)、远端资源名称与本端一致(按需求来)、业务保障策略为数据可靠优先、其他默认即可

此处选择映射到相同主机组、勾选保持主机LUN ID一致、主机访问模式均衡




确认双活配置



主机联通性配置
存储双活Pair及一致性组配置完成后,可进行主机连通性配置,完成主机对双活LUN的识别及访问
在两台主机上对远端存储设备发起iSCSI连接
1 | iscsiadm -m discovery -t st -p 10.175.212.175 # 发现10.175.212.175地址的iSCSI目标器 |

1 | iscsiadm -m session --rescan # 重新扫描iscsi启动器,或使用hot_add命令 |

块存储双活容灾测试
主机挂载存储资源测试
1 | mkfs.ext4 /dev/sda # 将其中一块LUN映射的磁盘格式化为ext4文件系统 |

故障模拟
将远端或本端存储设备的双活存储间所有复制链路全部断开(CTE0.A.IOM1和CTE0.B.IOM1接口模块),模拟存储间全部双活复制链路的故障场景




故障后业务状态检查
- 远端设备状态为
故障状态、IP链路为未连接、双活Pair为故障 待同步 未连接状态



本端设备:双活Pair的LUN资源依然为 本端资源角色 优先站点、 本端资源主机访问状态读写(提供存储业务)

远端设备:双活Pair的LUN资源为 本端资源角色 非优先站点、 本端资源主机访问状态禁止访问(不提供存储业务)


主机测:本端存储设备为Normal正常状态、远端存储设备为Fault故障状态,测试文件写入依旧正常


恢复业务
重新给复制链路的接口模块供电,模拟复制链路业务故障恢复


等待几分钟后,在本端存储设备的双活Pair上可以看到健康状态为正常、运行状态为正在同步或正常(同步完成后为正常),远端设备及主机业务均为正常状态



HyoerMetro文件业务双活配置
文件业务存储基本配置
创建文件系统
检查License

本端存储设备-创建文件系统:名称随意、大小随意,关闭CIFS、NFS和HyperCDP保护




创建Dtree
Dtree是文件系统的子目录。在Dtree上可以设置配额和共享
本端存储设备-创建Dtree:所需文件系统选择刚才创建的文件系统nfs1,名称为子目录名称(任意)、配额需求按要求勾选即可



创建逻辑端口
本端存储设备-创建漂移组:先在前面绑定端口的基础上创建一个漂移组,将绑定端口Bond_A和Bond_B加入到该漂移组中


本端存储设备-创建逻辑端口:数据协议为NFS+CIFS(按需求来,此处只用了NFS协议)、地址 10.175.231.173/24、网关10.175.212.1、端口类型绑定端口、主端口Bond_A、漂移组FailoverGroup1;此处需要根据不同的控制器Bond创建两个逻辑端口
- 仅需要在本端存储设备上创建逻辑端口,不要在远端存储设备上创建!!


创建NFS共享
本端存储设备-创建NFS共享:文件系统和Dtree选择刚才创建的,客户端读写权限如下所示(注意:要选择no_root_squash和no_all_squash选项)



客户端挂载共享
1 | showmount -e 存储NAS业务IP # 查看存储系统当前所有的NFS共享 |


文件业务存储双活配置
创建文件系统双活域
工作模式为双活AA模式、仲裁服务器与前面的块业务双活共用;双活域只需要配置本端,远端会自动同步创建


创建双活租户Pair
创建漂移组
在本端和远端的存储设备上创建相同名称的漂移组,本端存储设备漂移组在前面已经创建了,此处只需要在远端存储设备上创建漂移组


创建双活租户Pair
在本端存储设备上勾选要创建双活租户Pair的租户(此处使用System_vStor租户)、Pair创建模式为手动、远端租户保持默认(将自动选择同名租户System_vStor)






创建双活Pair
在本端存储设备上创建文件系统的双活Pair,文件系统选择需要创建双活的文件系统nfs1、远端存储池选择默认的StoragePool001;系统将自动在远端存储设备的存储池中创建与本端同名的文件系统(还有NFS的逻辑端口),并为本端文件系统和远端文件系统自动建立双活Pair


远端存储设备上会自动创建与本端存储设备相同的NFS逻辑端口
- 本端存储设备:正常时逻辑端口为
已连接状态,归属站点为本端设备 - 远端存储设备:正常时逻辑端口为
待工作状态,归属站点为远端设备


文件业务存储双活容灾测试
主机挂载存储资源测试
测试前在客户端创建测试文件,查看本端存储是否正常使用
1 | dd if=/dev/zero of=/nfs/testfile bs=1G count=1 # 在测试文件夹内创建testfile测试文件,大小1G |

故障模拟
将本端存储设备的存储业务链路全部断开(CTE0.A.IOM0和CTE0.B.IOM0接口模块),模拟本端存储全部存储业务链路全部断开的故障场景


故障后业务状态检查
- 本端存储设备的逻辑端口运行状态为
待工作、远端存储设备的逻辑端口运行状态为已连接


文件系统的双活Pair为正常状态(因为断开的是业务链路,不是复制链路)、双活租户Pair为正常状态、文件系统双活域为正常状态



在主机上写入新文件,写入也没有问题,双活全部正常

恢复业务
重新给业务链路的接口模块上电,模拟业务故障恢复


等待10分钟左右,本端设备的两个逻辑端口从待工作状态恢复为已连接状态,远端设备的两个逻辑端口从已连接状态切换为待工作状态;此时逻辑端口IP已重新在双活本端存储恢复工作,NAS业务链路完成自动回切


在主机上写入新文件,写入也没有问题,双活全部正常

注意事项
文件业务双活-问题1
在配置文件业务双活时,远端设备的双活租户不要配置LIF(Logical Interface逻辑接口)、DNS_ZONE等,否则在本端创建双活租户Pair会失败



文件业务双活-问题2
双活配置完成后,远端设备的双活租户是创建不了逻辑端口的;需要在本端设备的租户上创建逻辑端口,本端设备会同步给远端设备




如果需要在远端配置逻辑端口,则需要重新创建一个租户,在其他租户上创建逻辑端口等相关业务

交换机配置
参考:https://support.huawei.com/hedex/hdx.do?docid=EDOC1100139509&id=basic_block_service_012
在存储设备上使用绑定端口后(链路聚合),在华为交换机上需要配置链路聚合的模式为静态LACP模式,可以通过VLAN隔离复制链路、仲裁链路、业务等
1 | int eth-trunk 1 |





