А именно хотел остановиться на некотором функционале, который обязательно пригодится? А именно — Балансировка нагрузки (Load Balancing). Казалось, вещь всем понятная, нужная, но к ее реализации зачастую подходим сквозь пальцы.
Кто-то скажет, зачем для небольших компаний использовать Citrix NetScaler, ведь есть решения на базе DNS — DNS Round Robin. Для балансировки нагрузки — это не самый хороший выбор. Отступая в сторону я бы сказал – это “’зло” и полная противоположность “Best Practices”. А брать в расчет Windows LBS при большом количестве более достойных альтернатив — это «не спортивно».
А теперь я покажу почему это именно так:
Диспозиция:
Имеем “зеркальных” 3 WEB сервера, NetScaler VPX, AD DNS. Полагаю настройку NS я опущу, т.к. настройку NetScaler многократно описывал.
Давайте проверим работу WEB серверов
1й:
2й:
3й:
Все готово для демонстрации.
Итак, установим критерии тестирования для выявления слабых и сильных месть обоих решений.
В диспозиции мы имеем 3 зеркальных Web сервера b настроенный MS DNS севрер с настроенным Round robin с созданными 3мя записями тестируемых серверов DNS.
Настроенный Citrix NetScaler c функционалом Load Balancing.
Прежде всего, освежим в памяти как работает DNS Round robin. Ну тут особо углубляться не буду в теорию, полагаю само название говорит само за себя. Давайте “Расскажу Ообъясню только на “пальцах”: при включенной функции Round robin сервер DNS каждый раз выдает новый ответ за запрос от клиентов. Ниже приведена наглядная картина, при которой каждый новый запрос получает новый ответ.
Казалось все понятно. Но давайте подумаем, что, если один из серверов недоступен и/или загружен. Усложним тестирование и выключим один из серверов:
Вот оно, первый же запрос выпадет на выключенный сервер. Говорить при таком подходе об отказоустойчивом сервисе не представляется возможным, тут не поспоришь.
Как поступить в подобной или аналогичной ситуации? Доступность для зеркальных Web серверов – это частный случай, в качестве балансировщика могут быть разнообразные сервисы и службы.
Почему как одно из решения я настойчиво рекомендую — посмотреть в сторону решения NetScaler от Citrix.
Во-первых, данную задачу может решить бесплатная версия Citrix NetScaler – NetScaler VPX Express. А во-вторых и последующих – решение проверенное временем, простое, удобное и предоставляющее большой сторонний дополнительный функционал. Кроме того, NS работают на самых распространённых типах гипервизоров – ESX, Hyper-V, Xen, KVM и в облаках Azure и AWS.
Давайте посмотрим общую настройку Citrix NetScaler для балансировки доступности Web сервиса.
Имеется LB сервевр с настроенной группой серверов.
Логически схема выглядит так – балансировщик нагрузки 192.168.0.7 и 3 сервера:
Осталось проверить, как будет вести себя балансировщик нагрузки Citrix NetScaler при выходе из строя 1 или даже 2х серверов из 3х имеющихся.
На видео я буду поочередно отключать один или два сервера с одновременным мониторингом доступности по ICMP протоколу и доступностью Load Balancing сервера.
Поехали!
Поехали!
Описание производимых операций:
— На представленном видео в начале мы с Вами видим как все 3 преднастроенные Web серверы работают, работает и LB сервер.
— Проверили доступность 3х серверов
— Отключили 1-ый сервер
— LB без потери стал перенаправлять на 2-ой и 3-ий серверы.
— Отключили 2-ой сервер
— LB без потери стал перенаправлять на 3-ий сервер.
— Включили 1-ый сервер
— LB без потери стал перенаправлять на 1-ый и 3-ий серверы.
Итак, давайте подведем краткие итоги. Уверен, что найду достаточно много вариантов применения инструмента балансировки нагрузки с помощью Citrix NetScaler в большинстве организаций. Следовательно, администраторы сетей, системный администраторы могут им пользоваться. Пользоваться бесплатно, а инструмент имеет широчайший спектр применения. Кроме того, если в последующем придется сталкиваться с VDI решением от Citrix,
То Вы будите существенно подготовлены)
Лично мое мнение, обязательно стоит использовать инструмент, который может существенно повысить доступность сервисов и служб учитывая его положения на рынке, а, самое главное, в необходимой редакции он бесплатный.
P.S. В данном разделе мы не рассматриваем алгоритмы и методы балансировки, а лишь на макро уровне- откроем для себя новый инструментарий работы.
Кроме того, хочется знать Ваше мнение. Какие решения для балансировки вы используете? Буду рад любым комментариям и замечаниям.
Комментарии (19)
AxMuha
23.08.2016 07:36Правильно понимаю, что требуется дополнительный сервер? ( По сравнению со схемой балансировки на уровне днс). И он является узким местом?
stavinsky
23.08.2016 09:27Правильно. Но обычно их(Netscaller, nginx, haproxy) тоже балансируют на уровне IP.
0000168
23.08.2016 09:41Правильно. Кроме того, Netscaler может поставляться как физическое устройство, так и виртуальное. А в виртуальной реализации поставляется под основные типы гипервизоров.
Manitou
23.08.2016 09:33Совершенно не понятно, почему именно этот продукт предлагается использовать в качестве решения. Вернее даже так, использование ADC — правильный подход, однако «решение» не органичивается этим конкретным продуктом. Аналогичные варианты (в смысле «бесплатности») есть и у других вендоров. Если я не ошибаюсь, у express-версии, о которой и идет речь, есть ограничение в пропускной способности в 5Mbps, соответственно далеко вы на нём не уедете.
0000168
23.08.2016 09:57Совершенно верно, Express — ограничение 5Mb, для LB и мониторинга доступности — «за глаза».
Касаемо использование редакций ADC/Gateway/Express — во всех присутствует функционал LB.
Отвечу и на вторую часть, почему Netscaler, то мое глубокое мнение что даже по сравнению с другими Free решениями реализация функционала балансировки нагрузки проще. Я так и акцентировал «в помощь начинающему администратору».
Лично я все нестойки делаю через CLI, но имеющийся GUI просто шикарный.
Manitou, расскажи о своем опыте развертывания LB сервера?IAmGroot
23.08.2016 10:23А если сравнить его с Zen Load Balancer?
Все тоже самое, плюс поддержка кластера «из коробки» в бесплатной версии
Manitou
23.08.2016 10:46+2Видимо это очень маленькая компания и веб-ресурс, которой 5Mbps «за глаза». В этом случае еще менее очевидно, зачем здесь три web-сервера в бэкенде. В итоге решение не обеспечивает ни высокую доступность (единственный виртуалных балансер — spof) ни высокую производительность (лимит в 5Mbps). Наиболее подходящий сценарий для express это обкатка конфигурации\скриптов, перед деплоем в продакшен.
Что касается моего опыта, то работал с keepalived, haproxy, Netscaler, F5, Brocade, MS NLB. F5 оказался самым гибким и машстабируемым решением, используем платформу F5 VIPRION в кластерной конфигурации на C2400 качестве основны балансировки и управления трафиком, в дополнение к десятку младших платформ от 2200S до 8900. В основном используем функционал модулей GTM и LTM. Виртуальне балансеры не используем из-за проигрыша в производительности в операциях с SSL-offload. Инфрастуктура используется для хостинга нескольких крупных европейских онлайн-ретейлеров.
Могу сказать, что подходы Netscaler и F5 близки, Brocade несколько отличается. Нет никакого смысла завязываться на конкретного вендора, если в дальнейшем не планируется продолжение сотрудничества. Если 5Mbps это «за глаза», и требуется только балансировка web-трафика, то в случа nix можно ограничится keepalived/haproxy/nginx, если же это MS, то даже стандартного NLB будет достаточно.
Balintrue
23.08.2016 11:01+1Андрей, добрый день!
Спасибо за статью, но со своей стороны, как администратора Citrix Netscaler, хотелось бы добавить, что Netscaler — это огромный комбайн и балансировка это самое малое, что он умеет. Как говорили коллеги выше, для балансировки www можно применять более дешевые (бесплатные) решения.
То, что Вы описали неправильную и правильную балансировку — за это Вам респект, т.к. многие мои коллеги поступают именно первым (неверным) способом, настраивая балансировку через DNS.0000168
23.08.2016 11:05Я использую не только как Web балансировщик, но и использую балансировку для RMS, использую для мониторинга доступности сервисов и серверов.
Я бы назвал не комбайном, а скорее огромным КОНСТРУКТОРОМ.
Neuronix
23.08.2016 13:05По своему опыту, в нетскалере без бутылки не обойдёшься :) Правда это про SSO VPN для VDI
Balintrue
23.08.2016 13:22+1Не соглашусь, даже базовой документации с сайта Citrix достаточно, чтобы настроить простые вещи как балансировку, Netscaler Gateway для публикации XenApp или XenDesktop, прямое и обратное проксирование.
Немого сложнее настраивается Content Switching и Application Firewall, причем на портале Citrix очень много подробных инструкций и видео.
А Вы SSO VPN для VDI не через Gateway настраивали? ИМХО, там все элементарно, главное чтобы Back-end инфраструктура уже работала.
0000168
23.08.2016 13:58Николай, расскажи, с чем именно возникли вопросы требующие не менее 0.5 л)
На мой взгляд SSO, LB, VPN, AAA, публикация XD|XAPP ничего сложного.
Действительно сложнее настроить App Firewall, балансировку нагрузки видео или настроить сложные политики сессий
Ant1k
24.08.2016 02:41А что именно подразумевается под бесплатной версией? Разве фича лоад балансер работает из коробки без лицензии или вы имеете ввиду 90 дневную лицензию?
Давно уже работаю с нетскелерами, но про "бесплатную версию" слышу первый раз, везде лицензии. Возможно просто не обращал внимания никогда.
DmitryKm
24.08.2016 14:48Для небольших проектов использую:
Nginx + HaProxy
Также учитывая что все висит на DigitalOcean — переодически использую их Floating IP через API для быстрого перенаправления.
click0
Подскажу другие аналоги:
DyadyaMisha
Apache ещё