Балансировщик нагрузки http (s) Google Cloud возвращается 502, несмотря на работоспособный бэкэнд-сервис

11

У меня есть балансировщик нагрузки http (s) GCE, настроенный для направления трафика на 2 бэкэнда: - бэкэнд по умолчанию - второй бэкэнд с отдельным правилом host / path ( <host>:/*)

Оба бэкэнда существуют в одной и той же группе экземпляров - кластере контейнеров, в котором работают две службы kubernetes, которые предоставляют разные NodePort.

Группа экземпляров имеет два именованных порта, по одному для каждого из представленных портов NodePorts.

Несмотря на то, что оба бэкэнда сообщают о исправности, все запросы ко второму бэкенду возвращают 502.

Сами сервисы не являются проблемой - если я переключу сервис за 2-й бэкэнд по умолчанию, он будет работать нормально.

ПРИМЕЧАНИЕ . Я значительно обновил / упростил это описание с тех пор, как оно было впервые опубликовано, поскольку могу воспроизвести проблему с гораздо более простой конфигурацией.

hawkett
источник
1
Я поднял вопрос здесь: code.google.com/p/google-compute-engine/issues/detail?id=254
hawkett
Ответы в этой проблеме Google указывают на то, что это конфиг. проблема с правилом хоста / пути.
Хоукетт

Ответы:

4

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

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

130.211.0.0/22   tcp:1-5000   Apply to all targets
Tyguy7
источник
1
Проблема не в правиле брандмауэра - сервисы работают индивидуально. Из ответов на проблему Google, отмеченную в комментарии OP, это похоже на проблему конфигурации в правиле host / path.
Хоукетт