CISCO ACE — балансировка приложений

в 9:52, , рубрики: Без рубрики

Всем привет!
CISCO ACE — балансировка приложений
Хочу немного рассказать о семействе оборудования для Центров обработки данных от CISCO – CISCO ACE (Application Control Engine). В этой статье будут затронуты такие вопросы как предназначение устройств, архитектурные особенности, возможности применения, настройка основных функций. Больших тонкостей работы материал не предусматривает, скорее рассчитан на тех, кто думает о внедрении подобных устройств, пытается сделать выбор, хочет понять как такое оборудование поможет оптимизировать сетевую инфраструктуру, повысить доступность и время внедрения сервисов.


В народе эти устройства называют «балансировщиками», то есть устройствами которые могут распределять нагрузку на несколько серверов в зависимости от некоторых условий. Можно сказать, что производиться коммутация на уровнях L4-L7. Но это только одна сторона медали и сам производитель заявляет, что использование CISCO ACE в ЦОД позволяет:

• Повысить производительность,
• Масштабируемость,
• Гибко перераспределить ресурсы,
• Упростить процедуру внедрения новых приложений,
• Оптимизировать работы приложений,
• Гарантировать доступность,
• Консолидировать ресурсы,
• Обеспечить управляемость и мониторинг.

Данные устройства представлены в виде двух форм-факторов: standalone оборудование (на пример, CISCO ACE 4710) и модули в шасси CISCO 6500/7600 (CISCO ACE-20/30 Module). Standalone оборудование – это отдельное устройство, которое возможно интегрировать в сеть построенную на основе любого вендора, сервисные модули – высокопроизводительные устройства подходящие для инсталяции в сети существующими шасси 6500/7600, что позволяет повысить производительность, обеспечить централизованное управление, сократить количество кабельных соединений, способствует быстрому внедрению сервисов.

Технические характеристики:
CISCO ACE 4710

CISCO ACE — балансировка приложений

Feature Maximum Performance or Configuration
Throughput 0.5, 1, 2, or 4 Gbps
Compression 0.5, 1, or 2 Gbps (using GZIP or Deflate)
Virtual contexts 20
SSL throughput 1 Gbps
SSL TPS 7500 SSL TPS using 1024-bit keys
SSL TPS 7500 SSL TPS using 1024-bit keys
Maximum L4 connections per second 100,000 complete transactions sustained rate
Maximum L7 connections per second 30,000 complete transactions sustained rate
Concurrent connections 1 million

Что внутри коробки: CPU Intel Pentium 4 3.4 Ghz, 4x1GE, 8Gb RAM (нельзя увеличить), 1Gb Flash (нельзя увеличить), консольный порт, порты для подключения монитора, клавиатуры. Возможность управления с помощью CLI, SNMP, WEB интерфейс. Формфактор – 1U.

CISCO ACE-20/30 Module

Feature Maximum Performance or Configuration
Throughput 16 Gbps*, 8 Gbps*, and 4 Gbps
Total VLANs (client and server) 4000
Probes ICMP, TCP, UDP, Echo, Finger, DNS, Telnet, FTP, HTTP, HTTPS, SMTP, POP3, IMAP, RTSP, RADIUS, SIP, SNMP, KAL-AP, and TCL Scripts
NAT entries 1 million
Virtual partitions Up to 250*; 5 virtual partitions (devices) included in base price
SSL throughput 3.3/6 Gbps
SSL TPS 1000 TPS included in base price, and 5000, 10,000, or 15,000 TPS with licensing, (up to 30,000 with 1024-bit key)
Maximum L4 connections per second 325,000/500,000 complete transactions sustained rate
Maximum L7 connections per second 130,000/200,000 complete transactions sustained rate
Concurrent connections 4 million
Sticky table entries 4 million

Внутри: 1Gb FLASH (нельзя увеличить), 3Gb RAM DATA PLANE, 1Gb RAM CONTROL PLANE.

В шасси CISCO 6500/7600 возможно установить до 4-х модулей, тем самым получив производительность до 64 Gb per chassis. Стоит отметить, что установка 4-х модулей не означает, что в системе мы получим один балансировщик с заявленной производительностью, просто будем иметь 4 по 16 Gbps. Маркетологи любят приводить такие цифры, но точно с таким же успехом можно взять дюжину CISCO ACE 4710, положить друг на друга и получить великолепную производительность. К слову, приведу цены на устройства:

Конфигурация Цена $GPL
ACE 4710 0.5 Gbps 15.995
ACE 4710 1 Gbps 29.995
ACE 4710 2 Gbps 39.995
ACE 4710 4 Gbps 49.995
ACE30 Module with 4G, 1G Comp, 1K SSL TPS and 5VC 39.995
ACE30 Module with 16G, 6G Comp, 30K SSL TPS and 250VC 109.995

Приведены ориентировочные цены, так как в прайсе очень моного предложений и цена сильно варьируется от количества требуемых контекстов (об этом дальше), SSL сессий и т.д.

Возможности

Здесь немного остановимся на том, что же все-таки умеют эти достаточно не дешевые устройства (список будет не полный, только основное).

1. Коммутация приложений.
CISCO ACE – это коммутатор уровня приложений, обеспечивающий балансировку нагрузки на сервера, основываясь на информации с L4 до L7. Встроена нативная глубокая поддержка (Generic protocol parsing) протоколов HTTP, FTP, DNS, Internet Control Message Protocol (ICMP), Session Initiation Protocol (SIP), Real-Time Streaming Protocol (RTSP), Extended RTSP, RADIUS, and Microsoft Remote Desktop Protocol (RDP). Это означает, что в случае использования данных протоколов, возможно сбалансировать траффик основываясь на (практически) любой информации в payload.

Существует гибкий механизм регулярных выражений, а также любые манипуляции с HTTP заголовками (добавление, удаление, изменение и т.д.).

2. Обработка траффика.
Как уже стало понятно, ACE может выполнять deep packet inspection, но кроме этого есть tcpdump, который особенно полезен при troubleshooting.

3. Трансляция адресов.
Может осуществлять Source NAT, Destionation NAT, а также Static NAT (но это скорее побочный эффект от предыдущих двух типов при одном сервере в серверной ферме, но об этом далее).

4. Методы балансировки.
Для балансировки траффика на сервера в пределах серверной фермы, производится набор тестов для определения доступности приложений/сервисов. Итак балансировать на сервера можем по след. Параметрам: наименее загруженный (количество соединений или количество траффика на сервер), случайным образом (тут я бы отметил, что каждому серверу в серверной ферме ставится в соответствие коефициент – вес. Вероятность направления запроса на конкретный сервер определяется как отношение его собственного веса к сумме весов всех серверов фен. Следовательно, если у всех серверов будет одинаковый вес (относительное значение), то балансировка будет равномерной), определяя хэш с адресов, хэш с cookies, хэш с заголовков протоколов, хэш с URL. В случае использования cookies или SSL устройство привязывает конкретного пользователя к конкретному серверу для обеспечения постоянства сессий.

5. Определение доступности сервисов/приложений (как это настраивается и пример я приведу далее): ICMP, TCP, UDP, ECHO {tcp | udp}, Finger, HTTP, HTTPS, FTP, Telnet, DNS, SMTP, IMAP, POP, RADIUS, scripted, Keepalive Appliance Protocol (KAL-AP), RTSP, SIP, HTTP return-code parsing, SNMP. Также стоит отметить, что используя (например) HTTP пробу, доступность определяется не только получение какого-либо ответа, а возможно указать необходимые коды ответов (или их диапазоны), необходимые значения заголовков в HTTP ответе, время ответа и т.д. Создавая пробу мі определяем запрашиваемую страницу, значения заголовков и т.д. Механизм очень-очень гибкий.

6. Отказоустойчивость. Отказоустойчивость достигается использованием дополнительного модуля/устройства в пределах одного шасси или территориально разнесенных в режимах Active/Active, Active/Standby. Используя CISCO VSS оба модуля в шасси возможно виртуализировать в одно виртуальное устройство.

CISCO ACE — балансировка приложений

7. Ускорение приложений. Устройство осуществляет мультиплексирование TCP/UDP сессий для повышения сетевой производительности.

CISCO ACE — балансировка приложений

8. SSL акселерация. ACE имеет встроенный аппаратный SSL акселератор, что позволяет осуществить терминацию сессий на устройстве, тем самым сняв нагрузку с серверов. Здесь предусмотрено 3 режима функционирования: SSL termination, SSL initiation, End-to-end SSL (termination+initiation). SSL termination – сессия терминируется на CISCO ACE, траффик от балансировка до сервера идет в открытом виде. Сервер отвечает балансировщику, тот в свою очередь шифрует данные и отправляет назад клиенту. Следует отметить одну интересную особенность: балансировщик траффик расшифровывает, но порт назначения (TCP) не меняет, то есть ВЕБ сервер на серверах должен слушать порт 443 вместо 80, естественно без шифрования.
CISCO ACE — балансировка приложений

SSL initiation – траффик от клиента к балансировщику идет в открытом виде, балансировщик устанавливает SSL сессию с сервевами и общается с ними используя SSL. Отверы клиенту передаются в не зашифрованном виде.

В третьем режиме клиент устанавливает одну сессию с балансировщиком, а том свою очередь устанавливает другую сессию с серверами. Происходит двойное шифрование (имеется ввиду не шифрование шифрованного, а повторное шифрование ранее расшифрованного).

CISCO ACE — балансировка приложений

9. Средства безопасности: ACL (L3-L7), Bidirectional NAT and PAT (+policy NAT), TCP connection state tracking, Virtual connection state for UDP, Sequence number randomization, TCP header validation, TCP window-size checking, проверка Unicast Reverse Path Forwarding (URPF) при установлении сессии, Rate limiting.

10. Возможности виртуализации.
Устройство может работать как одно целое и единственное, что не всегда гибко. Либо с одного физического устройства возможно создать до 250 виртуальных балансировщиков. Каждый такой балансировщик имеет своих администратор, свою конфигурацию, свои правила, ограничения используемых ресурсов (CPU, connections, bandwidth). Очень хорошо подходит не только для собственных потребностей, но и возможно предоставлять клиентам услугу dedicated ACE, где в пределах своего устройства они могут творить что пожелается.
CISCO ACE — балансировка приложений

11. Режимы работы: Routed mode, Bridged Mode, Asymmetric server normalization (ASN). В Router режиме можно выделить два подрежима: Inline и On-a-stick (или One-Arm-Mode).

Bridged Mode
CISCO ACE — балансировка приложений
Устройство находить в «разрыве» между серверами и default-gateway для серверов. Оба интерфейса устройства в одной подсети в режиме L2 (бриджа). Необходимым условием является отсутствие прохождения траффика между серверами и роутером НЕ через CISCO ACE. Таким образом клиент обращается на VIP 172.16.3.100 (Virtual IP – виртуальный адрес балансировщика. Траффик, поступающий на него (VIP), балансируется между серверами), а устройство в свою очередь перенаправляет запрос на сервера, изменяя при этом адрес назначения. Сервер шлет ответ на 172.16.3.1, но когда траффик проходит через ACE (а мы говорили что это обязательно) адрес источника меняется обратно на 172.15.3.100.

Такое решение хорошо подходит для внедрения CISCO ACE в уже работающую сеть, адресация не меняется, перенастройка серверов не производится.

Routed Inline mode
CISCO ACE — балансировка приложений
В таком режиме CISCO ACE выполняет hop для проходящего трафика. Режим предпочтителен для новых инсталляций. Балансировщик является default-gateway для серверов. На этом режиме я остановлюсь более подробно и приведу типичную конфигурацию для балансировки.

Routed mode On-a-stick (One-Arm-Mode)
CISCO ACE — балансировка приложений
Траффик от пользователя приходит на балансировщик (VIP). Происходит замена адреса клиента та собственный адрес балансировщика, адреса назначения на реальный (или один из реальных) адрес сервера. В таком случае сервер отвечает непосредственно балансировщику и процедура повторяется в обратном порядке: адрес источника меняется на VIP, адрес назначения меняется на адрес клиента. У клиента(-ов) складывается впечатление общения с сервером с адресом (VIP), хотя на самом деле сервера могут быть расположены по всему земному шару.

Хороший вариант когда клиент хочет получить сервис балансировки. Например, клиент имеет 3 ВЕБ сервера в разных ДЦ. От нас он получает реальный IP адрес балансировщика –VIP. В настройках DNS привязывает свой домен к выделенному VIP. Теперь клиент не “светит” свои сервера, а также добавляя или изымая их, клиенты продолжают получать сервис.

Routed mode Asymmetric server normalization
Режим очень похож на предыдущий, то этом случае сервер напрямую отвечает клиенту, минуя CISCO ACE.

Рассмотрим пример настройки

Хочу рассмотреть базовый пример, не описывая множество вариантов, так как в этот нет острой необходимости (дам ссылки на хорошие материалы), лучше, если потребуется, прокомментирую или объясню не понятные моменты.

В качестве топологии возьмем рис. Routed Inline mode.
Интерфейс управления 172.16.1.5.

Напишем правила полики управления:
class-map type management match-any L4_REMOTE-ACCESS_CLASS
description Enabling remote access traffic to the ACE and the Cisco ACE Module
2 match protocol ssh source-address 172.16.1.0 255.255.255.0
3 match protocol icmp source-address 172.16.1.0 255.255.255.0
4 match protocol https source-address 172.16.1.0 255.255.255.0
5 match protocol snmp source-address 172.16.1.0 255.255.255.0

policy-map type management first-match L4_REMOTE-ACCESS_MATCH
class L4_REMOTE-ACCESS_CLASS
permit

interface vlan 20
ip address 172.16.1.5 255.255.255.0
service-policy input L4_REMOTE-ACCESS_MATCH

С сети 172.16.1.0/24 возможно получить доступ к устройству используя протоколы SSH, SNMP, HTTPS, ICMP.

Пускай мы имеем 3 сервера в серверной ферме, на которые мы будем балансировать нагрузку. Объявляем сервера:

rserver host SERVER-1
description SERVER-1
ip address 192.168.1.11
inservice
rserver host SERVER-2
description SERVER-2
ip address 192.168.1.12
inservice
rserver host SERVER-3
description SERVER-3
ip address 192.168.1.13
inservice

Объеденяем сервера в ферму (для проб будем использовать HTTP и ICMP):
serverfarm host FARM
probe HTTP_PROBE
probe ICMP_PROBE
rserver SERVER-1
inservice
rserver SERVER-2
inservice
rserver SERVER-3
inservice

Описание проб:
probe http HTTP_PROBE
interval 5
passdetect interval 10
passdetect count 2
request method head url /index.html
expect status 200 210
header User-Agent header-value "LoadBalance"
probe icmp ICMP_PROBE
interval 10
passdetect interval 60
passdetect count 4
receive 1

interval – интервал между пробами
receive – время ожидания ответа
passdetect count – серер считается не доступным при не получении стольких ответов
passdetect interval – интервал проб для не доступного сервера

Опишим политики балансировки.
Виртуальный IP адрес (будем принимать запросы только на порт 80):
class-map match-all FARM-VIP
2 match virtual-address 172.16.1.100 any eq www

Балансировать траффик будем на нашу ферму, а значит опишим политику балансировки:
policy-map type loadbalance http first-match FARM_POLICY
class class-default
serverfarm FARM

Если мы не зададим тип балансировки http (что не обязательно), то при использовании протокола http можем получить проблемы с cookies, например. Этот параметр определяет тип будущего траффика и особенности обработки. Проблема «корзины»:

CISCO ACE — балансировка приложений

Это означает, что любой HTTP траффик, на который будет назначена политика FARM_POLICY, будет направлен в ферму FARM.

Теперь создаем политику, которая объединит написанное выше:

policy-map multi-match WWW-PM
class FARM-VIP
loadbalance vip inservice
loadbalance policy FARM_POLICY
loadbalance vip icmp-reply active

Эту политику применим на входном (внешнем) интерфейсе:
interface vlan 20
service-policy input WWW-PM

Это означает, что, во-первых, балансировщик будет отдавать свой MAC при запросе адреса 172.16.1.100. Далее, если траффик идет на порт 80 адреса 172.16.1.100 (class-map match-all FARM-VIP), то траффик необходимо балансировать (loadbalance vip inservice) используя описанные правила балансировки (loadbalance policy FARM_POLICY), тоесть все (class class-default) направлять в ферму FARM (serverfarm FARM). Также CISCO ACE отвечает на пинги на этот адрес (loadbalance vip icmp-reply active).

Для того что бы ответы сервера дошли до клиента вообще и с правильным адресом, необходимо создать трансляцию внутренних адресов серверов во внешний адрес VIP.

Также, на всех интерфейсах добавим ACL разрешающий все. Подразумеваем, что фильтруем траффик мы в другом месте. CISCO ACE блокирует весь траффик по умолчанию.

access-list PERMIT-ANY line 8 extended permit ip any any

access-list NAT line 1 extended permit ip host 192.168.1.11 any
access-list NAT line 2 extended permit ip host 192.168.1.12 any
access-list NAT line 3 extended permit ip host 192.168.1.13 any

class-map match-any PAT-ClassMap
2 match access-list NAT

policy-map multi-match NAT-PM
class PAT-ClassMap
nat dynamic 1 vlan 20

interface vlan 20
access-group input PERMIT-ANY
nat-pool 1 172.16.1.100 172.16.1.100 netmask 255.255.255.255 pat

interface vlan 40
ip address 192.168.1.1 255.255.255.0
access-group input PERMIT-ANY
service-policy input NAT-PM

На FWSM (ASA, PIX) NAT настраивается в несколько раз проще.

Небольшие штрихи (маршрут по умолчанию, SNMP):
ip route 0.0.0.0 0.0.0.0 172.16.1.1

snmp-server community xxx group Network-Monitor
snmp-server user user_name Network-Monitor auth sha p@ssword localizedkey
snmp-server host 172.16.1.2 traps version 2 xxx

По ссылке (http://pastebin.com/DV4QM2Ya) можно найти полную конфигурацию. Для демонстрации возможностей, CISCO ACE имеет интерфейс в пользовательскую сеть. Для пользователей он выполняет функцию PAT и производит инспектирование протокола FTP, дабы не возникало проблем с этим протоколом (active/passive mode).

Мониторинг того, что получили (база):
ACE # show serverfarm FARM
serverfarm : FARM, type: HOST
total rservers : 2
---------------------------------
----------connections-----------
real weight state current total failures
---+---------------------+------+------------+----------+----------+---------
rserver: SERVER-1
192.168.1.11:0 8 OPERATIONAL 44 52841950 12274606
rserver: SERVER-2
192.168.1.11:0 8 OPERATIONAL 49 51043947 13091531

ACE-MEL/Admin# show serverfarm FARM detail
serverfarm : FARM, type: HOST
total rservers : 2
active rservers: 2
description : -
state : ACTIVE
predictor : ROUNDROBIN
failaction : -
back-inservice : 0
partial-threshold : 0
num times failover : 0
num times back inservice : 0
total conn-dropcount : 44
Probe(s) :
HTTP_PROBE, type = HTTP
ICMP_PROBE, type = ICMP

---------------------------------
----------connections-----------
real weight state current total failures
---+---------------------+------+------------+----------+----------+---------
rserver: SERVER-1
192.168.1.11:0 8 OPERATIONAL 44 52841981 12274606
description : -
max-conns : - , out-of-rotation count : -
min-conns : -
conn-rate-limit : - , out-of-rotation count : -
bandwidth-rate-limit : - , out-of-rotation count : -
retcode out-of-rotation count : -
load value : 0

rserver: SERVER-1
192.168.1.11:0 8 OPERATIONAL 49 51043976 13091532
description : -
max-conns : - , out-of-rotation count : -
min-conns : -
conn-rate-limit : - , out-of-rotation count : -
bandwidth-rate-limit : - , out-of-rotation count : -
retcode out-of-rotation count : -
load value : 0


ACE # show rserver SERVER-1

rserver : SERVER-1, type: HOST
state : OPERATIONAL (verified by arp response)
---------------------------------
----------connections-----------
real weight state current total
---+---------------------+------+------------+----------+--------------------
serverfarm: FARM
192.168.1.11:0 8 OPERATIONAL 13 1288706

И еще много других команд.

Подводя итог

В этой статье хотел немного познакомить читателя с этим оборудованием, и не только производства CISCO, но вообще с балансировщиками как достаточно важной частью инфраструктуры ЦОД. В голове крутиться много информации, но как мне кажется пост и так получился не очень маленьким.

Итак, основное предназначение таких устройств: распределение нагрузки между сервисами (что влечет за собой повышение доступности, производительности, консолидирует ресурсы), перенос функций терминации SSL с серверов на аппаратные ускорители, некоторое повышение безопасности (благодаря нормализациям и другим проприетарным технологиям), ускорение TCP/UDP (за счет мультиплексирования, сжатия).

Также стоит отметить возможность балансировки не только в приделах одного ЦОД, но и между территориально удаленными сервисами.

У себя используем модуль ACE20-MOD-K9 4Gbps. Загружен он, конечно, не на все 4Гбит, но свои задачи выполняет. За время эксплуатации проблем с ним не возникали, зарекомендовал себя достаточно хорошо. К чему я начал об этом писать. Дело в том, что, в частности, на ресурсе etherealmind.com не слышал в сторону CISCO ACE положительных отзывов. Или ничего не пишут, или открыто плюются. В основном жалуются на зависания, глючность IOS, нестабильность работы. Знаю что CISCO с её ACE находится далеко не впереди планеты всей. Инженеры достаточно сильно хвалят продукты от F5, отмечая при этом далеко не детские цены. С этим оборудованием не сталкивался, и вообще, в наших края это редкость, я таких не встречал.

Если у читателей появится желание знать что-либо подробнее – постараюсь помочь, или даже написать отдельную заметку.

Очень жду комментариев и мнений людей, которые работали/работают с подобным оборудованием. В действительности, на Хабре тема практически не затрагивалась.

Источники:
1. CISCO Documentation, cisco.com.
2. vivekganapathi.blogspot.com/2010/07/cisco-ace-4710-load-balancer.html.
3. www.packetslave.com/2010/01/24/cisco-ace-basic-http-load-balancing/
4. docwiki.cisco.com/wiki/Cisco_Application_Control_Engine_(ACE)_Configuration_Examples
5. etherealmind.com/cisco-ace-load-balance-stick-source-nat-part-1/
6. etherealmind.com/cisco-ace-load-balance-stick-source-nat-part-2/
7. etherealmind.com/cisco-ace-load-balance-stick-source-nat-part-3/
8. etherealmind.com/cisco-ace-fwsm-resource-allocation-for-virtualization/
9. www.cisco.com/en/US/products/hw/modules/ps2706/products_configuration_example09186a00809c3041.shtml

Автор: dovecot


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js