Linux TEQL
Linux outgoing loadbalancing , yazımda anlattığım gibi bir yapı hemen hemen heryerde, ihtyaçlarınızı karşılayabilsede, kullanabileceğiniz tek yöntem bu değildir. Linux TEQL ( True link Equalizer ) kullanabileceğimiz diğer seçeneklerden birisidir. Özellikle LACP ( 802.3ad ) desteklemeyen bir switch’iniz varsa hatta local network de iki linux server in birbirleri arası haberleşmelerinde ethernet performansını paylaştırabilemek için oldukça uygun bir yöntem olabilir. örnek network yapısı verecek olursak :


şimdi TEQL nasıl çalışır bir göz atalım.

Yandaki resimde görüldüğü üzere 2 adet ethernet interface’imizi TEQL kullanarak birleştirmek mümkündür. Eth1 ve Eth2 interface’lerini kapsayan teql0 adlı yeni bir interface oluşturulur ve yeni bir ip adresi tanımlanır. tanımlanan ip adresi local network den ulaşılabildiği gibi dışarıya erişim içinde kullanılabilir. Her bir bağlantı isteğini eth1 ve eth2 arasında sırasıyla dağıtarak toplam bant genişliğini kullanma imkanı sağlar. TEQL sadece linux kerneline özel bir uygulamadır. Diğer işletim sistemlerinde bulunmaz.TEQL iproute2 paketi ile birlikte gelir.
1. Teql module’ünü yükleyelim. Interface’imizin oluştuğunu doğrulayalım.
root@linux:~# modprobe sch_teql root@linux:~# ifconfig teql0 teql0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@linux:~#
2. Eth1 ve Eth2 Interface’lerini teql’e dahil edelim.
root@linux:~# tc qdisc add dev eth1 root teql0 root@linux:~# tc qdisc add dev eth2 root teql0 root@linux:~#
3. Eth1 ve Eth2 Interface’lerinin teql interface’ine dahil olduğundan emin olalım.
root@linux:~# tc qdisc show qdisc teql0 8001: dev eth1 root qdisc teql0 8002: dev eth2 root qdisc pfifo_fast 0: dev eth3 root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1 root@linux:~#
4. Teql0'e ip adresimizi atayalım.
root@linux:~# ifconfig teql0 192.168.1.1 netmask 255.255.255.0 root@linux:~#
5. IP Adreslerinin doğru olduğunu kontrol edelim.
root@linux:~# ifconfig -aeth1 Link encap:Ethernet HWaddr 08:00:27:1f:0a:b7inet addr:192.169.1.2 Bcast:192.169.1.255 Mask:255.255.255.0inet6 addr: fe80::a00:27ff:fe1f:ab7/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:6 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:468 (468.0 B)eth2 Link encap:Ethernet HWaddr 08:00:27:ad:66:d0inet addr:192.169.1.3 Bcast:192.169.1.255 Mask:255.255.255.0inet6 addr: fe80::a00:27ff:fead:66d0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:3 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:238 (238.0 B)eth3 Link encap:Ethernet HWaddr 08:00:27:d8:6a:d3inet addr:10.1.30.86 Bcast:10.1.30.255 Mask:255.255.255.0inet6 addr: fe80::a00:27ff:fed8:6ad3/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:710 errors:0 dropped:0 overruns:0 frame:0TX packets:267 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:84210 (84.2 KB) TX bytes:34303 (34.3 KB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)teql0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0UP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:100RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)root@linux:~#
6. Ağ geçidimiz Local network’de bir makina ise teql0 interface’i için ağ geçidini girelim . ( daha önceden girilmiş ağ geçidi varsa siliniz.
root@linux:~# ip route add default via 192.168.1.254 dev teql0root@linux:~#
7. “ tc -s qdisc ” komutu ile yapmış olduğumuz işlemi kontrol edebilirsiniz.
Notlar :
- İki interface bir birine eşit olmadığı durumlarda gerçekten büyük performans sorunu yaşayabilirsiniz.
- Teql’e dahil ettiğiniz interface’lerden birisi fail olursa çok büyük performans sıkıntısı yaşandığı konusunda şikayetler var. Mümkün olduğunca local network içerisinde kullanın.
- Başıma gelmedi ama bağlı olduğunuz switchde STP’ile ilgili sorun yaşayabilirsiniz.
- eth1 ve eth2 gibi teql’e eklediğiniz interface’ler cevap vermezse aşağıdaki işlemi uygulayınız.
- Tek bir socket bağlantısı için TEQL ektra bir performans avantajı sağlayamaz.