NSX Advanced Load Balancer — умный автомасштабируемый балансировщик нагрузки. Часть 2

Про установку NSX ALB в VMware vCenter и настройку  глобальной балансировки серверов.

18 ноября 2020  • 

В прошлый раз я рассказал о функциях балансировщика нагрузки NSX ALB, описал его архитектуру и схему работы. Мы посмотрели, как работает глобальная балансировка серверов (GSLB), которая объединяет серверы на географически разнесенных площадках в единый пул. В том числе, так можно распределять нагрузку между серверами в облаке и локальными серверами.

В этой статье поделюсь опытом внедрения системы для тестирования в нашем облаке. Опишу установку NSX ALB в VMware vCenter и основные этапы настройки для тех, кто хочет самостоятельно подключить для глобальной балансировки свою локальную площадку.

 

развертывание и настройка контроллера;

предварительная настройка сети;

создание виртуального сервиса (VS) и подключение серверов для балансировки;

настройка глобального сервиса балансировки серверов.

 

Установка контроллера

Этот шаг необходим на локальной площадке для подключения ее к глобальной балансировке.

  1. Сервисы для балансировки будут жить в VMware vCenter. Создаем там три портгруппы, которые будем использовать как:
    • management-сеть для управления и связи между контроллером и служебными виртуальными машинами SE (внутренняя адресация),
    • сеть для SE, для внутренних нужд NSX ALB (внутренняя адресация),
    • сеть внешних адресов для подключения клиентов к балансируемым сервисам снаружи (внешняя адресация).
  2. Скачиваем с сайта Avi OVA-образ и разворачиваем контроллер как виртуальную машину (ВМ).
  3. Запускаем ВМ и открываем веб-интерфейс контроллера по настроенному IP-адресу.
  4. Следуем шагам мастера для первичной настройки, как описано в документации вендора.

Теперь по тому же IP-адресу доступен интерфейс системы. В левом верхнем углу  появилось основное меню NSX ALB из 5 разделов:

Предварительная настройка

  1. Настроим статический диапазон адресов management-сети. Когда контроллер развернет служебные машины SE, они будут получать адреса из этого диапазона.

    В главном меню переходим в раздел Clouds. Выберем наш vCenter и внесем изменения в настройки:

  1. На вкладке Network в разделе IP Address Management for Management Network заполним поля IP Subnet, Add Static IP Address Pool и Default Gateway:
  1. Настроим аналогичные статические диапазоны для всех сетей, которые нужны при разворачивании новых SE и VS. В частности, это нужно сделать для служебной сети SE и всех сетей, в которых развернуты серверы для балансировки в рамках VS.

    Для этого зайдем в Infrastructure –> Networks, зададим критерии поиска нужной сети и откроем ее свойства.

  1. Для части сетей система самостоятельно определяет параметры по информации из vCenter. В этом случае в разделе Network IP Subnets сразу появится подсеть с типом Discovered, останется только отредактировать.

    Если для нужной подсети параметров нет, добавляем ее кнопкой Add Subnet:

  1. В разделе Add/Modify Static IP Subnet заполняем для подсети IP Subnet, ставим галку Add Static IP Address Pool и заполняем IP Address Pool:

Если в системе настроено более одного облака, то в разделе Networks сверху появляется выпадающий список Select Cloud. В этом случае перед поиском сети выбираем нужное облако из выпадающего списка:

Все готово для создания виртуального сервиса (VS).

Создание виртуального сервиса (VS)

  1. Перейдем в раздел Applications –> Virtual Services и нажмем CREATE VIRTUAL SERVICE:

Появится меню с выбором режима создания VS – Basic или Advanced.

  • В режиме Basic серверы для балансируемого пула добавляются на самой форме создания VS, пул для них создается автоматически.
  • В Advanced пул уже должен быть создан заранее, либо его нужно создать позже вручную в разделе Pools и затем добавлять в свойствах VS.

Мы рассмотрим создание VS в режиме Basic.

  1. Указываем имя сервиса и заполняем поле FQDN or IPv4 Address. В него вносится VIP – виртуальный IP-адрес VS, по которому клиенты могут подключиться к сервису. Если клиенты подключаются снаружи, то это, как правило, внешний адрес.
  1. Ниже добавляем серверы в разделе Add Servers. Можно добавить серверы перечислением или диапазоном, заполнив поле Server IP Address и нажав Add Server. Мы воспользуемся более  наглядным способом и выберем серверы из определенной сети Select Servers by Network:

Во всплывающем окне поиска впишем часть названия сети. Все сети по этому критерию отобразятся в выпадающем списке.

  1. Выберем сеть из списка. Отобразится список ВМ из этой сети, с их IP- и mac-адресами. Отмечаем нужные серверы, чтобы добавить их в пул для балансировки. Нажимаем ADD SERVERS:

Все отмеченные серверы появятся в разделе Servers. Сохраняем новый VS кнопкой Save справа. Автоматически создастся пул с именем [имя_VS]-pool, в него добавятся выбранные серверы.

  1. Зададим сеть, через которую каждая SE получит доступ к VIP размещенного на ней VS. Откроем свойства VS, перейдем на вкладку Advanced и в разделе Virtual IP Placement Settings нажмем Add Placement Network:

Из выпадающего списка выберем нужную сеть, в поле IPv4 Subnet укажем диапазон этой сети и сохраним:

  1. Зададим сеть, к которой будет подключаться каждая SE для доступа к сервер-пулу нужного VS. В нашем примере это Test-VS-pool. Откроем Applications –> Pools, затем свойства пула, перейдем на вкладку Advanced и в разделе Placement Settings добавим сеть по ссылке Add Server Network:

Из выпадающего списка выберем нужную сеть, в поле Subnet укажем диапазон сети и сохраним:

Если в vCenter более одного кластера, можно задать конкретный кластер и тип хранилищ (только общие), на которых будут размещаться SE.

Для этого в разделе Infrastructure –> Service Engine Group откроем для редактирования используемую группу SE (например, Default-Group). В ней на вкладке Advanced в разделе Host & Data Store Scope переключимся на Cluster и выберем нужный, а также выберем Shared в разделе датасторов:

При необходимости можно задать только конкретные хосты: нажать кнопку Host и выбрать их из списка. То же самое с датасторами: можно включить конкретные по кнопке Include и выбрать их из списка.

Настройка GSLB

Для использования функции глобальной балансировки система NSX ALB должна быть развернута на 2 разных площадках. Итак, на локальной площадке мы развернули контроллер, создали и настроили VS. Теперь выполним шаги по развертыванию DNS как VS на каждой площадке – в нашем примере локальной и облачной.

Настройка сервиса DNS

  1. В разделе Applications –> Virtual Services создадим новый VS по кнопке CREATE VIRTUAL SERVICE и выберем Advanced Setup.

    Укажем имя DNS-сервиса и в поле VIP Address заполним адрес DNS. В выпадающем списке Application Profile выбираем System-DNS, в TCP/UDP Profile выбираем System-UDP-Per-Pkt:

  1. Ниже в разделе Service Port переходим по ссылке Switch to Advanced:

В поле «Services» появится запись 53 TO 53. Нажимаем Add Port, заполняем новое поле 53 TO 53, затем ставим галку Override TCP/UDP и в выпадающем списке выбираем профиль System-TCP-Proxy. Поле Pool нужно оставить пустым:

На шагах мастера 2 и 3 просто нажимаем Next.

  1. Для сервиса DNS рекомендуется создать отдельную SE Group со своими настройками, чтобы DNS всегда разворачивался на отдельной SE.

    На шаге 4 в разделе Other Settings из выпадающего списка групп создаем новую группу Create SE Group:

  1. Задаем имя группы в поле Service Engine Group Name. В поле Virtual Services per Service Engine указываем, что у нас будет только 1 сервис на виртуальную машину. Сохраняем:
  1. Для корректной работы GSLB в корпоративном пространстве имен нужно создать поддомен специально для NSX ALB. В нашем примере мы создали поддомен avi.dtln.cloud.

    Соответствующую DNS-зону нужно делегировать развернутым в NSX ALB сервисам DNS. После этого они будут действовать как авторизованные DNS для этого поддомена.

    Настроим делегирование на стороне вышестоящего домена. Для этого создадим NS-записи, указывающие на DNS-серверы в NSX ALB.

    На шаге 5 Static DNS Records нажимаем Create DNS Record. В поле FQDN укажем название делегированной зоны, укажем тип записей NS Record и добавим имена и адреса сервисов DNS:

Нажимаем Done и завершаем создание сервиса кнопкой Save.

  1. Созданный сервис DNS указываем в разделе Administration –> Settings –> DNS Service:

Настройка сайтов

Для настройки самого глобального сервиса сначала нужно создать сайты GSLB. Напомню, что сайты в терминологии Avi – все внедрения NSX ALB с самостоятельным контроллером (или их кластером), которые мы используем в рамках GSLB.

  1. В разделе Infrastructure –> GSLB включим функцию глобального сервиса:
  1. Откроется окно создания нового сайта GSLB. Вписываем название сайта, имя и пароль администратора на данном контроллере или кластере. Указываем адрес одиночного контроллера или адреса всех контроллеров для кластера. Если этот сайт будет ведущим, ставим галку Active Member, сохраняем:
  1. На главной странице раздела Infrastructure –> GSLB нажимаем Add New Site:

Откроется такое же окно, в котором аналогично добавляем второй сайт и сохраняем.

  1. В разделе Subdomains delegated to GSLB в поле GSLB Subdomain указываем делегированную DNS-зону и сохраняем:
  1. В GSLB обращения к виртуальным IP локальных VS будут поступать не напрямую, а идти от клиентов через FQDN глобального сервиса. Так что нам не нужно использовать в качестве VIP адреса из внешнего диапазона. Перенастроим VS на уровне сайтов.

    В качестве VIP зададим адреса из сети с внутренним диапазоном – в начале статьи я указал ее как «сеть для SE».

    Мы остаемся в разделе Subdomains delegated to GSLB, но перейдем к Advanced Settings.  Для Client Group IP Address Type выберем значение Private, нажмем Add Group IP Address и укажем диапазон этой сети:

Прежние внешние адреса VIP понадобятся нам дальше для настройки пула сервиса GSLB.

  1. Откроем настройки каждого настроенного сайта и нажмем Save and Set DNS Virtual Services.

    В поле DNS Virtual Service выберем созданный сервис DNS, а в поле Subdomains – прописанную DNS-зону. Все сохраним:

В итоге раздел с сайтами будет выглядеть так:

Создание глобального сервиса

В разделе Applications теперь есть раздел GSLB Services – он появился после включения GSLB в разделе Infrastructure.

  1. В этом разделе нажмем CREATE, в выпадающем списке выберем Basic Setup:
  1. Укажем название сервиса в системе, пропишем сетевое имя сервиса в поле Application Name и выберем делегированную DNS-зону в поле Subdomain:

Сочетание Application Name+Subdomain – это и есть FQDN сервиса, по которому обращаются клиенты. В нашем примере у сервиса сформируется адрес testvs.avi.dtln.cloud.

  1. Перейдем к разделу Pool Member ниже. Как и при создании локального VS в режиме Basic Setup, здесь мы добавляем члены пула прямо в окне создания сервиса. Сам пул создается автоматически. Единственное отличие – членами глобального пула будут не серверы, а локальные VS с GSLB-сайтов.

    В поле Site Cluster Controller выберем один из сайтов. В поле Virtual Service выберем созданный локальный VS:

В поле Public IP Address укажем внешний адрес, который раньше служил VIP для локального сервиса (см. п.5 в настройке сайтов GSLB).

  1. Перейдем по ссылке Add GSLB Pool Member. В появившемся выберем второй сайт и VS на нем. После этого сохраним.

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

Расскажите друзьям и коллегам о статье
  • Поделиться
  • Поделиться
  • Поделиться

Последние статьи

Как мы следим за средней мощностью стойки и благодаря этому экономим свои ресурсы и ресурсы заказчика.

04 марта
Кирилл Шадский

Фотоэкскурсия по новом петербургскому ЦОДу на Жукова, 43.

25 февраля
DataLine

Какие вопросы задавать облачному провайдеру, чтобы подтвердить безопасность выбранного облака.

18 февраля
DataLine

Комментарии

Подписка на статьи

randomness