MariaDB Galera 部署

MariaDB Galera 部署

我正在尝试使用 MariaDB 10 Galera Cluster。我正在寻找高可用性、可扩展性和可靠性的架构。基本上,我很好奇哪种架构更好,这是否可行,以及这是否是一种好的做法?

1) Galera Cluster + maxscale 用于拆分读写操作 - 在这里我将逻辑上分离读写操作。我希望写入应用于所有节点,但最终只为读取操作设置特定节点。类似于主从复制,其中写入到主服务器,从服务器到从服务器。这在这里可能吗?

2)具有主-主复制的 Galera Cluster,我可以将另一个 Galera Cluster 连接到该 Cluster 并仅进行读取操作吗?

我的主要目标是拥有几个写入节点和几个读取节点,这样我就可以拆分操作,如果出现问题,实际上每个节点都有备份?这里最好的方法是什么?

谢谢。

答案1

我会选择 galera + maxscale + haproxy。我们的设置是 3 个 galera 节点、2 个 maxscale + 2 个 haproxy 节点,为 maxscale 提供主动-被动故障转移 - 使用此设置(或任何 galera + maxscale)时需要注意几点。

  1. Galera 建议使用单个节点进行写入 - 尝试写入多个节点可能会导致写入冲突。这通常使用 maxscale 中的读写分离器来实现,提供单个写入节点和多个读取节点。
  2. 可以添加更多节点以提高弹性和性能 - 大多数典型的 Web 应用程序运行类似 80:20 的读写分割,所以这是一个很好的模型。
  3. 理论上,您可以在 haproxy 上为 maxscale 运行主动-主动设置,因为 maxscale 用于识别写入节点的算法应该保证每个 maxscale 节点都会选择相同的 galera 节点。当我们第一次测试时,这种情况并没有发生,但此后已经发布了几个版本,所以现在这可能有效。
  4. maxscale 的一大优势在于,它意味着 galera 设置对最终应用程序是透明的 - 就它们而言,它们只是与数据库服务器对话。这样就无需编写代码来处理单独的读/写节点。

相关内容