Ruby-on-Rails
GKE 上的水平自動縮放軌道 - 特別是 - Web 伺服器的選擇和與傳統部署的區別
這是一篇關於使用 heroku 進行擴展的精彩文章(它適用於傳統部署)。
鑑於我們希望容器化應用程序是單個程序,我們如何獲得:
- 緩慢的客戶保護
- 慢響應保護
在充分利用水平 pod 自動縮放的 Kubernetes/GKE 環境中?
假設我的部署看起來很像以下(信用@nithinmalya4):
我還沒有選擇 Web 伺服器,預設情況下
rackup
正在服務WEBrick
. 我正在考慮將其更改為多執行緒 Puma。我擔心的是
autoscaler
基於CPU的作品,而不是基於它的想法consumed by a current http/s request
,所以它可能不會發揮作用。
- 我是否正確理解自動縮放器?
- 什麼是理想的向上/向下擴展架構?
我們目前的想法:
- nginx
deflater
在Ingress
.puma
在rails前面(與image
rails-api相同),假設它會更好地利用cpu並觸發自動縮放- HPA 的自定義指標(仍然需要使用 1.8 進行研究)
在 GKE 上,我們從 1.9 版開始就一直支持使用自定義指標的 HPA。如果您的集群中有一組水平自動縮放的 pod,每個 pod 都導出一個自定義指標,那麼您可以為該指標設置每個 pod 目標的平均值。
一個例子是前端的自動縮放部署,其中每個副本都導出其目前 QPS。可以設置每個前端 pod 的平均 QPS 目標,並使用 HPA 相應地擴大和縮小部署。您可以在此處找到說明如何設置的文件和教程:https ://cloud.google.com/kubernetes-engine/docs/tutorials/custom-metrics-autoscaling
GKE 上可用的 Kubernetes 1.10 將擴展對自定義指標的支持,以包括未附加到任何 Kubernetes 對象的指標。這將使您能夠根據此處列出的任何指標來擴展部署,例如 Google Pub/Sub 隊列中的消息數量。