Linux Üzerinde Network Bonding Nedir, Nasıl Yapılır (Rhel ve türevleri için)

Home » Linux » Linux Üzerinde Network Bonding Nedir, Nasıl Yapılır (Rhel ve türevleri için)
Linux Yorum yapılmamış

Öncelikle bu anlatımı Redhat/Centos/Fedora dağıtımları için yaptığımı belirteyim. Fakat freebsd’de desteklenmiyor mu, yada debian ve türevine yapılamaz mı endişelerine düşmenize gerek yok, zira hepsinde bu mantığa yer verilmekte.

Rhel ve türevleri için,
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-networkscripts-interfaces-chan.html
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/ch-Configure_Network_Bonding.html

Örneğin freebsd için,
https://www.freebsd.org/doc/handbook/network-aggregation.html
http://www.cyberciti.biz/faq/freebsd-network-link-aggregation-trunking/
http://taosecurity.blogspot.com.tr/2004/04/interface-bonding-on-freebsd-question.html

Debian ve türevleri için,
https://wiki.debian.org/Bonding
http://www.tokiwinter.com/configuring-interface-bonding-on-debian-wheezy/

Öncelikle Bonding Nedir Onu Öğrenelim ?
Bir nevi network teaming görevini gören aslında sunucu üzerinde birden fazla interface/network kartının tek bir network’müş gibi tanınarak bağlantıları köprüleme mantığını ifade etmektedir.

Bu mantığın kullanım alanlarına örnek verelim,
– Örneğin yedekli 2 adet switch arkasında sunucumuz var. Switch’lerden 1’er adet kablo sunucumuza geliyor. Bu doğrultuda iki adet ethernet kartını tek bir ethernet kartıymış gibi çalıştırabiliriz ve böylelikle tek bir switch veya interface üzerinde problem oluşması halinde network kesintisi olmadan çalışmaya devam edecektir. Tabi mantığı öğrendikten sonra isterseniz 5 switch arkasındaki sunucuda bile yapabilirsiniz.

Burada tek yaptığımız sistemde tanımlı kaç adet ethernet kartı varsa bunu tek bir ethernet interface’iymiş gibi tanıtıyoruz ve load balance mantığında çalışılabilirliği sağlanıyor.

Yapılandırmaya Geçelim,

– Önce ifconfig çıktımı alıyorum,

Görüldüğü üzere 2 adet eth kartım var. Bunlar,
eth0 –> 192.168.1.2
eth1 –> IP Yok

IP Subnet Bilgilerim,
192.168.1.0/24
Gw –> 192.168.1.1

Amacım;
Bond interface’i oluşturmak ve ana kullanacağım olan 192.168.1.2 ip adresini bu bond interface’ine vermek, sonrasında diğer iki eth0 ve eth1 interface’lerimi bu bond interface’ine bağlayarak herhangi biri down olduğunda yine aynı ip adresi üzerinden diğerinin çalışmasını sağlamak..

Şimdi bu bilgiler ışığında bonding interface’ini oluşturalım. Önce ilgili dizinime gidiyorum ve dosyamı oluşturuyorum,

Şimdi ise oluşturduğum “ifcfg-bond0” (bond sıfır) dosyamı editör yardımı ile açıyorum ve aşağıdaki satırları yazıyorum,

Şimdi bond0 dosyamı oluşturduğuma göre diğer interface’lerime girerek düzenleyebilirim.

-Önce eth0 dosyasını aşağıdaki gibi düzenliyorum,

-Aynı şekilde eth1 dosyasını aşağıdaki gibi düzenliyorum,

Network tarafında interface yapılandırmalarını bitirdik. Şimdi modprobe altında bond için konfig dosyasını oluşturalım ve aşağıdaki satırları içerisine ekleyelim,

### Eklenecek Satırlar ###

Sonrasında konfigürasyonu aktif hale getirerek network servislerini yeniden başlatalım,
modprobe bonding
service network restart

Önemli,

Burada bonding.conf içerisine girdiğim satırları açıklamaya çalışayım. Zira işin kritik noktası aslında burada duruyor.

Öncelikle bonding.conf içerisinde yer alan terimlerin/komutların ne anlama geldiğini belirteyim,
bond0 = Oluşturulan yeni bond interface adı.
miimon = İnterface’in durumunu milisaniye oranında ne kadar kontrol edeceği belirtilir.
mode = Bond yapısının çalışma mantığı ile ilgilidir.

Birçok mode çeşiti var ve bu mode çeşitleri ile bir çok şey yapmak mümkün. Önce bu mode’lar neler ve ne işe yarar bunu göstereyim, sonrasında neden “mod=0” kullandığımızı anlayacağınızı tahmin ediyorum.

Mod 0 (denge-rr)
Bu mod yük dengelemesi sağlayarak paketlerin round robin mantığında sıra ile iletilmesini sağlar. Aynı zamanda hata toleransı sağlar.

Mod 1 (aktif-pasif)
Bu mod bir yedekleme sisteminde çalışarak linklerden birinin down olması halinde diğerini up duruma getirmesini sağlayarak çalışmaktadır. Aynı şekilde bu mod’da hata tolefansı sağlamaktadır.

Mod 2 (denge-xor)
XOR formüle dayalı olarak paketleri iletir. Bu modda paketler kaynak MAC adresi ve hedef MAC adresi ile handle edilir. Tüm hedef MAC adresleri için aynı aynı istemciyi seçer ve yük dengeleme ve hata toleransı sağlar.

Mod 3 (yayın)
Bu mod ile tüm interfaceler üzerinden paketler iletilir. Bu mod genelde sık kullanılmaz (sadece belirli bir amaçlar için kullanılır). Diğer modlar gibi hata tolefansı sağlamaktadır.

Mod 4 (802.3ad)
Bu mod Dinamik Bağlantı Toplama modu olarak bilinir. Hız ve çift yönlü çalışma grupları mantığında kullanılır. Bu modu kullanabilmek için anahtarlama cihazı üzerinde IEEE 802.3ad Dinamik bağlantı protokolü desteklemesi gerekmektedir.

Mod 5 (denge-tlb)
Bu mod üzerinde yük dengeli bir biçimde dağılmaktadır (tıpkı mod0’daki gibi).. Giden ve Gelen trafikler mevcutta aktif bulunan interface’ler tarafından karşılanarak iletişim yapılmaya sağlanır.

Mod 6 (denge-alb)
Bu modda aynı şekilde yük dengelemesini sağlayarak giden ve gelen trafik için (arp paketleriyle müzakere yöntemi ile..) istikrar göstermektedir. Özel bir anahtarlama yapısı gerekmeden IPv4 üzerinde bu işlemi gerçekleştirir. Fakat hata toleransı olmadığı için arka tarafta problemlere neden olmaktadır.

Modprobe Nedir ?
Kernal’a yeni bir modül yüklemek için insmod veya modprobe kullanılır. Biz modprobe’u burada bond yapısı için kullanıyoruz. Detaylı bilgi için,
http://www.belgeler.org/man/man8/man8-modprobe.html
http://en.wikipedia.org/wiki/Modprobe
Sonrasında sistemimiz üzerinde tekrar ifconfig komutunu veriyoruz ve sonucu görüyoruz,
(ben filtreleyerek veriyorum, zira şu an bir çok int. mevcut)

Artık bu aşamadan sonra sunucu üzerinde herhangi interface’i down duruma getirerek test işlemini gerçekleştirebilirsiniz. Bende mod0 başarılı bir şekilde çalışıyor ve gayet hayatımdan memnunum.