Network teaming or bonding — различия между версиями
Andy (обсуждение | вклад) (Новая страница: «== Аггрегирование интерфейсов: teaming или bonding == ==== Предварительные требования ==== * Виртуал…») |
Andy (обсуждение | вклад) |
||
Строка 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 ~]#