Вот отличная запись о масштабировании с помощью heroku (и это относится к традиционным развертываниям).
Учитывая, что мы хотеть чтобы контейнерные приложения были единым процессом, как мы получаем:
в среде Kubernetes / GKE, которая в полной мере использует горизонтальное автоматическое масштабирование контейнера?
Предположим, что мое развертывание выглядит примерно так (кредит @ nithinmallya4):
Я еще не выбрал веб-сервер, и по умолчанию rackup
служит WEBrick
. Я думал просто изменить это на многопоточную Puma.
Меня беспокоит то, что autoscaler
работает на базе процессора, а не на основании идеи, что это consumed by a current http/s request
, поэтому это может не пригодиться.
nginx в шаблоне sidecar пода (с gzip deflater
) за Ingress
.
puma
перед рельсами (там же image
как rails-api), предполагая, что лучше будет использовать cpu и запускать автомасштабирование
пользовательские метрики для HPA (все еще нужно исследовать это с 1.8)
В GKE мы поддерживаем HPA с настраиваемыми метриками с версии 1.9. Если у вас есть группа модулей с горизонтальным автомасштабированием внутри кластера, каждая из которых экспортирует настраиваемую метрику, вы можете установить среднее значение для каждого модуля для этой метрики.
Примером этого может быть автоматическое масштабирование развертывания внешнего интерфейса, при котором каждая реплика экспортирует свой текущий QPS. Можно установить среднее целевое количество QPS на интерфейсный модуль и использовать HPA для масштабирования развертывания соответственно вверх и вниз. Вы можете найти документацию и руководство, объясняющее, как это настроить, здесь: https://cloud.google.com/kubernetes-engine/docs/tutorials/custom-metrics-autoscaling
Kubernetes 1.10, доступный на GKE, расширит поддержку пользовательских метрик, включив метрики, не привязанные ни к одному объекту Kubernetes. Это даст вам возможность масштабировать развертывание на основе любых перечисленных здесь показателей, например количества сообщений в очереди Google Pub / Sub.
HPA зависит от загрузки ЦП. Вы можете включить Автоматическое масштабирование кластера в GKE (сейчас в бета-версии), чтобы настроить размер кластера Kubernetes в зависимости от рабочей нагрузки. Для получения более подробной информации проверьте автоматическое масштабирование кластера. FAQ на github.