打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何通过存储仲裁的合理配置规避双活“脑裂”风险?这篇分享很实用

上个星期,twt社区平台专门组织了“城商行双活如何通过存储仲裁的合理配置规避“脑裂”问题在线探讨”同行线上交流,来自十多家城商行和金融行业专家一起参与探讨交流,部分交流探讨内容如下,希望给大家带来启发以及帮助。

1、针对目前主流的一些存储双活方案中,分别有哪些存储仲裁机制来规避双活存储“脑裂”风险?

@guwenkuan 某股份制银行 存储架构师 :

主流双活存储基本就两种模式,仲裁服务器和静态优先,一般情况下采取仲裁服务器和静态优先并存模式,仲裁服务器为主,当仲裁服务器宕机后,启用静态优先模式。

@yfwang 戴尔科技集团   顾问工程师:

一般就是两类:

1、 一类是静态式仲裁,通过在存储内部设定“优胜者”来实现,优势是不需要外置仲裁装置,不需要仲裁网络,劣势是在某些故障场景下,会业务中断,比如“优胜者”存储失败的的时候,但是不会发生脑裂。

2、 另外一类是外置仲裁机制,一般又包括两种,一种是虚拟机监控程序,比如 vplex 的 witness ,另外一种是基于仲裁盘的仲裁机制,比如 hds 的双活仲裁。这类仲裁的优势比第一类方式的系统连续性好,劣势是需要准备单独的服务器或者存储,以及仲裁需要的网络连接。

不管哪类仲裁,正常情况下都可以预防脑裂的出现,当然从业务连续性的角度来看,外置仲裁的方式更优一些,具体采用监控程序还是仲裁盘的方式,可根据实际情况和现有环境来定,如果采用外置式的一般要求部署在第三个故障域,且对仲裁网络有一些要求,相比而言,监控程序的方式部署更简单一些,对实施条件要求低一些,也是未来的发展方向。

2、存储双活方案该如何结合实际条件,选择相应的存储仲裁机制?是否一定需要选择第三方站点部署存储仲裁节点?

@yfwang 戴尔科技集团   顾问工程师:

每种存储双活方案都有各自的仲裁机制,所以选择了双活方案,仲裁机制基本也定了,没什么选择的空间。

一般仲裁建议放在第三个站点,这是从最佳实践的角度来说,不是技术限制;如果没有第三站点,也可以和生产放在一起,不过整个系统的健壮性会受影响,所以对VPLEX说来,我们认为如果没有第三个站点的话,就不用部署外置仲裁了,就用内置静态仲裁就可以了,也可以防止脑裂的发生。

@guwenkuan 某股份制银行 存储架构师 :

不需要一定选择第三方站点部署,本地站点也可以,静态优先能保证不发生脑裂情况。

3、双活存储中设置优先站点的意义是什么?其与仲裁节点如何配合作用?

@guwenkuan 某股份制银行 存储架构师 :

在脑裂情况下,双活存储快速识别业务主站点,确保脑裂情况下不相互争抢资源。

@yfwang 戴尔科技集团   顾问工程师:

设置优先站点的意义在于发生仲裁的时候,可以让业务运行在更优化的系统或者环境中,比如,如果两台存储的配置有高有低,那么在仲裁后,业务应该选择配置高的存储运行;如果双活的存储分别部署在生产中心和灾备中心,仲裁后业务应该运行在生产中心比较理想,因为生产中心一般设施更完善且技术资源更丰富。

通过设置优先站点,可以选择在发生仲裁时,优先让预先设置的“优先站点”接管业务,只有在优先站点也发生了故障后,仲裁才会让非优先站点接管业务。

4、双活存储在仲裁规则的配置上,如何与主机层面的PowerHA、RHCS以及数据库层面的oracle rac的仲裁保持一致?

@yfwang 戴尔科技集团 顾问工程师:

我觉得这个问题要分两种情况来看,以 RAC 为例说明:

1 、对于主机和存储是交叉互联的方案

即每台主机都有连接到两台存储的路径,在这种情况下,如果存储发生了仲裁,主机还可以访问另外一台,不会发生仲裁;如果主机发生了仲裁,存活的主机也都可以看到两台存储,存储不需要仲裁;

唯一有可能发生仲裁不一致的场景是主机和存储同时需要仲裁,比如 RAC 节点心跳和存储心跳同时断了,这时不仅 RAC 需要仲裁防止脑裂,存储也一样,为了保证仲裁的一致性,需要在设置的时候注意一下,一般 RAC 心跳断后,如果两边节点数一致,那么编号小的一边存活,对于 EMC 的存储方案,存储可以设置“优先者”,可以通过把和节点编号小的在一个站点的存储设置成“优先者”,来保证存储和 RAC 仲裁结果的一致性。

2 、对于主机和存储是非交叉连接的方案

VPLEX 支持交叉连接,也支持非交叉连接,当非交叉连接时,因为 RAC 节点只有到本地存储的路径,所以当存储发生仲裁时,因为有一边的存储将被挂起,所以这一边的 RAC 节点将访问不到存储, RAC 机制也会开始仲裁,会将失去存储这边的节点踢出群集,从而保证仲裁的一致性,这种情况下,需要保证存储先于 RAC 仲裁,这个顺序可以在 vplex 和 RAC 中设置。

5、Vplex的 仲裁机 Witness 故障时执行原理?

【问题描述】singlefailure 与 double failure 。谁来讲透,你们就不用担心仲裁如何选取位置了。不懂仲裁建哪里都一样,当发生故障时候你也没法人工干预。官方有16个场景,比较复杂。原厂专家来好好分析一下,多多赐教。

@yfwang 戴尔科技集团 顾问工程师:

官方的 16 个场景考虑了主机集群的切换,太复杂,容易搞晕,其实理解 witness 主要关注存储层面就可以了,主机层面按主机的仲裁规则去理解。

对于存储层面,双活方案由三点三线组成,三点是:生产站点 A 、生产站点 B 、仲裁站点 C ;三线是:A 和 B 之间的复制链路、 A 和 C 之间的仲裁链路、 B 和 C 之间的仲裁链路。

加起来可以理解为一共 6 个故障点, 6 个故障点可以有两种失败情形:

1 、单点故障:

vplex 双活机制下,可以保证任何一个单点故障,都不会引起业务中断,比如只是 A 站点发生灾难(是最严重的情况,如果只是 A 站点里面的存储坏了或者 vplex 坏了或者交换机坏了,破坏性不会超过整个站点的灾难), witness 会通知 B 站点继续处理业务,业务不中断,不需要人为干预。

2 、双点故障:

双点故障指上面的 6 个故障点有两个同时发生了故障,比如站点 A 和站点 C 同时发生了灾难,就属于双点故障。

双点故障下,会不会发生业务中断分情况来看, 6 个故障点两两组合,会导致业务中断的共有以下五种情况,此时需要人为手动干预才能恢复业务,这五种情况如下(见图):


除了这五种两点故障场景外,其他的场景也不会造成业务中断,不需要人为干预。

注意以下最后两个场景下,其实它说明了为什么 witness 要放在第三个站点,因为如果 witness 和 vplex 放在同一个站点,当这个站点发生了失败,虽然是个单点故障,但是相当于发生了如最后两图所示的双点故障,会导致业务中断,如果 witness 在第三个站点就不会有问题,这时 witness 建议在不同站点的主要原因。

综上所述,一般只需要避免发生如上五种双点故障,就可以避免业务中断,或者说如果进行灾难演练,可以着重演练这几种场景,因为这几个场景是需要人为操作恢复的。

不过只要按照最佳实践来部署,发生双点故障属于极小概率事件,实际环境中很少能碰上。

6、如何吃透 Vplex Globa distributed cache工作原理,大神来细讲一下,让运维人员心里踏实应对故障?

【问题描述】双写原理,数据落盘的全过程是什么样的一个流程??如何保证cache一致性,【这个一致了,两边存储数据就一致了】?欢迎大神指点迷津。

@yfwang 戴尔科技集团 顾问工程师:

讲起来比较复杂,试着说一下,看看能不能讲清楚。

分布式缓存一致性,是 VPLEX 的核心技术,也是 VPLEX 实现双活的主要技术基础。分布式是指缓存的管理是跨控制器的,一致性是指所有控制的缓存是全局的,互相能感知对方状态。

VPlex 实现分布式缓存一致性的关键组件是缓存一致性目录,该目录记录着 cache 里的所有数据的归属信息,比如数据块 37 属于哪个控制器,该目录状态会实时更新且 share 给所有控制器,对于 VPLEX Metro 方案,缓存一致性目录可以跨 VPLEX 集群扩展,以提供实现跨站点的缓存一致性。

下面用读写 I/O 的流程来简单描述一下如何实现的。

对于读请求来讲:

读 I/O 从某个控制器的前端口进来,先查看该控制器本地 cache 是否命中,如果命中,直接返回,如果没有命中,则去查找缓存一致性目录,看看别的控制器缓存里是否有要访问的数据,如果有,则从对应的控制器 Cache 中将其读取到本地 Cache ,再返回给主机;如也没有命中,则从本地后端的存储中读到本地 Local 中,修改缓存一致性目录的状态,然后返回给主机。

在双活状态下,虽然缓存一致性目录是跨 VPLEX 集群的,但对于读操作来讲,如果在本地集群缓存没命中,就直接去后端存储读数了,不会去远端的 VPLEX 缓存中读数据,因为机制认为链路的延时要大于本地存储的延时。

对于写请求来讲:

写 I/O 从某个控制器的前端口进来,先找本地 cache 中有没有对应的旧数据,有的话先把它废除,同理,根据缓存一致性目录查找别的控制器缓存中是否有旧数据,有的话也要废除,然后新数据写入本地缓存,并且透写到后端存储中,存储返回确认。

与此同时,另外一个 vplex 集群也会执行相应的操作,将旧数据废除,然后写入新数据,同时新数据透写到后端存储,返回确认给 vplex 。

Vplex 在收到两边存储返回的确认后,认为该写操作成功,给主机返回写入确认。

这一系列的步骤说起来比较繁琐,实际情况下几乎都是同时瞬间完成的,所以不用担心对性能的影响。通过这种机制,可以保证不论是本地主机访问本地 vplex ,还是异地主机访问异地 vplex ,看到的数据是完全一致性的,这个也是双活的技术基础。

不过分布式缓存一致性是 vplex 内部机制,可以了解一下原理,实际运维中不用担心数据一致性的问题,这是 VPLEX 内在机制保证的。

@cpc1989 某保险公司 存储工程师:

VPLEX现在主要就local和Metro两种方案了,Geo方案本身也少,也由其他方案替代了,不知道你是不是想了解的是VPLEX Metro 的分布式缓存的原理。

VPLEX Metro在物理上是两个站点,逻辑上两个集群,而且VPLEX只有读cache,没有写cache,这也是VPLEX保持强一致性的关键。数据落盘的过程中是数据写动作分为两个路线,一个写到本地VPLEX集群的本地存储,一个同步到异地站点的VPLEX集群,并写到异地存储中,只有两个落盘动作都完成后,写到VPLEX的动作才结束。

@guwenkuan 某股份制银行 存储架构师 :

分为两部分全局 cache 目录,和每个 director 的 cache 。读 IO 会首先查询全局目录看看是否在 cache 里,如果有也从相应的 director 里读取数据,如果没有,也从存储读取,并更新全局目录,下次短期内再读取则会命中。

7、基于存储网关和存储引擎的优缺点以及价值?

【问题描述】1)基于存储网关和基于存储引擎,两种存储双活实现方式的区别和优劣势是?2)在存储引擎本身支持双活的情况下,使用类似VPLEX的网关型存储双活的必要性和方案价值是什么?

@刘文 CMBC 系统工程师:

基于存储网关:

可以接入异构存储品牌,网关可以复用,对外统一访问,工作量集中在存储底层,对于上层的改造小。缺点是增加了网关层,也就增加了底层链路节点和复杂性。

基于存储引擎:

由存储本身集成双活特性,兼容性好,运维难度小。缺点是不能统一纳管异构存储,对外形成统一访问入口。

@yfwang 戴尔科技集团   顾问工程师:

网关型:

优势:可以支持异构平台;可以聚合容量;可实现多点多活;提供单独的计算资源

劣势:需要增加硬件;管理复杂度

存储型:

优势:实施、管理、维护更加简单;消除虚拟层对性能的影响;实施更加简单;

劣势:一般不支持异构;一般只支持两点双活;需要同品牌同型号

VPLEX 作为网关型双活方案,其价值在于可以搭建一个存储无关的双活平台,这个平台可以给用户带来的好处主要有:

1、 增加用户在存储选型上的灵活性;

2、 平台搭好以后,只要有双活需求的存储,直接挂载到 vplex 的环境中即可实现,简单简便;

3、 Vplex 下面的存储的维护、升级、更新换代甚至意外宕机都不会影响主机的正常工作,可以大大提升业务连续性。


8、能否详细介绍下Vplex存储双活方案的技术特点?包括存储层组网、分布式一致性缓存、分布式缓存模式、读I/O加速能力等特点?

@guwenkuan 某股份制银行 存储架构师 :

EMC Vplex 存储双活方案是基于 Vplex 网关产品实现,能够将 EMC 和其他厂商存储异构整合,虚拟化为统一的存储资源池,实现异构存储双活。Vplex 双活方案有 Vplex Metro 和 Vplex Geo 两种方案,方案由两个站点的两套 Vplex 集群系统组成,每个站点的 Vplex 集群都有自己专属的本地存储阵列,通过创建分布式镜像卷为跨集群的镜像卷,提供 Vplex Access Anywhere 功能,两个站点的 Vplex 集群各有一个卷,两个卷的 ID 一样。

存储层组网:主机与 Vplex 集群间访问、 Vplex 集群与后端存储数据传输、 Vplex 集群间通信网络全部隔离,为保证最高级别的高可用性,每个 Vplex Director 前端 I/O 模块和一对 SAN 光纤交换机之间必须保证 2 个以上的物理连接,每个主机和每个 Vplex 引擎的 A Director 和 B Director 都需要保持一个以上的路径连接,因此主机和一个 Vplex 引擎间具有 8 条逻辑路径。对于每个站点 2 个、 4 个引擎的 Vplex 集群来说,主机连接需要覆盖所有引擎;后端存储阵列通过 SAN 交换机或者直接连接 Vplex 引擎的后端 IO 模块,不需要配置到其他 Vplex 集群的跨站点连接路径;根据需要选用 Witness 作仲裁, Witness 需部署于两个 Vplex 集群不同的故障域中 ( 第三方站点 ) 。

分布式一致性缓存技术:EMC Vplex 是一个集群系统,提供分布式缓存一致性保证,能够将两个或多个 Vplex 的缓存进行统一管理,从而使主机访问到一个整体的缓存系统。当主机向 Vplex 的一个缓存区域写 I/O 时, Vplex 缓存将锁定这个缓存区域,同一时刻其他主机是无法向这个缓存区域写入 I/O 的。但是,当主机读取 I/O 时, Vplex 缓存允许多个主机访问一个缓存区域,尤其是主机访问其他 Vplex 集群中其他 Vplex 节点所管理的数据时,统一缓存管理会将这个 I/O 的具体缓存位置告知主机,主机直接跨 Vplex 集群访问。分布式一致性缓存技术在实现上面,并没有强求所有的 Cache 都保持统一,而是基于卷缓存目录的形式来跟踪细小的内存块,并通过锁的粒度来保证数据一致性。每个引擎的 cache 分为本地 Cache(Cache Local) 和全局 Cache(Cache Global) ,每引擎的本地 Cache 只有 26GB ,其余为全局 Cache

分布式缓存模式:Vplex Local 和 Vplex Metro 采用了写直通缓存模式,当 Vplex 集群的虚拟卷接收到了主机的写请求时,写 I/O 直接透写到该卷映射的后端存储 LUN ( Vplex Metro 包含两套后端存储 LUN )中,后端阵列确认写 I/O 完成后, Vplex 将返回确认信号至主机,完成本次写 I/O 周期。写直通缓存模式需要等待后端存储阵列落盘完成,对写 I/O 时延要求较高。这种写直通缓存模式并适合 Vplex Geo 方案,该方案最大支持 50ms 的跨站点往返延迟,采用该缓存模式将对主机产生非常大的性能影响,对于大多数应用而言显然是无法接受的。因此, Vplex Geo 采用了回写缓存模式,在该模式下, Vplex 收到了主机的写请求后,直接写入引擎控制器的缓存,并将写 I/O 镜像至引擎另一个控制器和另一套 Vplex 集群的引擎控制器的内存中,然后向主机确认本次写 I/O 周期。最后再将数据异步转储到引擎后端的存储阵列中。当出现电源故障时, Vplex 引擎自带的备用电源能够保证缓存中的所有未持久化的数据暂存到本地 SSD 存储上。回写缓存模式无需等待后端存储阵列落盘,即可回响应主机,大幅提升了 Vplex 双活方案的距离和时延要求。

读 I/O 加速能力:具有读 Cache ,写 I/O 的机制能对读 I/O 实现加速。为了提升读 I/O 性能,写 I/O 的时候先判断是否在 Local 、 Global Cache 中有对应的旧数据,如没有直接写入本地 Local Cache ;如有旧数据,先废除旧数据再写入 Local ;再通过写直通缓存模式将写 I/O 刷入两套后端存储阵列;最后反馈主机写 I/O 周期完成,同时 Global Cache 中的索引做相应修改,并在所有引擎上共享该信息,实现分布式缓存一致性。

@yfwang 戴尔科技集团   顾问工程师:

简单概括几点VPLEX方案的特点:

1、 存储复制网络支持 FC 和万兆以太网连接,只要延时小于 5ms 就可以,复制链路对距离没有特别限制

2、 分布式缓存一致性是 vplex 的核心技术,在 vplex 出来之前,其他的网关都不具有这个技术,缓存一致性的核心是将所有控制器的缓存全局化,任何一个控制器进来的 I/O 可以访问到任何一个控制器管理的后端存储上的数据,而且可以跨集群扩展,所以不论主机从哪个 vplex 集群接入,访问到的数据是一致的,关于缓存一致性的内容,楼上解释的很详细,赞。

3、 Vplex 的可用性标准和 VMAX 一样,以高端存储的性能和可靠性标准设计,可以胜任企业核心业务的要求。

4、 VPLEX 支持大容量的读缓存,读 I/O 如果在 vplex 缓存里命中,直接返回主机确认,如果 vplex 缓存没有命中,则去后端存储缓存去查找,如果命中返回,如果没命中才去后端磁盘读取数据,所以加了 vplex 相当于多了一级读缓存,读的性能一般会有所提升。

5、 Vplex 的写操作采用透写的模式,即写 I/O 直接穿过 vplex 写到后端存储才确认,这样做的好处是 vplex cache 里没有脏数据,可以时刻保证后端存储数据的一致性,从而不影响后端存储的所有数据服务功能。

6、 Vplex 的仲裁采用监控程序的方式,部署简单,成本低,可用性高。

9、VPLEX Metro同城存储双活方案下的异地扩展方案有哪些实现方式?

@邓毓 江西农信 系统工程师:

Vplex 的两地三中心扩展方案有两种实现方式,第一种是借助 EMC RecoverPoint 设备实现。在 Vplex Metro 双活 CDP 方案中, Vplex 接受到主机写 I/O 之后,同时写入两个数据中心的存储。此外 Vplex 内部集成 I/O 分流软件, Vplex 将每个主机写 I/O 同步复制到 RecoverPoint 。RecoverPoint 将每个 I/O 记录下来,采用 CDP 实现任意时间点恢复,如下图 1 所示。在该方案之上还可进阶实现 3DC 方案:站点 2 的 RecoverPoint 通过异步复制将 I/O 复制到站点 3 部署的 RecoverPoint 设备,站点 2 的 RecoverPoint 都将每个 IO 记录下来,实现任意时间点恢复,站点 3 的 RecoverPoint 设备异步记录从站点 2 RecoverPoint 设备传输过来得 I/O ,并落地至后端的存储阵列。站点 2/3 的 RecoverPoint 设备对接的存储需要能够支持 RecoverPoint ,可以是 Vplex Local 集群,也可以是存储阵列,如下图 2 和 3 所示。由 EMC RecoverPoint 、 VPLEX Local (或存储阵列)和 Metro 组成的三个站点拓扑将减少主站点或存储阵列故障相关的停机时间,同时能够快速从应用程序数据损坏、病毒或人为错误中恢复,即具备物理和逻辑性错误的双重防范能力。如果丢失多个 VPLEX 站点或虚拟卷的逻辑损坏,可以通过第三方软件集成 , 自动恢复远程站点(第三站点)到虚拟卷的一致时间点。


图 1 Vplex Metro RecoverPoint CDP 


图 2 Vplex Metro to Vplex Local 


图 3 Vplex Metro to Array-based Splitter 

第二种是在 Vplex Metro 的基础上,借助 EMC 存储自身的复制技术实现 3DC 方案,即 Vplex Metro EMC SRDF/A 方案,如下图所示,主站点和同城灾备站点为双活,主站点 Vplex 集群的底层存储为 EMC 存储(需具备 SRDF 复制许可),通过 SRDF 异步将数据传输至异地灾备站点后端的 EMC 存储(也需具备 SRDF 复制许可),实现数据级异地灾备。 

@yfwang 戴尔科技集团   顾问工程师:

在存储层面主要有两种方式:

1、 基于底层存储实现异地异步复制,比如 SRDF ,或者 HUR 之类的,优点是简单,缺点是要求同存储平台,不能跨异构,且复制链路要求较高。

2、 基于 Recoverpoint 实现异步复制,两个 site 都部署 Recoverpoint ,通过 RP 来实现数据复制,优势包括:可实现三点环形复制方案;异地端存储可以异构;复制链路要求低,劣势是需要部署 Recoverpoint 硬件。

当然也可以考虑应用层面的方案,比如 Oracle 的 DG 或者 GG , vplex 不影响这些方案实施。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
四种存储双活方案对性能影响的比较分析
Oracle 远程 RAC 打造双活数据中心| 从容灾迈向双活案例分享
EMC VMAX3 SRDF/METRO双活特性原理及仲裁机制介绍
11.2集群数据库存储断电恢复
外部高速缓存SDRAM的基本读写流程
图解一致性哈希算法,看这文就够了!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服