jumpp
作者jumpp2021-03-10 10:57
系统架构师, 某互联网银行

某银行基于华为高端存储实现双活数据中心建设——整体架构方案设计篇

字数 6768阅读 6916评论 0赞 5

一、 整体架构方案设计

存储双活方案作为我行业务的核心基础架构,其架构的选择决定了整个系统是否可靠高可用、安全可信赖、弹性可扩展。此次方案建设,考虑到我们的上述需求,将采用用基于专业的虚拟化存储设备来构建高可用、高性能、可扩展的存储双活方案。

二、原系统架构

我行原有生产存储以 HDS 为主,主要为 G 系列中端。随着全行业务的快速增长,现网中端存储性能已经无法完全满足业务高速发展的需要,本次存储替换需要满足未来5年业务发展的需要。

三、存储双活架构

众所周知,银行核心交易系统是非常重要的,一旦出现问题,将会造成巨大的后果。重要业务系统采用双活保障可靠性。

3.1 双活架构描述

双活数据中心的定义指两个数据中心可以同时对外提供服务,整个系统具有业务负载均衡和自动故障切换功能。

SAN存储双活作为整个系统的核心基础架构平台,主要解决以下两个核心问题:

  1. 在两个存储中间实现数据实时同步,从而保证异常情况下,零数据丢失(RPO=0)。
  2. 提供可同时被两个数据中心主机访问的存储资源,从而实现主机应用集群的跨站点部署,保证异常情况下,应用的自动切换(RTO≈0)。

四、方案总体设计

4.1 方案描述

银行在两个单中心存储双活方案,同时通过业务做的双中心的容灾。

银行双活数据中心整体的建设包括:本地存储双活建设、双中心业务层容灾、原有业务系统数据迁移。

同城一体化双活容灾建设

我们存储双活方案采用华为OceanStor 18500F V5 存储产品,实现存储双活架构,为每个数据中心两台存储同时提供读写服务,且整个存储系统架构全冗余,任意数据中心单个存储故障时,另外存储设备和相同数据,最大化提高了业务连续性。

存储层,在银行数据中心A和银行数据中心B各部署2台四控制的OceanStor 18500F V5存储,同一个中心的两台存储组成一个集群,为数据中心主机业务同时提供读写服务。支持扩展至32控制器。为了提升空间利用率,使用数据重删压缩功能,减少数据占用的空间,提高每TB可用空间性价比。

数据中心的磁盘阵列利用HyperMetro技术对两台的磁盘阵列做镜像冗余配置,实现两台存储数据实时镜像,均互为冗余。任意数据一个数据中心单个存储故障,数据零丢失。

网络层,数据中心之间大二层打通,为业务双活提供条件。

应用层,两个数据中心的Oracle服务器构成一个Extended RAC集群,提供跨数据中心的自动负载均衡和自动故障转移功能。两个数据中心的应用虚拟机使用独立的虚拟化集群,通过流量入口控制进行负载均衡和灾备切换。

采用华为SAN免网关双活方案,我们无需使用多套管理界面进行管理,直接登录存储管理界面,即可实现常见操作的可视化管理,华为免网关双活实现高度免维,常见的单点、多点故障,在故障点修复后,双活即可自动完成恢复和数据重新镜像,无需人为判断和修复。即使最恶劣的情况下,也仅需界面可视化操作即可拉起业务和增量同步,无需删除原双活关系重新配置。

4.2   HyperMetro双活方案详细设计

4.2.1极简组网

HyperMetro架构无需额外部署网关设备,最大支持32个存储控制器,即两套16控存储系统组建双活关系。双活的两套存储系统间通信支持FC或IP链路(8Gb FC/16Gb FC/10GE),从性能上考虑推荐使用FC链路,每个控制器支持配置最多可达8条阵列间通信链路。存储系统和仲裁服务器之间的链路采用IP链路。

  • 免网关设计使主机I/O请求,无需经过存储网关转发,避免了网关转发引起I/O时延;同时减少网关故障点,提高方案可靠性;显著降低双活组网复杂度,便于维护。

  • SAN双活整合双活数据复制链路、配置同步链路和心跳链路到一支持使用相同的链路进行数据传输,个物理网络,简化了数据中心的组网。

  • 两套存储系统间的复制链路可以使用IP或FC链路,本次采用FC链路。

图1-1 HyperMetro逻辑组网图

4.2.2   存储双活集群

两套独立的存储阵列组建成集群,并以集群为核心,提供双活存储架构,向应用服务器提供无差异的并行访问,处理应用服务器的I/O请求。双活集群配置过程极为简单,只需要将两套存储阵列配置成双活域,即可完成集群配置。

集群系统使用阵列间FC链路作为通信链路,完成全局节点视图建立和状态监控。在全局节点视图基础上,集群系统提供分布式互斥等能力,支持AA双活架构。

集群节点具有并发访问能力。单存储工作控制器全故障时,则切换至集群另一个存储。

在跨站点集群基础上,SAN双活以双活Pair或双活一致性组为单位提供服务和进行状态管理;

两套存储阵列上的双活成员LUN组成一个虚拟双活LUN,通过实时镜像技术保持两个数据中心的双活成员LUN的数据实时一致。

一致性组是多个双活pair的集合,可以确保单个存储系统内,主机在跨多个LUN进行写操作时数据的一致性。

一致性组进行分裂、同步等操作时,一致性组的所有双活pair保持步调一致。当遇到链路故障时,一致性组的所有成员对会一起进入异常断开状态。当故障排除后,所有成员同时进行数据的同步,从而保证从站点灾备阵列数据的可用性。

4.2.3  仲裁

当提供双活的两套存储系统之间的链路故障时,双活已经无法实时镜像同步,此时为了保证数据一致性,只能由其中一端的文件系统和LUN继续提供服务,另外一端文件系统和LUN需要停止提供服务。HyperMetro通过仲裁机制决定由哪端继续提供服务,仲裁获胜的vStore里的文件系统和LUN继续提供服务。

双活提供了两种仲裁模式:

  • 静态优先级模式

  • 仲裁服务器模式

仲裁服务器模式比静态优级模式具备更高的可靠性,可保证在各种单点故障场景下,业务连续运行。因此,双活方案采用仲裁服务器模式。

静态优先级模式

静态优先级模式主要应用在无第三方仲裁服务器的场景。

为方便理解,将主vStore所在的存储系统称为主存储系统,将从vStore所在的存储系统称为从存储系统。

在静态优先级模式下,主vStore和设置为优先侧的双活LUN将作为优先站点,当主从存储系统心跳丢失时,主vStore设置为优先侧的双活LUN将会仲裁胜利。

当发生存储系统间链路故障,或者非优先存储系统故障时,优先仲裁端继续提供服务,非优先侧停止提供服务。

当优先仲裁存储系统故障时,非优先仲裁侧不能自动接管业务,主机业务中断,需要人工强制启动服务。

该模式的缺点是:两存储系统之间的心跳丢失时,可能是存储系统间链路丢失或其中一个存储系统故障,HyperMetro无法区分这两种情况。下表为静态优先级模式下的仲裁策略。

H1 和H2 表示组成双活的两个存储系统,H1是优先仲裁存储系统,H2是非优先仲裁存储系统。

静态优先级模式仲裁示意图:

仲裁服务器模式

使用独立的物理服务器或者虚拟机作为仲裁设备,仲裁服务器建议部署在第三方站点。这样可以避免单数据中心整体发生灾难时,仲裁设备也同时故障。如图所示。

仲裁服务器模式下,当存储系统间心跳中断时,两端存储系统向仲裁服务器发起仲裁请求,由仲裁服务器综合判断哪端获胜。仲裁获胜的一方继续提供服务,另一方停止服务。仲裁服务器模式下优先仲裁端会优先获得仲裁。仲裁过程如图所示:

1.存储系统之间的链路断开时,双活关系分裂。

2.两端存储系统分别抢占仲裁,主端将优先抢占仲裁,抢占成功的LUN和租户的文件系统,将对外提供服务,为应用提供存储访问;抢占失败的则停止对外服务。

3.中间链路恢复时,HyperMetro检测到中间链路恢复正常,经过握手通信将两个vStore自动恢复双活关系。

4.2.4    FastWrite

HyperMetro通过FastWrite功能对阵列间数据传输进行了协议级优化,应用SCSI 协议的First Burst Enabled功能,将写数据的链路传输交互次数减少一半。

正常的SCSI流程中,写I/O在传输的双端要经历“写命令”、“写分配完成”、“写数据”和“写执行状态”等多次交互。利用FastWrite功能,优化写I/O交互过程,将“写命令”和“写数据”合并为一次发送,并取消“写分配完成”交互过程,将跨站点写I/O交互次数减少一半。如图所示。

4.2.5 双活就近优先访问

SAN双活由多路径下发写请求至阵列,可以基于路径进行更好的选择。当双活数据业务场景,两站点的距离远近,是影响I/O访问性能的关键因素。HyperMetro特性通过与华为OceanStor UltraPath多路径配合,根据双活站点部署距离,提供了两种I/O访问策略供用户选择。

负载均衡模式

该模式下实现了I/O的跨阵列负载均衡,即I/O以分片的方式在两个阵列上下发。分片大小可配,例如分片大小为128M,即起始地址为0-128M的I/O在A阵列下发,128M-256M在B阵列下发,以此类推。

负载均衡模式主要应用于双活业务部署在同一数据中心的场景。在该场景下,主机业务访问两套双活存储设备的性能几乎相同,为最大化利用两套存储设备的资源,将主机I/O按分片方式下发到两套阵列上。

优选阵列模式

该模式下,由用户在UltraPath上指定优选访问阵列,主机业务访问时,I/O只会在用户设置的优选阵列路径上进行负载均衡下发,不产生跨阵列的I/O访问。只有当优选阵列出现故障时,才切换到非优选阵列下发I/O。

优选阵列模式主要应用于双活业务部署在距离较远的双数据中心场景。在该场景下,双活数据中心的跨站点访问的代价较高,假如两个数据中心的链路距离为100km,一次往返传输通常需要消耗约1.3ms时间。优选阵列模式可以减少跨站点交互次数,从而提升I/O性能。

针对数据读场景,双活数据中心的业务主机只需要读本数据中心对应的双活存储阵列即可,避免主机跨数据中心读取数据,提升整体访问性能。

针对数据写场景,业务主机直接写本数据中心对应的双活存储阵列,避免主机跨数据中心转发数据,充分利用HyperMetro AA双活能力,AA集群的每个控制器都能够接收写I/O,由本地控制器处理本地主机的写I/O请求,减少跨数据中心的转发次数,提升方案整体性能。数据写I/O过程如图所示:

4.3  业务容灾应用配置

4.3.1.1         Oracle RAC配置

在本地存储双活上建设Oracle RAC集群。主机采用集群部署方式。主机与存储间通常通过交换机方式通信,通过FC交换机。同时存储侧部署存储双写镜像通道,保证双活业务Oracle RAC的运行。

Oracle数据库场景下的双活存储配置SmartTier和FastWrite特性,并合理配置数据中心业务主机多路径参数,实现性能优化最佳配置。

通过数据双写技术,确保存储冗余,单存储故障时,数据零丢失,业务快速切换,最大化保护业务的连续运行。满足业务RTO=0,RPO=0的业务需求。

对Oracle数据库版本以及业务系统的部署建议:

  • 要实现Oracle数据库的跨数据中心的集群部署,需采用支持Oracle Extended Distance Cluster的Oracle版本。使用了Oracle 11g版本。

  • Oracle部署通常有三种存储管理方式:文件系统,裸盘和ASM,采用了ASM。

  • 对于Oracle Extended Distance Cluster配置,对 Oracle Clusterware和Oracle 数据库二进制文件和主目录进行本地存储,以减少站点间流量。

  • 为了避免跨数据中心进行数据的交互,在Oracle RAC层创建不同的service,实现业务分离。通过Service-Side TAF的PREFERRED功能设置应用只访问本地实例;同时设置远端数据中心的实例为AVAILABLE,只有本地实例都故障才切换到远端实例;可以减少RAC跨数据中心交互的次数,提升整体性能。

4.3.1.2           Mysql 主从配置

本项目中MySQL数据库采用主从方式进行容灾,不仅可以实现HA,而且还能读写分离,进而提升集群的并发能力。在数据中心A上部署一个主节点和一个从节点,在数据中B部署两个个从节点。

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。本项目MySQL 采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。方案优势如下:

  • 读写分离
    在开发工作中,有时候会遇见某个sql 语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

  • 数据实时备份,当系统中某个节点发生故障时,可以方便的故障切换(主从切换)
     提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据;

  • 高可用(HA)
    因为数据库服务器中的数据都是相同的,当Master挂掉后,可以指定一台Slave充当Master继续保证服务的运行,因为数据是一致性的(如果当插入时Master就挂掉,可能不一致,因为同步也需要时间)当然这种配置不是简单的把一台Slave充当Master,毕竟还要考虑后续的Slave的数据同步到Master。

在主服务器上执行写入和更新,在从服务器上向外提供读功能,达到读写分离的效果,也可以动态地调整从服务器的数量,从而调整整个数据库的性能。

在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能。

4.4 数据迁移方案

数据在新旧两种存储间的迁移,根据不同的要求,使用不同的方法,根据我们的业务系统特点本次方案采用存储数据在线迁移方法,可保证新老生产环境的数据能够正常交互,保证银行端的正常访问,整个迁移过程不中断和影响任何业务系统的运行。

4.4.1      数据在线迁移技术

由于两套存储系统的软件和硬件都会存在差异,数据迁移过程可能会出现业务长时间中断甚至数据丢失的风险。采用华为SmartMigration特性结合SmartVirtualization特性可以完成将业务数据迁移至新购存储系统的过程,整个迁移过程中只需在利用SmartVirtualization特性建立LUN托管的时候,需要短暂中断主机业务,业务数据迁移过程中无需中断主机业务。首先通过SmartVirtualization特性的LUN托管功能将原有存储系统中的外部LUN映射成新购存储系统中的eDevLUN,在新购存储系统上接管原有存储系统中的LUN。然后通过SmartMigration特性完成将业务数据从原有存储系统中完整可靠地迁移至新购存储系统的过程,迁移中可保持主机业务的连续运行。数据迁移至新购存储系统的示意图如图所示:

4.4.2     迁移步骤

用本端存储系统(新购存储系统)替换异构存储系统(原有存储系统)后,使用SmartVirtualization实现对异构存储系统上业务LUN的托管,并配合SmartMigration特性将异构存储系统上业务LUN的数据迁移至本端存储系统上,用本端存储系统承载原有业务的运行。

配置数据迁移的主要步骤包括:

1.   安装部署。
确保本端存储系统和异构存储系统物理连接正常。

2.   配置异构存储系统。
将异构存储系统上的业务LUN映射给本端存储系统。

3.   配置本端存储系统。
通过创建eDevLUN实现对异构存储系统上业务LUN的托管。

4.   配置SmartMigration特性。
在本端存储系统上配置SmartMigration特性,将异构存储系统上业务LUN的数据迁移至本端存储系统上。此操作中,源LUN为异构存储系统中的业务LUN在本端存储系统托管成的eDevLUN,目标LUN为本端存储系统上新创建的LUN。

五、    方案小结

在同城的两个数据中心本地分别部署两套存储做存储级别双活,保证本地的高可用,在两个数据中心之间在应用层之间通过Oracle RAC与Mysql主从技术实现业务层双活,通过基础层与应用层两套机制最大限度的保障了业务的连续性,任意一方的故障均不会导致业务停顿。

系列推荐:

某银行基于华为高端存储实现双活数据中心建设 —需求分析及设备选型篇

某银行基于华为高端存储实现双活数据中心建设—双活建设难点及运行维护经验篇

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

5

添加新评论0 条评论

Ctrl+Enter 发表