Network teaming or bonding — различия между версиями

Материал из pNp Wiki
Перейти к: навигация, поиск
(Новая страница: «== Аггрегирование интерфейсов: teaming или bonding == ==== Предварительные требования ==== * Виртуал…»)
 
Строка 70: Строка 70:
 
"ports": {"ens3": {}, "ens10": {}}
 
"ports": {"ens3": {}, "ens10": {}}
 
}
 
}
 +
[root@vm-02 ~]#
 +
</syntaxhighlight>
 +
Погасим второй интерфейс:
 +
<syntaxhighlight lang="bash">
 +
[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 
 +
</syntaxhighlight>
 +
Теперь создадим интерфейс с именем <code>team0</code>:
 +
<syntaxhighlight lang="bash"> 
 +
[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 ~]#
 +
</syntaxhighlight>
 +
Теперь добавим физические интерфейсы <code>ens3</code> и <code>ens10</code>, к нашему интерфейсу <code>team0</code>, изменив логические имена интерфейсов:
 +
<syntaxhighlight lang="bash">
 +
[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 ~]#
 +
</syntaxhighlight>
 +
Выключаем обычные интерфейсы:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-02 ~]# nmcli connection down ens3
 +
[root@vm-02 ~]# nmcli connection down ens10
 +
</syntaxhighlight>
 +
Затем включаем логические интерфейсы <code>team-slave</code>:
 +
<syntaxhighlight lang="bash">
 +
[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)
 +
</syntaxhighlight>
 +
И сам интерфейс <code>team0</code>:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-02 ~]# nmcli connection up team0
 +
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
 +
[root@vm-02 ~]#
 +
</syntaxhighlight>
 +
Проверяем:
 +
<syntaxhighlight lang="bash">
 +
[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 ~]#
 
[root@vm-02 ~]#
 
</syntaxhighlight>
 
</syntaxhighlight>

Версия 15:55, 22 ноября 2017

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

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

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

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

Настройка производится при помощи 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 ~]#