Как загрузить баланс трафика на доступные модули вместо циклического перебора при использовании сервиса ClusterIP? - PullRequest
1 голос
/ 29 сентября 2019

У меня есть один главный сервис и несколько подчиненных сервисов.Главный сервис постоянно опрашивает тему, используя подписчика из Google PubSub.Ведомые сервисы - это REST API.Как только главная служба получает сообщение, она делегирует сообщение подчиненной службе.В настоящее время я пользуюсь сервисом ClusterIP в Кубернетесе.Некоторые из моих запросов долго выполняются, а некоторые довольно коротки.

Я иногда замечаю, что, если во время обработки длинного запроса возникает короткий запрос, он должен ждать, пока долго выполняющийся запросфинишируйте, хотя доступно много контейнеров, не обслуживающих трафик.Я думаю, что это из-за круговой балансировки нагрузки.Я пытался найти решение и искал подходы, такие как настройка внешнего HTTP-балансировщика нагрузки с входным и внутренним HTTP-балансировщиком нагрузки.Но я действительно смущен разницей между этими двумя и тем, что применимо для моего варианта использованияМожете ли вы предложить, какой из подходов решил бы мой вариант использования?

1 Ответ

1 голос
/ 29 сентября 2019

взвешенная маршрутизация немного превышает ClusterIP.как вы сами сказали, пришло время новому игроку войти в игру - входной контроллер .

- это абстракция k8s для load balancer - aмощный сервер, расположенный перед вашим приложением и направляющий трафик между ClusterIP s.

установкой входного контроллера в кластере gcp

после его установки и запуска, используйте его канарейку, чтобы выполнить взвешенную маршрутизацию.это делается с использованием следующих аннотаций:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: http-svc
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-weight: "10"
spec:
  rules:
  - host: echo.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80

здесь - это полное руководство.

Внешняя и внутренняя балансировка нагрузки

(этосоответствующее определение из облачных документов Google, но концепция аналогична среди других облачных провайдеров)

Балансировщики нагрузки GCP можно разделить на внешние и внутренние балансировщики нагрузки.Внешние балансировщики нагрузки распределяют трафик, поступающий из Интернета в вашу сеть GCP.Внутренние балансировщики нагрузки распределяют трафик в вашей сети GCP.

https://cloud.google.com/load-balancing/docs/load-balancing-overview

...