Задумал я это дело ( агрегацию ) из-за того, что повысилась нагрузка на sql, samba сервера.
Все проделанное будет происходить на системе FreeBSD 7.4
Мой выбор пал на порт lagg.
Типы агрегаций
Failolver — работает один канал, если он упал, тогда второй, failover (по умолчанию) – посылает и получает сообщения, только через мастер порт. Если мастер порт становится недоступным, используется следующий активный порт. Интерфейс. который добавлен первым называется master, любой интерфейс, добавленный после него используются как резервный для обеспечения отказоустойчивости.
FEC – совместим с Cisco EtherChannel. Это статический транк.
LACP – IEEE 802.3ad Link Aggregation Control Protocol (LACP). Виртуальный интерфейс поднимается автоматически при обнаружении на другой стороне линка аналогично сконфигурированного интерфейса. Каждый LAGG-интерфейс состоит из портов с одинаковой скоростью, и полным дуплексом. В случае изменения в физической связи, Link Aggregation быстро перестраивается к новой конфигурации.
loadbalance — исходящего трафика распределяется через активный порты, на основании хэшированной информации в заголовке протокола, а входящий трафик принимается от любого активного порта. Хэш включает Ethernet-адреса источника и назначения, и, если возможно, VLAN Tag, и .IP адреса источника и назначения.
roundrobin – исходящий трафик распределяется round-robin планировщиком через все активные порты, а входящий трафик принимается с любого активного порта.
none — выключение виртуального интерфейса – блокирует весь трафик.
Приступим.
Для начало пересоберем ядро с поддеркой lagg
cat /usr/src/sys/i386/conf/FARMMED | grep lagg device lagg
Добавим модуль в автозагрузку.
echo "if_lagg_load="YES"" >> /boot/loader.conf
В данный момент мне нельзя перегружать сервер.
Подгрузим модуль вручную.
# kldload if_lagg
Создадим и настроим интерфейс lagg0
# ifconfig lagg0 create # ifconfig lagg0 up laggproto lacp laggport alc0 laggport re0 10.15.7.128 netmask 10.15.7.255
Трафик будет сбалансированным через порты в LAG с наибольшим общей скоростью, в большинстве случаев будет существовать только один LAG, который будет содержать все порты.
Так, теперь для того, что бы при перезагрузки lagg0 автоматом подымался добавим такую запись в /etc/rc.conf
cloned_interfaces="lagg0" ifconfig_alc0="up" ifconfig_alc1="up" ifconfig_lagg0="laggproto lacp laggport alc0 laggport alc1 10.15.7.128 netmask 10.15.7.255" ifconfig_lagg0="up"
# ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 0f:12:11:fd:39:5c inet 10.15.7.128 netmask 0xffffff00 broadcast 10.15.7.255 media: Ethernet autoselect status: active laggproto lacp laggport: alc1 flags=S12<ACTIVE,COLLECTING,DISTRIBUTING> laggport: alc0 flags=S12<ACTIVE,COLLECTING,DISTRIBUTING>
Ради интереса решил попробовать Failover
# ifconfig lagg0 up laggproto failover laggport alc0 laggport alc1
Получим такую картину, если один из инрефейс сдыхает, то трафик автоматом переходит на второй , запасной интерфейс.
Выглядит сие чудо так!
# ifconfig lagg0 lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=19b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4> ether 0f:12:11:fd:39:5c inet 10.15.7.128 netmask 0xffffff00 broadcast 10.15.7.255 media: Ethernet autoselect status: active laggproto lacp laggport: alc1 flags=S12< &qt; laggport: alc0 flags=S12<MASTER,ACTIVE >