我现在有一个Web应用程序在单个VPS上运行,我想调整它,并使用两个VPS(来自不同的提供程序)使用负载平衡器一起工作。
我已经成功地把MySQL Master-Master复制,我能够设置HaProxy作为负载平衡器,但现在我需要设置文件/文件夹同步机制,以保持两者,所以当一个文件被更改或添加到一个服务器第二个添加或更新。
我search软件来做到这一点,似乎最着名的是GlusterFS和DRBD。 (Ceph看起来很复杂)
我试图设置这两个和他们玩,但我没有设法让他们工作。
有没有人知道如何在其中之一上设置双主复制的好指南?
PS:我在我的VPS上使用Ubuntu
GlusterFS是走出这两者的方式。 DRDB更经常用于主动/被动故障转移。
Gluster要考虑的重要一点是,所有客户端节点必须直接连接到所有服务器节点,并且所有服务器节点都要直接连接到所有服务器节点。 虽然Gluster可以在服务器节点之间进行复制,但其数据传播主要是在客户端进行控制和pipe理的。 客户负责将数据扇出到服务器节点,因为它们同时连接到所有相关的节点。 客户端>服务器networking是在这种情况下最重要的考虑。
由于在这种情况下您将使用服务器作为客户端(小群集中可接受的做法),因此只需确保这些节点之间具有良好的存储networking。
我强烈推荐三个Gluster节点的原因有几个。 首先,只有两个节点才能自动解决裂脑情况。 当一个存储节点具有无效数据或处于脱机状态时,您需要三分之一以提供多数规则。 其次,您的数据完整性本身会更好,因为您可以使用3n复制或2n-a(双节点仲裁)复制。
为了您的目的,2n – 复制将是一个可能的目标。 这就像三节点复制一样,但是执行和两节点复制(也就是说,在大多数情况下更好)。 这最简单的forms包括两个正常的数据节点和一个仲裁器节点,其中只包含用于测量其他两个节点完整性的元数据。 结果,仲裁器节点对于它所跟踪的每个文件只需要4k的空间,并且比两个完整的存储节点需要更less的带宽。 有些事情要考虑。
最后,GlusterFS是用于数据的文件系统之上的一个层,因此在安装GlusterFS之后不要直接与这些文件系统交互。 它将这些文件系统称为砖块,但是它们不需要是独立的文件系统。 它们可以是单个文件系统中的目录(不是完全推荐的),也可以是BTRFS子卷(更多推荐)。 一般来说,任何符合POSIX标准的文件系统都将作为支撑砖。
相同的砖块可以在节点上创build,然后凝结成一个卷。 卷是一个多服务器导出,其行为非常像NFS。 在这一点上,你所需要做的就是挂载那个导出。
仲裁员卷上的简短文件: https : //gluster.readthedocs.io/en/latest/Administrator%20Guide/arbiter-volumes-and-quorum/
有关如何在简单2n群集中设置GlusterFS的重要指南,请访问: https : //www.digitalocean.com/community/tutorials/how-to-create-a-redundant-storage-pool-using-glusterfs-on -ubuntu的服务器