У меня есть группа экземпляров GCP с 2 экземплярами. Оба работают. Я хочу настроить балансировщик нагрузки (HTTPS) для управления трафиком.
Я установил правило пересылки с HTTP-протоколом и сертификатом, управляемым Google. Все это работает, но только тогда, когда трафик между балансировщиком нагрузки и серверной частью (экземплярами) является обычным HTTP.
Шаги, которые я сделал на данный момент
- Я создаю шаблон, и этот шаблон представляет собой обычную машину серии N1. Я установил флажки, чтобы создать правила брандмауэра, разрешающие трафик http и https.
- Я создаю правило брандмауэра с именем «allow-ports». Это правило брандмауэра нацелено на все экземпляры в сети, имеет диапазон IP-адресов 0.0.0.0/0 и разрешает порт tcp = 80, 443. Как я вижу, это правило брандмауэра должно открывать как http (80), так и https (443). порт.
- Создаю группу экземпляров с сопоставлением портов. "http-port" = 80, "https-port" = 443. Я использую только что созданный шаблон.
- Когда группа экземпляров создана, я проверяю, работает ли она. С помощью SSH я получаю доступ к экземплярам и устанавливаю apache (sudo apt-get install -y apache2) на обоих. При переходе к их внешним IP-адресам в браузере я вижу их обоих.
- Я создаю балансировщик нагрузки HTTP (S) с опцией «Из Интернета на мои виртуальные машины». Для конфигурации серверной части я добавляю серверную службу с моей группой экземпляров, протоколом HTTP, с именем порта "http-port". Для настройки внешнего интерфейса я настроил протокол HTTPS, создал IP-адрес IPv4, создал ssl-сертификат, управляемый Google, и все готово. Я также добавил проверки здоровья, кстати.
Теперь ... эти шаги работают (через несколько минут). В облачном DNS я установил доменное имя, которое указывает на IP-адрес балансировщика нагрузки. Когда захожу, я вижу страницу apache.
Что не работает?
Когда я меняю конфигурацию бэкэнда на HTTPS (и называю порт «https-port»), я получаю ошибку сервера 502. Так мне кажется, что какая-то связь есть, но есть ошибка. Может быть, это ошибка apache?
Я потратил целый день на создание и воссоздание групп экземпляров, правил брандмауэра, балансировщиков нагрузки ... но, похоже, ничего не работает. Я наверняка что-то упустил, возможно, что-то тупое, но я понятия не имею, что это могло быть.
Чего я хочу достичь?
Мне нужно не только безопасное (HTTPS) соединение между клиентом и балансировщиком нагрузки, но и безопасное соединение между балансировщиком нагрузки и серверной службой (группой экземпляров). Поскольку GCP предлагает возможность использовать протокол HTTPS при создании серверной службы, я считаю, что это можно сделать.
Честно говоря: я читаю статьи о том, что внутренний трафик защищен, поэтому HTTPS-соединение не требуется. Но для меня это не имеет значения, я действительно хочу знать, как это работает!
ИЗМЕНИТЬ
Я использую правильный VPC (по умолчанию). Я также отредактировал правило брандмауэра с 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).