Kubernetes:我如何在我的2层Web应用程序上进行水平Pod Autosacling(hpa)?

ev7lccsx  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(100)

我有一个Web应用程序,有2层:WordPress作为前端,MySQL作为后端。
前端使用Helm chart部署,但后端使用Operator部署。
由于我的网络应用程序收到了大量的流量,我想实现远程Pod自动化(HPA)。
我的问题:我在哪里可以定义HPA:在前端部分(即:wordpress level)?在后端部分(即:MySQL级别)?还是两个都有
谢谢您的帮助!

nx7onnlm

nx7onnlm1#

您可能无法在数据库上有效地设置HPA。MySQL和PostgreSQL通常是单个节点,或者如果它们有多个节点,它们以主动/备用模式运行,因此添加节点不一定会增加容量。(即使是集群数据库,也可以有practical problems with setting up HPA around scale-in
您可以在应用程序中设置HPA。了解应用程序的限制因素实际上是什么是很有帮助的:如果你发送了足够多的负载,它开始变慢或失败的请求,它是缺乏CPU时间,内存不足,还是在等待数据库?这将影响你想在HPA上设置什么参数。
一种现实的情况是,您的应用程序执行一些数据库查询,这需要花费大量时间,然后非常快地将数据呈现为HTML或JSON。在这种情况下,很难利用HPA:单节点数据库很难扩展,即使你扩展了应用程序pod,你仍然会被数据库查询阻塞。

v6ylcynt

v6ylcynt2#

尽管大多数人不建议在MySQL或Postgres上进行扩展,但在阅读数据方面,仍然可以在这些数据上进行扩展:你看,如果你从数据库中选择,你可以在一个数据源上执行多个操作(即,几个程序可以同时读取.txt文件,但当它们决定同时写入时,事情就变得复杂了)。

  • 一旦你启动了两个MySQL pod,数据应该通过PV/PVC共享提供给两者,虽然这有点复杂,因为mysql服务器将尝试确定数据是否已经被接管,你将不得不以某种方式愚弄他,这可能看起来很棘手(我没有做到这一点)。
  • 或者,您可以在每个pod中使用数据库数据的副本(因此,对源数据库所做的更改需要通过重新复制源数据库来处理)。这也是一个相当棘手的任务,但肯定是可行的,如果你是一个专业人士。- pod在一定时间后死亡很容易复制,每个pod通过导入或低级复制来复制db。

相关问题