雷竞技下载官网基于Percona Percona运营商MySQL XtraDB集群有两个不同的代理,HAProxy ProxySQL。虽然最初的版本是基于ProxySQL,随着时间的推移,Percona HAProxy选择设置为默认的代理运营商,不删雷竞技下载官网除ProxySQL。
时的一个要点是保证用户拥有一个1:1兼容香草MySQL运营商允许连接的方式,还有其他因素参与的决定有两个代理。在这篇文章中,我将不周详为什么。
运营商的假设
在处理Percona操作符时,有一些事情要记雷竞技下载官网住:
- 每个部署必须被视为一个MySQL服务好像一个MySQL实例
- 用于提供服务的技术可能会改变
- 圆荚体弹性不是保证,服务弹性
- 不会自动计算和资源分配必须确定目前的部署
- 在生产中,您不能设置超过5或少于3节点使用PXC时
有两个非常重要的点在上面的列表中。
第一个是,你得到的不是一个Percona XtraDB集群(PXC),但一个MySQL服雷竞技下载官网务。这一事实Percona目前使雷竞技下载官网用PXC覆盖服务纯粹是偶然的,我们随时可以决定改变它。
另一个观点是,服务是有弹性的,而不是仓。简而言之,你应该期待看到豆荚停止工作和被重新创建。不应该发生什么是服务下降。试图调试每个小问题每个节点/ pod不是预计使用Kubernetes时。
鉴于上述,回顾你的期望…,让我们继续。
游戏中的+(扩展)
说,Percona运营商所提供的是一个MySQL服务。雷竞技下载官网雷竞技下载官网Percona上增加了一个代理节点/豆荚,帮助服务尊重弹性服务的期望。有两种可能的部署:
- HAProxy
- ProxySQL
都允许优化算子的一个方面,这是扩展阅读的。事实上我们在想的是,因为我们必须使用一个集群(几乎同步),为什么不利用其他节点,并允许读取规模时可用?
这种方法将帮助所有那些使用POM有标准但+ MySQL服务。
但是,它还附带了一些可能的问题读/写分裂和陈旧的读取。看到这篇文章陈旧的读取如何处理它。
为了实现读写分离我们不是有一个完全不同的方法对什么样的代理我们实现。
HAProxy如果使用,我们提供一个入口点,可用于读操作。入口点将所有可用的节点上的负载平衡。
请注意,目前没有什么防止一个应用程序使用cluster1-haproxy-replicas也写,但这是危险的,错误的,因为会产生很多冲突和男朋友中止认证,由于它将分发写在集群影响的性能(而不是给你写缩放)。是你的责任保证只有读取会通过入口点。
如果ProxySQL使用,可以实现自动读写分离。
全球的区别和比较
在这一点上,有一个更好的理解是很有用的功能区别这两个代理是什么性能差异。
我们知道HAProxy充当一个四级代理在TCP模式操作时,它也是一个转交代理,这意味着每个TCP连接建立与客户的最终目标和没有解释数据流。
ProxySQL另一方面是7级代理和一个反向代理,这意味着客户端建立一个连接到代理谁提出了自己最后的后端。数据在传输过程中动态改变的时候。
说实话,要复杂得多,但允许我简化。
除此之外,还有其他功能,存在于一个(ProxySQL),而不是其他。关键是如果他们相关的使用在这种情况下。名单见下图(源来自ProxySQL博客但数据删除):
正如你可能已经注意到的HAProxy缺乏一些功能,如R / W分裂,防火墙,和缓存,适当的在ProxySQL 7级实现。
测试环境
测试性能影响我使用了一个集群部署在GKE,与这些特征:
- 三个主要节点n2-standard-8(8个vcpu, 32 GB内存)
- 1应用程序节点n2-standard-8(8个vcpu, 32 GB内存)
- PXC豆荚使用:
- 25 gb的可用的32
- 6可用的CPU 8
- HAProxy:
- 600 CPU
- 1 gb RAM
- PMM代理
- 500 CPU
- 500 MB Ram
- 测试使用sysbench至于(https://github.com/Tusamarco/sysbench),在GitHub命令的详细信息。
我所做的就是运行一些测试运行两个Sysbench实例。一只执行读取,而其他的读和写。
ProxySQL而言,我有R / W分裂由于查询规则,所以sysbench实例都指向相同的地址。在测试时HAProxy我用两个入口点:
- Cluster1-haproxy——读和写
- Cluster1-haproxy-replicas——仅供阅读
然后我也比较如果所有请求只打一个节点。为此,我执行一个Sysbench R / W模式对一个入口点,和R / W ProxySQL分裂。
最后,sysbench测试的执行重新连接选择力的测试建立新连接。
像往常一样,测试多次执行,本周在不同的日子和时刻。数据整合的报道,以及图片raybetapp官方下载 (PMM)样本来自最接近平均值的执行。
扩展阅读时比较性能
这些测试表明,一个节点主要是写在其他服务读取服务。为了不影响性能,鉴于我是维护完整的读一致性不感兴趣,参数wsrep_sync_wait保留默认值(0)。
第一次观察表明ProxySQL似乎保持更稳定的服务请求。增加负载惩罚HAProxy减少如果⅓运营1024个线程的数量。
挖掘更多的我们可以看到HAProxy表现比ProxySQL写操作。写的数量基本上稳定波动最小。ProxySQL另一方面表现大负载时写很低,那么性能下降50%。
读,我们正好相反。ProxySQL能够规模在一个非常有效的方式,将负载分布到各个节点和能够保持服务水平尽管负荷增加。
如果我们开始看看延迟分布统计信息(sysbench直方图信息),我们可以看到:
在低负荷和写的情况下,代理保持左侧图的低价值的HAProxy更加一致的女士和分组55毫秒左右值,而ProxySQL稍微稀疏和跨度之间190 - 293 ms。
读我们也有类似的行为,对于绝大多数之间28 - 70 ms。我们有一个不同的画面,当负载的增加:
ProxySQL有一些事件表现更好,但它在一个非常大的范围,跨越了从~ 2 k女士~ 29日k女士虽然HAProxy大体上是围绕10-11K女士。结果,在这种情况下,HAProxy能够更好地为负载较重的情况下,比ProxySQL写道。
再一次,一个不同的画面读取。
这里ProxySQL仍在跨越广泛~ 76 ms - 1500 ms,而HAProxy更加一致但效率较低,分组在1200 ms的大多数服务。这是符合性能损失我们已经看到在使用高负载和HAProxy时阅读。
比较使用时只有一个节点
但我们现在发现当使用只有一个节点。使用服务应该是,不可能的+的扩展阅读。
我想说的第一件事是奇怪的行为一直发生什么代理使用)在128个线程。我正在调查,但是我还没有一个好的答案为什么操作员在只有128个线程性能大幅下降。
除此之外,结果一致显示HAProxy执行更好的读/写服务。记住,HAProxy只是建立点对点的连接,不会做其他任何事情。虽然最终ProxySQL旨在处理传入的流数据。
这当审核延迟分布变得更加明显。在这种情况下,无论负载,HAProxy表现更好:
可以注意到,HAProxy分组不如当我们有两个入口点,但它仍然是比ProxySQL能够更有效的服务。
结论
像往常一样,我的建议是,使用正确的工具来完成工作,而不强迫自己变成愚蠢。
开始时明确表示,Percona运营商基于Percona的MySQL XtraDB雷竞技下载官网 MySQL集群的目的是提供一种服务,不是PXC集群,所有配置和利用应该收敛。
ProxySQL规模可以帮助你如果你想多一点在读取使用可能优先。但这并不保证使用标准PXC时工作,它的工作原理。你不仅需要有一个很好的理解Kubernetes和ProxySQL如果你想避免问题,但是HAProxy规模可以读取,但你需要确保你有R / W分离在应用程序级别。
在任何情况下,利用HAProxy服务是更简单的方法。这是其中一个原因Percona决定转向HAProxy。雷竞技下载官网它提供代理服务的解决方案更符合Kubernetes服务理念的目的。也是解决方案仍然接近一个简单的MySQL服务应该如何表现。
你需要设置你的期望以后正确,以避免麻烦。
引用
雷竞技下载官网基于Percona Percona运营商MySQL XtraDB集群
https://www.雷竞技下载官网percona.com/blog/2020/11/17/wondering-how-to-run-percona-xtradb-cluster-on-kubernetes-try-our-operator/
https://www.雷竞技下载官网percona.com/blog/2020/10/08/the-criticality-of-a-kubernetes-operator-for-databases/

























为什么不直接使用k8服务?haproxy通常可以帮助南北交通,但对于东西方应该有任何理由而不是负载平衡,我猜。