Bonding (Bağ) nedir? Linux’ta Bonding kurulumu

Share

linux bonding

Bugünkü yazımda, Linux İşletim Sisteminde Network yedekliliği (redundant links, fault tolerance) olarak bilinen Linux Bonding konusu hakkında bilgilendirme yapacağım.
Bonding (Bağ) Linux için kullanılan terimdir. Diğer işletim sistemlerinde Teaming (Windows), Network dünyasında Trunking olarak bilinmektedir.

linux bonding

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 networks)artırmak için de kullanılabilmektedir.

Bonding için kullanılan 7 mod kulanılmaktadır, Kullanılan Mod’a bağlı olarak Bonding Layer 2 veya Layer 3 OSI Network katmanında kullanılmakta.

mode = 0 (balance-rr)
Round-robin politikası: Paketler iletilirken sırası ile ilk kullanılabilir slave interface üzerinden ve guruptaki son slave interface uzerinden gonderilir. Bu mod tipi paket geçişlerinde yük dengeleme ve hata toleransı sağlar.

mode = 1 (active-backup)
Aktif-yedek politikası: Bond interface sadece bir aktif slave interface bulunur. Eğer aktif slave interface başarısız olursa, aktif olmayan slave interface, Aktif Slave olarak Bonding interface tarfiği taşir.  Switch tarafında karışıklığı önlemek için Bonding Interface’in MAC tek port olarak gorunur. Bu mod hata toleransı sağılar. Birincil (Aktif Slave Interface) seçenek Bu modda davranışını etkiler.

mode=2 (balance-xor)
XOR politikası: Trafik Kaynak MAC ile hedef MAC adresi için XOR Modulune dayalı trafiği iletir. Boylece, her hedef MAC adresi aynı kaynak MAC addresli Slave interface seçer. Bu mod yük dengeleme ve hata toleransı sağlar.

mode = 3 (broadcast)
Yayın politikası: Tüm slave interfaceler her şeyi iletir. Bu mod 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 interfacler aktif olarak kullanılır.

NOT: Bu mod için Switch’in IEEE 802.3ad Dynamic Link aggregation desteklemsi ve enable edilmesi gerekmektedir.

mode = 5 (balance-tlb)
Adaptive transmit load balancing: Bonding için herhangi bir özel anahtar desteği gerektirmez. Giden trafik her slave interface (computed relative to the speed) mevcut yüküne göre dağıtılır. Gelen trafik mevcut slave interface tarafından alınır. Alıcı slave interface başarısız olursa, başka bir slave interface başarısız olan Slave interface MAC adresi üzerinden alır.

mode=6 (balance-alb)
Adaptive load balancing (Adaptif yük dengeleme): Trafik dengeleme ARP negotiation (müzakere) ile elde edilir.

NOT: Coğunlukla ilk 4 mod kullanılmkatadır.

[easy_ad_inject_1]

Linux’ta tek (single) interface’te olduğu gibi Bonding interfacelerde sorunsuz olarak VLAN (802.1q) desteği vardır. Bu yazımda VLAN desteği anlatılmayacaktır. Ilgileneler olursa yorum yazarak bana geri dönüş yapabilrler. Ayri bir yazimda detaylandirmay çalışabilirim.

NOT: Aynı sistemde birden fazla bond interface kullanılabilir ancak Bond interface ayarlarının dikkatki bir sekilde yapılması gerekmektedir.

Örneğin, iki bond interface için /etc/modules.conf veya /etc/modprobe.d/bonding.conf dosyası aşağıdakı gibi konfigure edilmelidir;

alias bond0 bonding
options bond0 -o bond0 mode=0 miimon=100
alias bond1 bonding
options bond1 -o bond1 mode=1 miimon=100

Bugunku örneğimiz, Redhat 6.5 uzerinde iki interface eth0 ev eth1’in bond0 olarak konfigurasyonu incelenerek anlatılacaktır;

Ilk olarak bond0 interface dosyası ifcfg-bond0 dosyasını olsuturuyoruz;

[root@mars ~]# cd /etc/sysconfig/network-scripts/
[root@mars network-scripts]# vi ifcfg-bond0
[root@mars network-scripts]# cat ifcfg-bond0
DEVICE=bond0
IPADDR=192.168.158.200
NETMASK=255.255.255.0
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
USERCTL=no

Bond0 configurasyonu yukarıdakı gibi olusturulduktan sonra, sırası ile eth0 ve eth1 config dosyalarını aşaıdakı gibi bond0 interface slave olarak tanımlıyoruz;

[root@mars network-scripts]# vi ifcfg-eth0
[root@mars network-scripts]# cat ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
[root@mars network-scripts]# vi ifcfg-eth1
[root@mars network-scripts]# cat ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes

Gerekli network interface config dosyaları güncellendikten sonra, Bonding ayarlarının yapılması gerekmektedir;

mod=active-backup olarak seçilmiştir, Yukarıda belirtilen 7 mod’ tan sizin ihtiyacınıza göre değiştirebilrsiniz.

[root@mars network-scripts]# vi /etc/modprobe.d/bonding.conf
[root@mars network-scripts]# cat /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=active-backup miimon=100 downdelay=200 updelay=200
[root@mars network-scripts]#

yapmis oldugumuz ayarların aktif edilebilmesi için; network servisinin restart edilesi gerekektedir.

NOT: Redhat 6.x ile bilikte network servisi yanında NetworkManager servisi de aktif olarak gelmektedir. Sunucu ortamındakı kullanımlarda bu servisi devre dışı baırakmak gerekmeketedir.

[root@mars ~]# chkconfig --list NetworkManager
NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@mars ~]# chkconfig NetworkManager off
[root@mars network-scripts]# service network restart
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: Determining if ip address 192.168.158.200 is already in   use for device bond0...  [ OK ]

Son işlem olarak yeni oluşturmuş olduğumuz Bond0 interface’i ifconfig -a veya ifconfig bond0 komutları ile kontrol edebiliriz;

[root@mars ~]# ifconfig bond0
bond0 Link encap:Ethernet HWaddr 00:0C:29:FE:D5:C8
 inet addr:192.168.158.200 Bcast:192.168.158.255 Mask:255.255.255.0
 inet6 addr: fe80::20c:29ff:fefe:d5c8/64 Scope:Link
 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
 RX packets:89555 errors:0 dropped:0 overruns:0 frame:0
 TX packets:86486 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:0
 RX bytes:5505331 (5.2 MiB) TX bytes:4700513 (4.4 MiB)

Bond0 interface ile ilgili daha detay bilgi gorebilrmek için  /proc/net/bonding/bond0 dosyası kontrol edebiliriz;

[root@mars ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fe:d5:c8
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:fe:d5:d2
Slave queue ID: 0
[root@mars ~]#

 

 

One thought on “Bonding (Bağ) nedir? Linux’ta Bonding kurulumu

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.