我对 Drbd Primary/Primary 配置上的裂脑问题有疑问/好奇。假设两个节点(主机),host1
并host2
配置了 Drbd Primary/Primary 和两个不同的复制区域共享(NFS、CIFS 或 iSCSI)(例如/drbd
)
/drbd/file1.data
/drbd/file2.data
如果一个客户端池仅通过host1
共享读写进行访问,file1.data
而另一个客户端池仅通过host2
共享进行访问file2.data
,那么这种场景应该可以避免在一个节点发生故障时出现脑裂情况,还是这只是一个猜测?
最终目的是在正常情况下在两个节点之间实现负载平衡,并在出现故障时仅崩溃到一个节点。
谢谢!
Eddie
答案1
只要你有一DRBD 资源处于 prim/prim 模式,并从不同的节点写入它,你将要一旦发生网络故障,就会出现裂脑。
另外,如果/drbd
是一个普通的(非集群)文件系统,只有两个子目录,然后在两个主机上共享,则数据损坏保证即使在正常运行中,本地文件系统也不知道其他机器正在其块设备上写入数据。
创建可靠的 HA/负载平衡安装是一个高级主题,并且高度依赖于您想要实现的目标,但它将包括某种形式的集群管理软件、可能是集群文件系统和许多其他组件。
答案2
我想说 - 这取决于所使用的文件系统。
使用 NFS,您无法保证写入到不同的 drbd 块(因此“discard-zero-changes”将无助于从裂脑中恢复)。
但是如果您在上面使用集群感知文件系统(例如 ocfs),那么您的数据随后不会被损坏的可能性就会更高 - 特别是如果您使用不同的目录分支。
但在您的场景中 - 我将使用主/辅助模式下的两个独立设备,并使用普通的 ext3 文件系统。