Балансировка нагрузки GCP («внутренний» трафик c через HTTPS) - PullRequest
0 голосов
/ 21 января 2020

У меня есть группа экземпляров GCP с 2 экземплярами. Оба работают. Я хочу настроить балансировщик нагрузки (HTTPS) для управления трафиком c.

. Я установил правило пересылки с HTTP-протоколом и сертификатом, управляемым Google. Это все работает, но только когда трафик c между балансировщиком нагрузки и серверной частью (экземпляры) является простым HTTP.

Шаги, которые я сделал до сих пор

  • Я создаю шаблон, и этот шаблон - обычный компьютер серии N1. Я установил флажки для создания правил брандмауэра для разрешения http и https traffi c.
  • Я создаю правило брандмауэра с именем «allow-ports». Это правило брандмауэра предназначено для всех экземпляров в сети, имеет диапазон IP-адресов 0.0.0.0/0 и разрешает порт tcp = 80, 443. Как я вижу, это правило брандмауэра должно открывать как http (80), так и https (443). порт.
  • Я создаю группу экземпляров с сопоставлением портов. "http-port" = 80, "https-port" = 443. Я использую только что созданный шаблон.
  • Когда создается группа экземпляров, я проверяю, работает ли она. С S SH я получаю доступ к экземплярам и устанавливаю apache (sudo apt-get install -y apache2) на обоих. При переходе к их внешним IP-адресам в браузере я вижу их обоих.
  • Я создаю балансировщик нагрузки HTTP (S) с параметром «От inte rnet до моих виртуальных машин». Для конфигурации бэкэнда я добавляю бэкэнд-сервис с моей группой экземпляров, протоколом HTTP, с именем port "http-port". Для настройки внешнего интерфейса я настроил протокол HTTPS, создал IP-адрес IPv4, создал ssl-сертификат, управляемый Google, и все готово. Я также добавил проверки здоровья между прочим.

Теперь ... эти шаги работают (через несколько минут). С облачным DNS я настроил доменное имя, которое указывает на IP-адрес балансировщика нагрузки. При переходе я вижу страницу apache.

Что не работает?

Когда я изменяю внутреннюю конфигурацию на HTTPS (и с именем порта "https" -port "), я получаю 502 ошибку сервера. Так что мне кажется, что есть какая-то связь, но есть ошибка. Может ли это быть apache ошибкой?

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

Чего я хочу достичь?

Я не только Мне нужно безопасное (HTTPS) соединение между клиентом и моим балансировщиком нагрузки, я также хочу безопасное соединение между балансировщиком нагрузки и бэкэнд-сервисом (группа экземпляров). Поскольку GCP предлагает возможность использовать протокол HTTPS при создании внутреннего сервиса, я чувствую, что это можно сделать.

Если честно: я читаю несколько статей о том, что внутренний трафик c защищен, поэтому HTTPS-соединение не требуется. Но это не имеет значения для меня, я действительно хочу знать, как это работает!

РЕДАКТИРОВАТЬ

Я использую правильный VP C (по умолчанию) , Я также изменил правило брандмауэра с 0.0.0.0/0 до 130.211.0.0/22 ​​и 35.191.0.0/16 (см .: https://cloud.google.com/compute/docs/tutorials/globally-autoscaling-a-web-service-on-compute-engine?hl=nl#configure_the_load_balancer).

1 Ответ

1 голос
/ 23 января 2020

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

Итак, я решил каким-то образом получить ошибку 502 в своей тестовой конфигурации. Я переключил проверку состояния на балансировщике нагрузки на HTTP. Через несколько минут я снова попытался связаться с тестовой службой и получил ошибку 502. Когда я снова переключил проверку здоровья на ошибку HTTPS 502.

Во время этого теста я не изменил правила брандмауэра, но разрешил трафик HTTP и HTTPS c в шаблоне своего экземпляра и использовал сеть по умолчанию ,

...