Network teaming or bonding

Материал из pNp Wiki
Перейти к: навигация, поиск

Аггрегирование интерфейсов: teaming или bonding

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: bash-completion, teamd

teaming

Настройка интерфейсов

Настройка производится при помощи NetworkManager.

Предположим, что у нас имеются интерфейсы:

[root@vm-02 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:69:43:af brd ff:ff:ff:ff:ff:ff
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:12:f1:62 brd ff:ff:ff:ff:ff:ff
[root@vm-02 ~]#

которые не имеют адресов и, следовательно, не показываются в nmcli:

[root@vm-02 ~]# nmcli connection show
NAME  UUID  TYPE  DEVICE
[root@vm-02 ~]#

Добавим интерфейсы:

[root@vm-02 ~]# nmcli connection add type ethernet ifname ens3 con-name ens3
[root@vm-02 ~]# nmcli connection add type ethernet ifname ens10 con-name ens10

Если интерфейс не подключился автоматически, то можно сделать так:

[root@vm-02 ~]# nmcli device connect ens10 
Device 'ens10' successfully activated with '3f2bda3f-ea5c-4210-907b-1b2ab031533a'.
[root@vm-02 ~]# nmcli connection show
NAME   UUID                                  TYPE            DEVICE 
ens10  3f2bda3f-ea5c-4210-907b-1b2ab031533a  802-3-ethernet  ens10  
ens3   3e6df68f-c1db-45d7-8303-c9d8f5910e73  802-3-ethernet  ens3   
[root@vm-02 ~]#

Для ускорения времени в настройке teaming'а надо взять примеры конфигурационных файлов, входящих в пакет teamd:

[root@vm-02 ~]# rpm -qd teamd | grep load
/usr/share/doc/teamd-1.9/example_configs/loadbalance_1.conf
/usr/share/doc/teamd-1.9/example_configs/loadbalance_2.conf
/usr/share/doc/teamd-1.9/example_configs/loadbalance_3.conf
[root@vm-02 ~]#

В зависимости от задания (настроить roundrobin, loadbalance или lacp), выбираем нужную конфигурацию, в данном примере, предположим, что у нас loadbalance, поэтому скопируем соответствующий файл в директорию /root:

/bin/cp -a /usr/share/doc/teamd-1.9/example_configs/loadbalance_2.conf /root/lb2.conf

Поправим имена интерфейсов в конфигурационном файле в соотвествии с именами нашей виртуальной машины:

[root@vm-02 ~]# sed -i 's#eth1#ens3#g' /root/lb2.conf 
[root@vm-02 ~]# sed -i 's#eth2#ens10#g' /root/lb2.conf 
[root@vm-02 ~]# cat /root/lb2.conf 
{
	"device":		"team0",
	"runner": {
		"name": "loadbalance",
		"tx_hash": ["eth", "ipv4", "ipv6"]
	},
	"ports":		{"ens3": {}, "ens10": {}}
}
[root@vm-02 ~]#

Погасим второй интерфейс:

 
[root@vm-02 ~]# nmcli connection down ens10
[root@vm-02 ~]# nmcli connection show
NAME   UUID                                  TYPE            DEVICE 
ens10  3f2bda3f-ea5c-4210-907b-1b2ab031533a  802-3-ethernet  --     
ens3   3e6df68f-c1db-45d7-8303-c9d8f5910e73  802-3-ethernet  ens3

Теперь создадим интерфейс с именем team0:

  
[root@vm-02 ~]# nmcli connection add type team con-name team0 config /root/lb2.conf 
Connection 'team0' (6f3f55ca-5909-4fa0-b7bb-5186e53e044b) successfully added.
[root@vm-02 ~]# nmcli connection show
NAME   UUID                                  TYPE            DEVICE  
team0  6f3f55ca-5909-4fa0-b7bb-5186e53e044b  team            nm-team 
ens10  3f2bda3f-ea5c-4210-907b-1b2ab031533a  802-3-ethernet  --      
ens3   3e6df68f-c1db-45d7-8303-c9d8f5910e73  802-3-ethernet  ens3    
[root@vm-02 ~]#

Теперь добавим физические интерфейсы ens3 и ens10, к нашему интерфейсу team0, изменив логические имена интерфейсов:

 
[root@vm-02 ~]# nmcli connection add type team-slave ifname ens3 con-name team0-slave1 master team0 
Connection 'team0-slave1' (a52a979d-a1de-4274-824b-553a43123dc8) successfully added.
[root@vm-02 ~]# nmcli connection add type team-slave ifname ens10 con-name team0-slave2 master team0 
Connection 'team0-slave2' (6bc3886a-3e28-4079-a8c1-10f64a98f41c) successfully added.
[root@vm-02 ~]#

Выключаем обычные интерфейсы:

 
[root@vm-02 ~]# nmcli connection down ens3
[root@vm-02 ~]# nmcli connection down ens10

Затем включаем логические интерфейсы team-slave:

[root@vm-02 ~]# nmcli connection up team0-slave1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@vm-02 ~]# nmcli connection up team0-slave2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

И сам интерфейс team0:

[root@vm-02 ~]# nmcli connection up team0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@vm-02 ~]#

Проверяем:

[root@vm-02 ~]# ip addr show dev team0
4: team0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 52:54:00:12:f1:62 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.34/24 brd 192.168.122.255 scope global dynamic team0
       valid_lft 3559sec preferred_lft 3559sec
    inet6 fe80::5054:ff:fe12:f162/64 scope link tentative dadfailed
       valid_lft forever preferred_lft forever
[root@vm-02 ~]# nmcli connection show
NAME          UUID                                  TYPE            DEVICE 
team0         8a65d66e-d970-4d15-a8a2-f7214a627e3d  team            team0  
ens10         d95a3145-91f8-4e9d-8219-975da848f2e7  802-3-ethernet  --     
ens3          427963c7-c016-417a-a542-7738fd158922  802-3-ethernet  --     
team0-slave2  fda464ee-eacb-40f1-bc95-674513a976e1  802-3-ethernet  ens10  
team0-slave1  7e21373e-8707-4fc3-8369-8dc677929b9e  802-3-ethernet  ens3   
[root@vm-02 ~]# nmcli connection show team0 | grep team
connection.id:                          team0
connection.interface-name:              team0
connection.type:                        team
team.interface-name:                    team0
team.config:                            {       "device":               "team0",        "runner": {             "name": "loadbalance",          "tx_hash": ["eth", "ipv4", "ipv6"]      },      "ports":                {"ens3": {}, "ens10": {}} }
GENERAL.NAME:                           team0
GENERAL.DEVICES:                        team0
[root@vm-02 ~]#

bonding

Настройка интерфейсов

Настройка производится при помощи NetworkManager.

Предположим, что у нас имеются интерфейсы:

[root@vm-02 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:69:43:af brd ff:ff:ff:ff:ff:ff
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:12:f1:62 brd ff:ff:ff:ff:ff:ff
[root@vm-02 ~]#

Создаем интерфейс bond0 работающий в режиме active-backup

[root@vm-02 ~]# nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup
Connection 'bond0' (806fe25b-0cfc-47ee-bfd3-ae589d7a4849) successfully added.
[root@vm-02 ~]#

Создадим логические интерфейсы, которые будут включены в bonding

[root@vm-02 ~]# nmcli connection add type bond-slave ifname ens3 con-name bond0-slave1 master bond0
Connection 'bond0-slave1' (5ebca4b8-56f7-4817-93bf-6d404268be88) successfully added.
[root@vm-02 ~]# nmcli connection add type bond-slave ifname ens10 con-name bond0-slave2 master bond0
Connection 'bond0-slave2' (ebff6a11-7f93-4186-96ab-421d472b7005) successfully added.

Включаем их, предварительно убедившись, что соединение на физических интерфейсах выключено:

[root@vm-02 ~]# nmcli connection up bond0-slave1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)
[root@vm-02 ~]# nmcli connection up bond0-slave2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/16)
[root@vm-02 ~]# nmcli connection up bond0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/17)

Проверяем:

[root@vm-02 ~]# nmcli connection show
NAME          UUID                                  TYPE            DEVICE
bond0         806fe25b-0cfc-47ee-bfd3-ae589d7a4849  bond            bond0
bond0-slave2  ebff6a11-7f93-4186-96ab-421d472b7005  802-3-ethernet  ens10
ens10         d95a3145-91f8-4e9d-8219-975da848f2e7  802-3-ethernet  --
ens3          427963c7-c016-417a-a542-7738fd158922  802-3-ethernet  --
bond0-slave1  5ebca4b8-56f7-4817-93bf-6d404268be88  802-3-ethernet  ens3
[root@vm-02 ~]# ip addr show dev bond0
7: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 52:54:00:69:43:af brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.179/24 brd 192.168.122.255 scope global dynamic bond0
       valid_lft 3481sec preferred_lft 3481sec
    inet6 fe80::5054:ff:fe69:43af/64 scope link
       valid_lft forever preferred_lft forever
[root@vm-02 ~]#

Ссылки

Настройка Bonding'а
Настройка Teaming'а