RHEL/CentOS 7 üzərindən teaming
Bu günki məqaləmizdə, RHEL/CentOS 7 ailəsinə mənsub olan linux distributivləri üzərindən şəbəkə interfeyslərinin teaming-i ( başqa dildə desək – bonding. etherchannel və s.) ilə tanış olacağıq. Teaming, 2 və daha artıq fiziki şəbəkə portunun vahid virtual adapter kimi təyin olunmasına imkan verir ki , bu da seçilmiş iş rejimindən asılı olaraq, hər hansı şəbəkə adapterində və ya switchə gedən yolda problem çıxarsa, traffikin mövcud aktiv kanal üzrə ötürülməsinə yardımçı olacaq və ya mövcud traffikin 2 interfeys arasında load-balancing vasitəsilə bölgüsünə nail olacaq.
RHEL 7 ailəsinə mənsub olan ƏS-ləri, teaming-in aşağıdakı iş rejimləri ( runners) üzrə sazlanmaları dəstəkləyir:
- broadcast – Trafik eyni anda bütün interfeyslər üzrə göndərilir;
- round-robin – Trafik növbəli rejimdə bütün interfeyslər üzrə göndərilir;
- activebackup – Teaming-də sazlanmış fiziki intefeyslərdən yalnız 1-i aktiv rejimdə traffik göndərir, digər interfeyslər gözləmə rejimində olurlar və aktiv interfeysdə xəta baş verdikdə aktivləşir;
- loadbalance– Traffikin interfeyslər arasında yüklənmə həcminə görə bölünməsi.
- lacp – LACP protokolu vasitəsilə teaming;
Biz 2 iş rejiminin sazlanmasına baxacağıq:
- active-backup – Bu rejimin işləməsi üçün switch tərəfində heç bir sazlanmaya ehtiyac yoxdur. Rejim, mövcud şəbəkə interfeyslərindən yalnız 1-ni trafikin göndərilməsi üçün istifadə edir, digər sazlanmış interfeyslər gözləmə rejimində olurlar. ( failover)
- LACP – IEEE tərəfindən təsdiqlənmış standarta əsasən teaming sazlanması. ƏS-dən əlavə, switchdə də müəyyən işlərin görülməsi zəruridir.
Istifadə olunan mühit:
ƏS: virtsrv.technet.local, CentOS 7 x86_64, 2 fiziki adapter
Switch: Cisco switch, 3560
Ilk öncə, CentOS ƏS-ni teaming hazırlayacağıq. Bunu faktiki 1 neçə metodla etmək mümkündür, biz nmcli aləti vasitəsilə bunu edəcəyik. Lazımı paketleri yükləyirik:
[[email protected] ~]# yum install teamd NetworkManager -y
Active-backup
Mövcud fiziki şəbəkə interfeyslərinə baxırıq:
[[email protected] ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000 link/ether e4:1f:13:b3:8a:74 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000 link/ether e4:1f:13:b3:8a:74 brd ff:ff:ff:ff:ff:ff
Gördüyümüz kimi, 2 şəbəkə adapterimiz mövcuddur eth0, eth1. Yeni team0 adlı master team interfeysi yaradırıq, static İP təyin edirik və iş rejimi kimi, activebackup rejimini seçirik :
[[email protected] ~]# nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name": "activebackup"}}' ip4 192.168.122.50/24 gw4 192.168.122.1 Connection 'team0' (a9f0ecb3-13f3-4fe4-8ec9-d04fd391c314) successfully added. [[email protected] ~]# nmcli connection modify team0 ipv4.method manual
Yeni yaratdığımız virtual team interfeysinə qoşulacaq slave fiziki interfeysləri sazlayırıq:
[[email protected] ~]# nmcli connection add type team-slave con-name team0_port0 ifname eth0 master team0 Connection 'team0_port0' (b43bb7cc-2dca-41af-83ee-85003e43f6a5) successfully added. [[email protected] ~]# nmcli connection add type team-slave con-name team0_port1 ifname eth1 master team0 Connection 'team0_port1' (758b4627-2d36-49d5-a905-c5032af4f556) successfully added.
Ardınca yeni yaradılmış interfeysləri reset etməklə team interfeysinin sazlanmasını bitmiş hesab etmək olar:
[[email protected] ~]# nmcli connection down team0_port0 && nmcli connection up team0_port0 Connection 'team0_port0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/33) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/35) [[email protected] ~]# nmcli connection down team0_port1 && nmcli connection up team0_port1 Connection 'team0_port0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/33) Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/35)
teamdctl əmri vasitəsilə team interfeyslərinin statusuna baxa bilərik.
[[email protected] ~]# teamdctl team0 state setup: runner: activebackup ports: eth0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up eth1 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up runner: active port: eth1
Gördüyünüz kimi, active-backup rejimində interfeyslərdən yalnız 1-i aktiv olur – bizim misalımızda, eth0 . Həmin interfeysi deaktiv etməklə, şəbəkədə problem simulyasiya edək digər interfeysin aktiləşməsini yoxlaya bilərik:
[[email protected] ~]# nmcli device disconnect eth1 Device 'eth1' successfully disconnected. [[email protected] ~]# teamdctl team0 state setup: runner: activebackup ports: eth0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up runner: active port: eth0
Gördüyünüz kimi, active interfeys digər porta keçirildi.
LACP vasitəsilə teaming.
İlk öncə, Cisco switchində portların sazlanmasını həyata keçiririk.
Press RETURN to get started. TESTSW#configure terminal Enter configuration commands, one per line. End with CNTL/Z. TESTSW(config)#interface range g0/9 - 10 TESTSW(config-if-range)#no shutdown TESTSW(config-if-range)#channel-group 1 mode passive Creating a port-channel interface Port-channel 1 TESTSW(config-if-range)#end TESTSW#show etherchannel 1 summary ………………………………………………... Number of channel-groups in use: 1 Number of aggregators: 1 Group Port-channel Protocol Ports ------+-------------+-----------+----------------------------------------------- 1 Po1(SU) LACP Gi0/9(P) Gi0/10(P)
Ardınca CentOS 7 ƏS-ndə yeni team interfeys yaradırıq və iş rejimini lacp göstəririk, müvafiq slave interfeysləri təyin edirik və interfeysi aktivləşdiririk:
[[email protected] ~]# nmcli connection add con-name team0 type team ifname team0 config '{"runner":{"name": "lacp"}}' ip4 192.168.122.50/24 gw4 192.168.122.1 [[email protected] ~]# nmcli connection add type team-slave con-name team0_port1 ifname eth1 master team0 Connection 'team0_port1' (a8f882ba-181c-43f4-932d-fcfc0493bd0a) successfully added. [[email protected] ~]# nmcli connection add type team-slave con-name team0_port0 ifname eth0 master team0 Connection 'team0_port0' (3a8464cf-0eba-42b2-9518-fb7639183bf5) successfully added. [[email protected] ~]# nmcli connection up team0_port0 && nmcli connection up team0_port1
teamdctl vasitəsilə interfeysin statusuna baxırıq:
[[email protected] ~]# teamdctl team0 state setup: runner: lacp ports: eth0 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up runner: aggregator ID: 3, Selected selected: yes state: current eth1 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up runner: aggregator ID: 3, Selected selected: yes state: current runner: active: yes fast rate: no
Bununla da teaming sazlanmasını bitmiş hesab etmək olar.
Fərid Səmədov | CISM, CISSP, RHCE, MCITP
Şərhlər ( 3 )
Fərid əlinizə sağlıq. Gözəl məqalə alinib. Centos 6 ile 7 arasinda command syntax fərqinin cox oldugunu anlaşılır 🙂
Çox faydalı məqalədi.Sağolun Fərid müəllim
Fərid bəy çox gözəl mövzudur. Təşəkkürlər.