Балансировщик нагрузки GCP с несколькими приложениями и портами - PullRequest
0 голосов
/ 04 мая 2018

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

Applications: Web1 (Port 10000), Web2 (Port 11000), Web3 (Port 12000)
Servers: Serv1, Serv2, Serv3.

Все серверы идентичны и имеют порты Web1, Web2 и Web3, прослушивающие порт: 10000, 11000, 12000 соответственно.

Как я могу настроить балансировщик нагрузки следующим образом:

web1.domain.com -----> use Serv1,Serv2,Serv3 port 10000. 
web2.domain.com -----> use Serv1,Serv2,Serv3 port 11000. 
web3.domain.com -----> use Serv1,Serv2,Serv3 port 12000.

Мне удалось заставить его работать с 1 приложением, но я не могу создать 3 балансировщика нагрузки, поскольку серверы уже принадлежат другой группе экземпляров.

Я читал о сопоставлении имен портов, но подсистема балансировки нагрузки продолжает игнорировать их и использует свою собственную сгенерированную с именем 'http'.

Кто-нибудь сталкивался с подобными проблемами?

1 Ответ

0 голосов
/ 08 мая 2018

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

Вот шаги, которые я предпринял, чтобы настройка, подобная описанной вами, работала правильно:

  1. Я поместил три разных сервера в одну группу экземпляров;
  2. В этой группе экземпляров я добавил порты, используемые приложениями, в качестве именованных портов. Используя gcloud, попробуйте выполнить эту команду: gcloud compute instance-groups set-named-ports "NAME_OF_INSTANCE_GROUP" --zone "INSTANCE_GROUP_ZONE" --named-ports "port0:10000,port1:11000,port2:12000";
  3. Создайте три разных бэкэнда из одной и той же группы экземпляров, по одному для каждого порта. Убедитесь, что все они используют разные именованные порты. Используя gcloud, убедитесь, что вы установили аргумент --port-name для одного из именованных портов группы экземпляров;
  4. В балансировщике нагрузки, который вы хотите создать, определите два «Правила хоста и пути» (URL-карты) помимо стандартного. Эти дополнительные правила должны соответствовать запросам одного из трех упомянутых вами имен хостов, должны соответствовать всем путям для этого хоста и должны указывать на правильный бэкэнд. Так, например, одно из этих правил должно выглядеть так: «Host: web2.domain.com, Path: / *, Backend: backend_using_port1»;
  5. Интерфейс может быть любым, я оставил настройки по умолчанию.

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

Имейте в виду, что существуют важные ограничения для этого вида настройки, с более существенными ограничениями:

  • Оба бэкэнда должны использовать один и тот же режим балансировки, либо UTILIZATION, либо RATE.
  • Вы можете использовать maxRatePerInstance и maxRatePerGroup вместе. Допустимо, чтобы один бэкэнд использовал maxRatePerInstance, а другой - maxRatePerGroup.
  • Если ваша группа экземпляров обслуживает два или более портов для нескольких бэкэндов соответственно, вы должны указать разные имена портов в группе экземпляров.

Наконец, вы можете проверить эту настройку, используя curl:

curl --resolve "web3.domain.com:FRONTEND_PORT:PUBLIC_IP_OF_LB" http://web3.domain.com/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...