Просмотр Исходного

{toc}
{warning}
Виртуальные машины запрещено использовать для продакшна. 
{warning}
Все рекомендации ниже даны исключительно для того, чтобы посмотреть на возможности Carbon Reductor во время тестового периода.

В случае, если от данной инсталляции зависит отсутствие/наличие штрафов за пропуски обязательно использование физического сервера.

Более подробно узнать, почему нельзя их использовать в продакшне можно по ссылке: [https://strizhechenko.github.io/2016/11/09/reductor-and-vm.html]

h1. Общие рекомендации

Постарайтесь всё же вместо виртуальной машины использовать физическую\!

Виртуальная машина, это всегда какая-никакая, а прослойка между ресурсами процессора и выполняемыми задачами. Обработка зеркала трафика это практически задача реального времени, на которую отведен очень короткий промежуток времени, в течении которого Carbon Reductor должен успеть:

1. Принять пакет в сетёвку.
2. Принять пакет в ОС.
3. Разобрать пакет
4. Проанализировать, требуется ли ответить на него
5. Сформировать ответный пакет
6. Отправить его.

и пакет ещё должен вылететь в сеть и пролететь до абонента. В случае, если модули фильтрации будут ждать своей очереди крутиться на процессоре, а в это время он будет нагружен другими делами (например проверять, стоит ли сбросить кэши виртуальных дисков на физический диск или вообще сейчас ядро процессора используется другой виртуальной машиной) - ничего хорошего из этого не выйдет: у вас появится пропуск в проверке ревизора, а у нас лишняя задача в хелпдеске.

Так что лучше установить Carbon Reductor на физический хост и не рисковать\!

Если вы всё таки решили положиться на вашу систему виртуализации:

# При нагрузке больше 100 пользователей выделяйте Carbon Redcutor 4\+ ядра процессора, +которые никто кроме него не будет использовать+ (если кто-то использует их, то даже от 16 ядер ситуация лучше не станет - редуктор будет периодически обрабатывать пакеты медленнее, чем требуется).
# Лучше, если других виртуальных машин на сервере не будет вообще (хотя, в таком случае, зачем вообще виртуализация?:-) )
# Старайтесь напрямую пробрасывать сетевые карты.
# Хост система тоже должна удовлетворять системным требованиям (хост с realtek-сетевками и эмуляцией e1000 внутри виртуалки - не даст повышения производительности).

h1. XEN

Иногда ок, иногда имеются проблемы с передачей пакетов модулю xt_reductor для анализа.

h1. KVM

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

*ЗАМЕЧАНИЕ*: Если не блокируется только http-трафик, а https - да, то можно попробовать сменить тип виртуальных сетевых карт, например на e1000.

h1. Proxmox

Не рекомендуем на каналах больше 100мбит/с.

h1. VMWare ESXi

Хорошо зарекомендовал себя при использовании на каналах до 10гбит/сек.

*Совет* \- для зеркала трафика используйте тип сетевых карт VMXNET 3, а не e1000.

Эти сетевые карты поддерживают [распределение прерываний по нескольким ядрам процессора, что позволяет снизить нагрузку|Потери на сетевых картах, задержки в обработке и как с ними бороться].

Известные проблемы:
# Имели место случаи изменения порядка пакетов редиректа и RST. Точная причина не обнаружена (возможно промежуточное оборудование, возможно хост-система, при включенном tcpdump/tshark не воспроизводилась).
# По умолчанию люди часто забывают [настроить vSwitch для приёма зеркала.|reductor5:Reductor в VMWare]


h1. VirtualBox

Не надо, просто не надо. Это не для продакшна.

h1. LXC и OpenVZ

Из-за ограничений на modprobe (и ещё нескольких capabilities)  не подходят для работы с Carbon Reductor. (не позволяют загрузить модули внутри контейнера).

h1. Hyper-V

Ни разу не тестировалось. Если у вас успешно работает Carbon Reductor на этой платформе - пожалуйста, сообщите нам\!

В случае работы на Windows server 2012 Standart нужны следующие действия:

1. Установить и применить пакет обновления от Microsoft KB2885541 ([https://support.microsoft.com/ru-ru/kb/2885541])
2. Настроить зеркалирование через PowerShell (всего три команды):
---
> $ExtPortFeature=Get-VMSystemSwitchExtensionPortFeature \-FeatureName "Ethernet Switch Port SecuritySettings"

> $ExtPortFeature.SettingData.MonitorMode = 2

> PS C:\Windows\System32\WindowsPowerShell\v1.0> Add-VMSwitchExtensionPortFeature \-ExternalPort \-SwitchName ALLTRAFFICMONITOR \-VMSwitchExtensionFeature $ExtPortFeature

(вместо ALLTRAFFICMONITOR подставить название своего виртуального свича в Hyper-V)
---
Остальные действия через обычные настройки виртуальных машин.