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

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

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

 • 

В прошлый раз я рассказал о функциях балансировщика нагрузки 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 завершена. Теперь балансировка не ограничивается рамками одной площадки: можно добавлять нужное их количество и балансировать между всеми одновременно. Если же самостоятельная настройка кажется трудоемкой, всегда готовы помочь.

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

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

Как мы создали мощный инструмент для мониторинга процессов в системе резервного копирования на основе Grafana.

Андрей Александров

Фотоэкскурсия по первой очереди дата-центра в Медведково.

Алексей Приезжев

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

DataLine