![](https://habrastorage.org/getpro/habr/post_images/d6d/56b/ed5/d6d56bed5a7827e991bb07737c51ad48.jpg)
А именно хотел остановиться на некотором функционале, который обязательно пригодится? А именно — Балансировка нагрузки (Load Balancing). Казалось, вещь всем понятная, нужная, но к ее реализации зачастую подходим сквозь пальцы.
Кто-то скажет, зачем для небольших компаний использовать Citrix NetScaler, ведь есть решения на базе DNS — DNS Round Robin. Для балансировки нагрузки — это не самый хороший выбор. Отступая в сторону я бы сказал – это “’зло” и полная противоположность “Best Practices”. А брать в расчет Windows LBS при большом количестве более достойных альтернатив — это «не спортивно».
А теперь я покажу почему это именно так:
Диспозиция:
Имеем “зеркальных” 3 WEB сервера, NetScaler VPX, AD DNS. Полагаю настройку NS я опущу, т.к. настройку NetScaler многократно описывал.
![image](https://habrastorage.org/getpro/habr/post_images/c70/197/94b/c7019794bc42a0f911727a9a0c846405.png)
Давайте проверим работу WEB серверов
1й:
![image](https://habrastorage.org/getpro/habr/post_images/5b9/bd7/f40/5b9bd7f404ed842f34050a392555d52e.png)
2й:
![image](https://habrastorage.org/getpro/habr/post_images/0ed/240/f7d/0ed240f7d78662d05f0c5eafb4ce9602.png)
3й:
![image](https://habrastorage.org/getpro/habr/post_images/684/bdd/d92/684bddd9258557c77e71a84ca352f6cf.png)
Все готово для демонстрации.
Итак, установим критерии тестирования для выявления слабых и сильных месть обоих решений.
В диспозиции мы имеем 3 зеркальных Web сервера b настроенный MS DNS севрер с настроенным Round robin с созданными 3мя записями тестируемых серверов DNS.
![image](https://habrastorage.org/getpro/habr/post_images/800/f91/79c/800f9179cdd28b53fee2152275437251.png)
Настроенный Citrix NetScaler c функционалом Load Balancing.
Прежде всего, освежим в памяти как работает DNS Round robin. Ну тут особо углубляться не буду в теорию, полагаю само название говорит само за себя. Давайте “Расскажу Ообъясню только на “пальцах”: при включенной функции Round robin сервер DNS каждый раз выдает новый ответ за запрос от клиентов. Ниже приведена наглядная картина, при которой каждый новый запрос получает новый ответ.
![image](https://habrastorage.org/getpro/habr/post_images/fdb/6b8/2ef/fdb6b82ef901e7923e450fa51e30e8c3.png)
Казалось все понятно. Но давайте подумаем, что, если один из серверов недоступен и/или загружен. Усложним тестирование и выключим один из серверов:
![image](https://habrastorage.org/getpro/habr/post_images/03c/3dc/181/03c3dc181761df6d89f7d88686a4b9de.png)
Вот оно, первый же запрос выпадет на выключенный сервер. Говорить при таком подходе об отказоустойчивом сервисе не представляется возможным, тут не поспоришь.
Как поступить в подобной или аналогичной ситуации? Доступность для зеркальных Web серверов – это частный случай, в качестве балансировщика могут быть разнообразные сервисы и службы.
Почему как одно из решения я настойчиво рекомендую — посмотреть в сторону решения NetScaler от Citrix.
Во-первых, данную задачу может решить бесплатная версия Citrix NetScaler – NetScaler VPX Express. А во-вторых и последующих – решение проверенное временем, простое, удобное и предоставляющее большой сторонний дополнительный функционал. Кроме того, NS работают на самых распространённых типах гипервизоров – ESX, Hyper-V, Xen, KVM и в облаках Azure и AWS.
Давайте посмотрим общую настройку Citrix NetScaler для балансировки доступности Web сервиса.
Имеется LB сервевр с настроенной группой серверов.
![image](https://habrastorage.org/getpro/habr/post_images/67c/81c/c33/67c81cc336b5969646d6f7c430b98519.png)
Логически схема выглядит так – балансировщик нагрузки 192.168.0.7 и 3 сервера:
![image](https://habrastorage.org/getpro/habr/post_images/7da/8eb/959/7da8eb959b39440e72432d8cb7c8f2f3.png)
Осталось проверить, как будет вести себя балансировщик нагрузки Citrix NetScaler при выходе из строя 1 или даже 2х серверов из 3х имеющихся.
На видео я буду поочередно отключать один или два сервера с одновременным мониторингом доступности по ICMP протоколу и доступностью Load Balancing сервера.
![image](https://habrastorage.org/getpro/habr/post_images/909/55a/ddb/90955addbde718c842ddd36773f85b91.png)
Поехали!
Поехали!
Описание производимых операций:
— На представленном видео в начале мы с Вами видим как все 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 ещё