Ruby-on-Rails

GKE 上的水平自動縮放軌道 - 特別是 - Web 伺服器的選擇和與傳統部署的區別

  • March 17, 2018

這是一篇關於使用 heroku 進行擴展的精彩文章(它適用於傳統部署)。

鑑於我們希望容器化應用程序是單個程序,我們如何獲得:

  • 緩慢的客戶保護
  • 慢響應保護

在充分利用水平 pod 自動縮放的 Kubernetes/GKE 環境中?

假設我的部署看起來很像以下(信用@nithinmalya4):

概述

我還沒有選擇 Web 伺服器,預設情況下rackup正在服務WEBrick. 我正在考慮將其更改為多執行緒 Puma。

我擔心的是autoscaler基於CPU的作品,而不是基於它的想法consumed by a current http/s request,所以它可能不會發揮作用。

  1. 我是否正確理解自動縮放器?
  2. 什麼是理想的向上/向下擴展架構?

我們目前的想法:

  • nginxdeflaterIngress.
  • puma在rails前面(與imagerails-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 隊列中的消息數量。

引用自:https://serverfault.com/questions/874453