Linux Bonding

Bonding Linux için kullanılan terimdir. Diğer işletim sistemlerinde Teaming (Windows), Network dünyasında Trunking olarak bilinmektedir. Bonding birden fazla Network interface (NIC)’in bir mantıksal gurup olarak tek bir interface olarak kullanablmemize olanak sağlar. Bonding yedeklilik sağladığı gibi, band genişliğini (load balancing) artırmak için de kullanılabilmektedir.

Bonding için 7 mod kulanılmaktadır;

mode = 0 (balance-rr) Round-robin olarak çalışır, Yük paylaşımı ve hata toleransı sağlar.

mode = 1 Aktif-yedek mantığı ile çalışır. Sadece bir interface aktiftir. Pasif olan sadece ve sadece asıl olan çalışmaz ise devreye girer. Hata toleransı sağlar.

mode=2 IEEE 802.3ad Dynamic link aggregation. Belirtilen standarda göre çalışır. Çalışması için sürücülerinin ethtool desteğinin olması gerekir. Ayrıca anahtarlama cihazı üzerinde de 802.3ad ayarlarının yapılması gerekir.

mode=3 Broadcast çeşididir. Tüm paketleri tüm interfacelerden gönderir. Hata toleransı sağlar.

mode = 4 (802.3ad) IEEE 802.3ad Dynamic link aggregation aynı hız ve çift yönlü paylaşan gruplar oluşturur. 802.3ad protokol’une göre tum slave interfaceler aktif olarak kullanılır.

mode = 5 Bu modda ise toplam yük her interfacenin kendi yüküne göre paylaşılır. Her interface yükü hızına oranla ölçülür. Gelen trafik aktif ilk interface tarafından alınır. Eğer bu interface çalışmaz ise herhangi diğer bir interface aynı MAC adresi ile işlemi devralır. Çalışması için sürücülerinin ethtool desteğinin olması gerekir.

mode=6 Bu modda ise hem gidiş hem de geliş trafiği yük paylaşımı yapılır ve özel bir anahtarlama cihazı desteği gerektirmez.

Bonding Yapılandırma adımları;  

  1. Öncelikle NetworkManager servisimizi durduruyoruz.
# systemctl stop NetworkManager
# systemctl disable NetworkManager

2. bond0 adından sanal bir interface oluşturuyoruz. Herhangi bir network kartına bir ip verilmiş ise bunarı silmemiz gerek.

[root@sourcegg ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE="bond0"
IPADDR=150.150.100.5
NETMASK=255.255.255.0
GATEWAY=150.150.100.2
DNS1=8.8.8.8
DNS2=1.1.1.1
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimon=100"

3. bond0 interface hangi network kartlarına işlem ypacaksa o network kartlarının yapılandırmasını yapmalıyız. Benim durumunda ens33 ve ens38 network kartlarını mode=1 olarak bond0 a eklemek istiyorum.

# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
NAME=ens33
UUID=ce429456-afcc-497a-b762-7ca03937937a
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=no
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
USETCTL=no
HWADDR=00:0C:29:3F:45:30

# cat /etc/sysconfig/network-scripts/ifcfg-ens38
TYPE=Ethernet
NAME=ens38
DEVICE=ens38
ONBOOT=yes
BOOTPROTO=no
MASTER=bond0
SLAVE=yes
NM_CONTROLLED=no
USETCTL=no
HWADDR=00:0c:29:3f:45:44

4. Bond alias ve conf dosyasını yapılandıralım. Eğer iki bonding yapılcaksa iki alias vermeliyiz

# cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
alias netdev-bond0 bonding

5. Bonding aktifleştirmesini sağlayalım

# modprobe bonding
# systemctl restart network

Kontrol edelim

# cat  /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:45:30
Slave queue ID: 0

Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:45:44
Slave queue ID: 0

Bonding durumu için

# watch cat /proc/net/bonding/bond0

Every 2.0s: cat /proc/net/bonding/bond0                                       Thu Feb 11 12:15:11 2021

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:45:30
Slave queue ID: 0

Slave Interface: ens38
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:45:44
Slave queue ID: 0