Проблема с созданием регионального балансировщика нагрузки TCP
Я пытаюсь создать балансировщик нагрузки, который балансирует трафик между 3 разными зонами доступности в заданном регионе. Если я создаю "глобальный" балансировщик нагрузки с внешним IP-адресом, все работает нормально, но если я пытаюсь создать только балансировщик нагрузки, который работает с определенной подсетью, проверки работоспособности постоянно терпят неудачу, потому что они пытаются перейти на порт 80 вместо указанного мной порта.
Обратите внимание на следующий вывод gcloud compute backend-services get-health xx-redacted-central-lb --region=us-central1
:
---
backend: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-a/instanceGroups/xx-redacted-central-a
status:
healthStatus:
- healthState: UNHEALTHY
instance: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-a/instances/yb-1-xx-redacted-lb-test-n2
ipAddress: 10.152.0.90
port: 80
kind: compute#backendServiceGroupHealth
---
backend: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-b/instanceGroups/ac-kroger-central-b
status:
healthStatus:
- healthState: UNHEALTHY
instance: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-b/instances/yb-1-xx-redacted-lb-test-n1
ipAddress: 10.152.0.92
port: 80
kind: compute#backendServiceGroupHealth
---
backend: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-c/instanceGroups/xx-redacted-central-c
status:
healthStatus:
- healthState: UNHEALTHY
instance: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-c/instances/yb-1-xx-redacted-lb-test-n3
ipAddress: 10.152.0.4
port: 80
kind: compute#backendServiceGroupHealth
Проверка работоспособности этого балансировщика нагрузки была создана с помощью следующей команды:gcloud compute health-checks create tcp xx-redacted-central-hc4 --port=5433
Бэкэнд был создан так:gcloud compute backend-services create xx-redacted-central-lb --protocol=TCP --health-checks=xx-redacted-central-hc4 --region=us-central1 --load-balancing-scheme=INTERNAL
Полное описание бэкенда:gcloud compute backend-services describe xx-redacted-central-lb --region=us-central1
backends:
- balancingMode: CONNECTION
group: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-a/instanceGroups/xx-redacted-central-a
- balancingMode: CONNECTION
group: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-b/instanceGroups/xx-redacted-central-b
- balancingMode: CONNECTION
group: https://www.googleapis.com/compute/v1/projects/yugabyte/zones/us-central1-c/instanceGroups/xx-redacted-central-c
connectionDraining:
drainingTimeoutSec: 0
creationTimestamp: '2020-04-01T19:16:44.405-07:00'
description: ''
fingerprint: aOB7iT47XCk=
healthChecks:
- https://www.googleapis.com/compute/v1/projects/yugabyte/global/healthChecks/xx-redacted-central-hc4
id: '1151478560954316259'
kind: compute#backendService
loadBalancingScheme: INTERNAL
name: xx-redacted-central-lb
protocol: TCP
region: https://www.googleapis.com/compute/v1/projects/yugabyte/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/yugabyte/regions/us-central1/backendServices/xx-redacted-central-lb
sessionAffinity: NONE
timeoutSec: 30
Если я попытаюсь edit
серверной части и добавить аннотацию порта или имени порта, он не может сохранить, потому что считает, что это недопустимая операция с ВНУТРЕННИМИ балансировщиками нагрузки.
Есть идеи? --Алан
3 ответа
Согласно документации GCP [1], чтобы проверки работоспособности работали, вы должны создать вход, чтобы разрешить правила брандмауэра для трафика IP-адресов от зондов Google Cloud, которые могут подключаться к вашим бэкэндам.
Вы можете просмотреть эту документацию [2], чтобы понять критерии успеха для проверки работоспособности SSL и TCP.
[1] Проверить диапазоны IP-адресов и правила брандмауэра https://cloud.google.com/load-balancing/docs/health-check-concepts
[2] Критерии успеха https://cloud.google.com/load-balancing/docs/health-check-concepts
Серверные службы должны иметь связанный именованный порт, если их серверные ВМ являются группами экземпляров. Именованные порты используются службами балансировки нагрузки для направления трафика на определенные порты в отдельных экземплярах. Вы можете назначить сопоставление имени порта группе экземпляров, чтобы сообщить подсистеме балансировки нагрузки использовать этот порт для доступа к серверной части, на которой запущена служба.
Спасибо за информацию. Я могу успешно воспроизвести эту проблему со своей стороны и нахожу странным, что проверки работоспособности серверной части по-прежнему указывают на порт 80, тогда как LB HC настроен для порта, отличного от 80. Команда разработчиков продукта была проинформирована об этой проблеме, однако я не У меня нет ETA на исправление и внедрение. Вы можете следить за веткой [1] за дальнейшими обновлениями.