10.4.1. WEB

Описание

Cервис — это виртуальная сущность, агрегирующая в себе все настройки, которые описывают логику обработки запросов для группы Acccess points. А именно: Content Switch/Modification Rules, Persistence, Target-группа по умолчанию, SSL сертификаты.

Настройка

Перейдите в Traffic Management -> Services.

../../_images/service_main_page.png

Для того, чтобы создать Сервис, нажмите на кнопку Add.

Для того, чтобы удалить Сервис, выберите нужный, нажав на чекбокс напротив имени Сервиса, далее нажмите на кнопку Delete или в колонке Actions на иконку корзины.

Для того, чтобы обновить список Сервисов, нажмите на кнопку Refresh.

Примечание

Вы можете удалить все Сервисы. Для этого нажмите на чекбокс напротив колонки Name, и далее на Delete

При добавлении нового Сервиса система попросит вас указать его название и Target-группу. Эти поля являются обязательными.

Необязательными полями являются

../../_images/service_add.png

После того, как все параметры добавлены, необходимо нажать на кнопку Add.

Если в последующем понадобится изменить/добавить информацию, то необходимо в колонке Actions нажать на значок Редактирования.

Важно

После внесения или удалении информации (Access points, Content Modification/Swithc Rules), обязательно нужно сохранить настройки, нажав на кнопку Save

../../_images/service_save.png

Рассмотрим отдельно Access points, Content Modification Rules и Content Switch Rules.

Access points

Access point (Точка доступа) — это виртуальная точка доступа, которая описывается уникальным ключом из маски подсети, порта, VRF, типа и используется для предоставления доступа клиентов к сервису.

Чтобы добавить Access point, нажмите кнопу Add. Система попросит вас ввести следующие поля:

../../_images/service_add_ap.png

Поле

Описание

IP

IP-адрес, который будет слушать балансировщик. Можно указать как подсеть, так и единичный адрес с маской /32

Port

Порт, который будет слушать балансировщик. Можно указать any и тогда балансировщик будет слушать любой порт

Type

Тип точки доступа, который определяет, какие именно настройки будут применены для обработки трафика на Access point

VRF

По умолчанию на балансировщике создается vrf default

Access list

Access-лист

TCP profile

TCP-профиль

Рассмотрим типы Access point:

Тип Access point

Описание

l4-tcp/udp

L4-балансировка TCP или UDP трафика. В этом режиме балансировщик не терминирует на себе сессии. Для переключения необходимо установить параметр l4_app в настройках платформы в значение 2: vADC# platform set l4_app 2. После этого необходимо выполнить перезагрузку ВМ

tcp

L7-балансировка TCP-трафика. Работает только TCP-стек и балансировка

ssl

L7-балансировка шифрованного трафика. На данный момент поддерживается TLS 1.2. Работает только TCP-стек, SSL Offloading и балансировка. Не работает HTTP-парсер, то есть не будут работать Content Switch/Modification Rules

http

L7-Балансировка HTTP-трафика. Работает TCP-стек, балансировка и HTTP-парсер, поэтому доступны Content Switch/Modification Rules

https

L7-Балансировка https-трафика. Работает TCP-стек, SSL Offloading и балансировка, а также HTTP-парсер, то есть доступны Content Switch/Modification Rules, использование сертификатов и цепочек сертификатов

Примечание

На настоящий момент шифрование работает только для сессий между клиентом и балансировщиком. После балансировщика трафик идет нешифрованным.

Content Modification Rules

Правила изменения контента позволяют вставлять/удалять/изменять различную информацию в заголовки запросов пользователей к серверу и заголовки ответов от сервера.

При добавлении нового правила система попросит заполнить следующие поля:

../../_images/service_cmr.png

Поле

Описание

ID

Идентификационный номер правила. Выполняется по порядку. В отличии от ID в Content Switch Rules обработка останавливается, когда будут применены все правила

Type

Тип операции. Поддерживаются следующие типы операций:

  • request/response-set-header — Установить заголовок в запросе или ответе

  • request/response-change-header — Изменить заголовок в запросе или ответе

  • request/response-delete-header — Удалить заголовок в запросе или ответе

  • request/response-set-cookie — Установить куку в запросе или ответе

  • request/response-delete-cookie — Удалить куку в запросе или ответе

  • request-change-uri — Изменить URL в запросе

Name

Название заголовка, куки или значение URL

Value

Значение, которое будет вставляться в поле Name. Более подробно будет описано ниже

vADC предоставляет специальные переменные, чтобы автоматически добавлять необходимую информацию к таким заголовкам.

Value

Описание

$remote_addr

Соответствует IP-адресу клиента

$remote_port

Соответствует номеру порта клиента

$server_addr

Соответствует IP-адресу Access point в запросе

$server_port

Соответствует номеру порта Access point

$scheme

Протокол, например, HTTP или HTTPS

$http_host

Значение заголовка Host в HTTP-запросе

$uri

Значение URI в HTTP-запросе

$x_forwarded_for

Добавляет $remote_addr к заголовку X-Forwarded-For, если этот заголовок уже содержится в HTTP-запросе. В противном случае вставляет новый заголовок

$forwarded

Добавляет $remote_addr к заголовку Forwarded, если этот заголовок уже содержится в HTTP-запросе. В противном случае вставляет новый заголовок

$transition_forwarded_for

Добавляет $remote_addr к заголовку X-Forwarded-For и преобразует этот заголовок в Forwarded

Примеры

  1. Следующие правила модификации контента:

../../_images/service_cmr_example1.png

добавят в заголовки информацию:

< X-Real-IP: 192.168.10.2
< Forwarded: for=192.168.10.2
< TrafficSoft: 11.0.0.1:80
  1. Преобразование заголовка X-Forwarded-For в Forwarded:

../../_images/service_cmr_example2.png

В этом случае, если на устройство поступит HTTP-запрос, уже содержащий заголовок X-Forwarded-For, то к нему будет добавлен IP-адрес клиента, а также будет создан заголовок Forwarded, содержащий все узлы из заголовка X-Forwarded-For. Например, в HTTP-запросе содержится заголовок:

X-Forwarded-For: 12.34.56.78, 23.45.67.89

Тогда к пакету будет добавлен следующий заголовок:

Forwarded: for= 12.34.56.78, for=3.45.67.89, for=12.34.56.78:8000

Примечание

Следует отметить, что в этом случае, в заголовок Forwarded нельзя добавить значения из других заголовков X-Forwarded-By/Proto/Host и т.д., т.к. нельзя точно определить на каких узлах эти заголовки были добавлены в запрос.

  1. По умолчанию vADC заменяет значение заголовка, если он уже находится в поступившем HTTP-запросе. Если нужно добавить заголовок к уже существующему, то поле значения заголовка должно начинаться с префикса $add:, например:

../../_images/service_cmr_example3.png

Важно

Если в vADC будет добавлено несколько правил на модификацию одного и того же заголовка с переменными $x_forwarded_for, $forwarded, $transition_forwarded_for, то будут применены следующие правила:

  • Для добавления к существующем заголовку (если таковой имеется) будет использоваться первое добавленное правило.

  • Остальные правила создадут дополнительные заголовки, как если бы к ним был добавлен префикс $add:.

  • Если происходит удаление/изменение первого правила, то для добавления информации к существующему заголовку будет использовано правило, добавленное вторым.

и т.д.

Важно

Если в одном и том же заголовке будет добавлено сразу несколько переменных $x_forwarded_for, $forwarded и $transition_forwarded_for, то использоваться будет только первая переменная. Остальные переменные будут удалены.

Content Switch Rules

Это правила, по которым мы можем выбрать группу серверов для балансировки.

При добавлении нового правила система попросит заполнить следующие поля:

../../_images/service_csr.png

Поле

Описание

ID

Приоритет правила. Если создано несколько правил, то их обработка остановится, когда будет выполнено одно из них. Например, создано 4 правила: условия в правилах с ID = 1 и ID = 2 не совпали с параметрами запроса от клиента, ID = 3 совпало, проверка прекращается, правило с ID = 4 не проверяется

Expression

Выражение. Поддерживаются следующие логические операции:

  • == равно

  • != не равно

  • =~ содержит

  • !~ не содержит

  • or или

  • and и

и следующие переменные:

  • @url URL-адрес сайта

  • @method GET/POST/HEAD

  • @body Тело запроса

  • HTTP Cookie

  • HTTP-заголовки

Target Group

Tartget-группа серверов, на которые будут балансироваться запросы

Пример

Создадим правило:

Если заголовок Host содержит домен trafficsoft.ru И в URL-адресе не содержится /images/ ИЛИ заголовок NFWare равен test, то отправить запрос на Target-группу tg1.

Тогда Expression будет следующим:

../../_images/service_csr_example.png