我有一个网络应用程序,有 2 层:wordpress 作为前端,MySQL 作为后端。
前端使用 Helm Chart 部署,后端使用 Operator 部署。
由于我的 web 应用程序收到大量流量,我想实现水平 pod 自动加载 (HPA)。
我的问题: 我可以在哪里定义 HPA:在前端部分(即:wordpress 级别)?在后端部分(即:MySQL 级别)?或两者兼而有之?
谢谢您的帮助!
您可能无法在数据库上有效地设置 HPA。 MySQL和PostgreSQL通常是单节点,或者如果它们有多个节点,则它们以主备模式运行,因此添加节点并不一定会增加容量。 (即使使用集群数据库,围绕缩减设置 HPA 也可能存在 实际问题。)
您可以在应用程序上设置 HPA。了解应用程序的实际限制因素是什么会很有帮助:如果您发送了足够的负载,导致请求开始变慢或失败,那么它是否缺乏 CPU 时间、内存不足或正在等待数据库?这会影响您想要在 HPA 上设置的参数。一种现实情况是,您的应用程序会执行一些数据库查询,这会花费大量时间,然后很快将数据呈现为 HTML 或 JSON。在这种情况下,HPA 就很难发挥作用了:单节点数据库很难扩展,即使扩展应用程序 Pod,数据库查询仍然会被阻塞。