如果存储发生脑裂,仲裁结果是以A机房存储为活着的节点,在这种存储脑裂情况下,应用系统如何随着判定结果,访问到A机房的存储,确保存储、应用系统都在同一个机房正常运行?
如果是存储和服务器同时脑裂的情况下,就需要存储和服务器(操作系统、数据库)的仲裁可以达成一致才可以满足应用系统和存储切换到同一个机房。
有一些存储设备的仲裁是和服务器有联动的,比如IBM DS8000存储,它的Hyperswap技术是结合ZoS或者PowerHA的,可以保障脑裂的时候会切换到同一边。
其它的存储的仲裁和服务器的仲裁并没有直接的联动关系,因此在双活的仲裁设计中需要进行专门的设计和测试。
应用是访问数据库,只要数据库的选择是正确的,那么应用的流量导向就是正确的。
这就要看数据库是什么模式了。
假设是单中心的数据库集群。难么如果是ASM冗余镜像模式,那么数据库会自动选择存活的存储去访问。如果是存储网关实现的逻辑镜像,那么由存储网关选择正确的仲裁结果,对于数据库来讲不需要任何判断。
假设是双中心的数据库集群,那么数据库集群需要做仲裁,存储也需要做仲裁,数据库的仲裁需要根据存储仲裁之后的结果来做出正确的判断,如果这个时间顺序有问题,那么后果就会很严重。理论上我们可以控制数据库和存储的仲裁timeout时间来保障这个顺序没有问题。但是实际过程中遇到复杂情况就不好说了。
收起