GCP: выбор региона серверной службы балансировки нагрузки HTTP(S)
Что мы имеем:
- 3 внутренних сервера с отслеживанием состояния, расположенных в разных регионах.
- Брокер Mqtt в каждом регионе (с подключенными IoT-устройствами).
- Пользователи, относящиеся к определенному региону, могут видеть данные IoT.
- Уникальное имя хоста для каждого сервера.
Что мы хотим:
- Одно имя хоста для обслуживания всех пользователей
- Mqtt все еще может подключаться к каждому бэкэнду по уникальному имени хоста
- Решение, куда перенаправить, должно исходить из пользовательской информации, а не из IP (например, поля в JWT).
Способна ли балансировка нагрузки GCP HTTP(S) на такое, или есть технические ограничения?
Будем очень признательны за любые идеи!
2 ответа
Я думаю, что вы можете добиться максимума с помощью HTTPS Global load balancer (GLB). У вас есть статья, которая может помочь вам в настройке.
Только условие перенаправления кажется сложным. Первоначально маршрут GLB к ближайшему к пользователю региону (таким образом, на основе IP), а затем вы можете настроить липкий параметр, основанный либо на IP, либо на файлах cookie. Я не уверен, что это соответствует твоему последнему требованию. Вы также можете перейти на серверную часть в соответствии с предоставленным URL-адресом. Но не из заявлений JWT.
Если вы хотите, чтобы одно имя хоста обслуживало всех пользователей, для этого можно использовать балансировщик нагрузки HTTP(S). Вот статья, которая дает больше информации о том же 1.
Ваша потребность в перенаправлении на основе информации о пользователе, а не с IP-адреса, может быть достигнута через привязку сеанса:2
Балансировка нагрузки Google Cloud HTTP(S) предлагает два типа привязки сеанса:
Сходство IP-адреса клиента 3 отправляет запросы с одного и того же IP-адреса клиента в один и тот же сервер.
Сгенерированная привязка cookie 4 устанавливает клиентский cookie при первом запросе, а затем отправляет запросы с этим cookie в тот же сервер.
Когда вы используете привязку сеанса, рекомендуется использовать режим балансировки RATE, а не UTILIZATION.