MySQL HA + LB:Keepalived + HAProxy vs Keepalived独自一人

脚本

对于我的应用程序,我想有高度可用的MySQL / MariaDB设置。 由于自动数据冗余和即时可用性,我发现Galera Cluster在这种情况下很有趣。 我的目标是这样的:

  1. 隐藏应用程序的集群复杂性(集群可以变得更大,并且改变拓扑添加一些asynchronous节点)

  2. 透明地处理应用程序之外的故障转移

  3. 为某些常见的情况写入和读取同步实例提供负载均衡,

  4. 仍然允许应用程序访问特定的节点,例如针对分析的顺序读取进行优化的例如asynchronous节点。 如果这个节点失败,我希望应用程序故障转移到标准的Galera实例,透明地保持一切正常运行。

做到目前为止

我已经阅读了许多关于如何设置高可用性负载平衡MySQL集群的HAProxyKeepalived串联的文章,但没有一篇解释了为什么要使用这个二重奏的MySQL / MariaDB / Galerascheme。 一些例子:

  • HAProxy + Keeplived,任何MySQL CE集群+ Galera: https ://severalnines.com/resources/tutorials/mysql-load-balancing-haproxy-tutorial

  • HAProxy + Keepalived,Galera集群: http : //www.fromdual.com/making-haproxy-high-available-for-mysql-galera-cluster

  • HAProxy + Keepalived,asynchronous集群: https : //www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing–3

  • 仅限HAProxy: https : //www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing–3

当涉及到虚拟IP分配时,它由Keepalived根据自己的可脚本化健康检查器和VRRP

Keepalived也支持负载均衡,实现了多种algorithm,通过这些algorithmLB到目的地: https ://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Load_Balancer_Administration/ch- 初始设置-VSA.html

HAProxy为HTTP提供了一些高级function,但这不是我的情况。

问题

Keepalived for Keepalived for MySQL中使用HAProxy的好处是什么?