On Fri, Sep 24, 2010 at 02:16:36PM +0700, Bambang Sumitra wrote: > rekan-rekan, > saya ada rencana mau buat topologi seperti ini > isp-1 isp-2 > | | > | | > +--- Linux ------+ > Centos > | > | > switch > | > | > Clients > > * di linux centos ada squid proxy dengan settingan transparent > > jadi di linux centos itu mau saya buat load balance multi isp, untuk > load balancenya rencana saya ikuti dari link ini > http://tetro.net/misc/multilink.html cuma dari info yang saya dapat > dari beberapa link google, walaupun kita setting load balance, untuk > koneksi squid internal hanya akan memakai default gateway aja ( tidak > ikut load balance ). apakah emang seperti itu? atau di squid bisa di > atur juga supaya bisa load balance?
Kalau pakai squid internal yang jadi satu dengan mesin router bisa pakai metode loadbalancing seperti yang ditulis di http://lartc.org/howto/lartc.rpdb.multiple-links.html Masalahnya adalah jika kita koneksi ke suatu situs yang menuntut agar client agar selalu menggunakan wan yang sama (persistent connection), maka metode load balancing ini tidak bisa dipakai. Hal ini mengingat router hanya menyimpan atau cache table routing ke suatu ip remote dalam periode tertentu, setelah timeout akan dibuat table routing baru. Jika beruntung, bisa jadi table routing ini akan melalui wan yang sama seperti sebelumnya, jika tidak maka akan melalui wan yang berbeda. Trik agar koneksi ke suatu ip remote selalu melalui wan yang sama adalah dengan menggunakan ipset. Trik ini saya peroleh setelah mengamati load balancing pcc (per connection classifier) di mikrotik. /usr/local/sbin/lb-pcc-lokal.sh: -------------------------------- #!/bin/sh # File: lb-pcc-lokal.sh # # ROUTING KONEKSI LOKAL # DARI MESIN PROXY # DESTINATION: # - TCP PORTS 1:1024,3128,8080 # - UDP PORTS 1700:1800 (vpn) # # # Created: 24/07/10 # CREATE IPSET # set dst.1 untuk menyimpan ip remote yang akan dilewatkan ke wan1 # set dst.2 untuk menyimpan ip remote yang akan dilewatkan ke wan2 # # ipset -N dst.1 iphash --probe 2 # ipset -N dst.2 iphash --probe 2 # PARAMETER IPTABLES="/usr/local/sbin/iptables" IPSET="/usr/local/sbin/ipset" PROTO="tcp" PORTS="1:1024,3128,8080" LAN="192.168.0.0/16" # # Flush table OUTPUT # $IPTABLES -t mangle -F OUTPUT > /dev/null 2>&1 $IPTABLES -t mangle -F DST.1 > /dev/null 2>&1 $IPTABLES -t mangle -X DST.1 > /dev/null 2>&1 $IPTABLES -t mangle -F DST.2 > /dev/null 2>&1 $IPTABLES -t mangle -X DST.2 > /dev/null 2>&1 # # Flush set # #$IPSET -F dst.1 #$IPSET -F dst.2 # # Buat rule iptables chain DST.10 di table mangle # Gunanya untuk menyimpan ip dst yang akan dilewatkan via wan1 # $IPTABLES -t mangle -N DST.1 $IPTABLES -t mangle -A DST.1 -j SET --add-set dst.1 dst $IPTABLES -t mangle -A DST.1 -j MARK --set-mark 10 # # Buat rule iptables chain DST.11 di table mangle # Gunanya untuk menyimpan ip dst yang akan dilewatkan via wan2 # $IPTABLES -t mangle -N DST.2 $IPTABLES -t mangle -A DST.2 -j SET --add-set dst.2 dst $IPTABLES -t mangle -A DST.2 -j MARK --set-mark 11 # # Buat rule iptables # Menangkap paket dengan dst ip dan cocokkan dengan set yang sesuai # Target "-j RETURN" digunakan biar paket yang match dengan mark yg sesuai # tidak di-alirkan (traverse) ke bawah. # $IPTABLES -t mangle -A OUTPUT -p $PROTO -m multiport --dports $PORTS \ ! -d $LAN -m set --match-set dst.1 dst -j MARK --set-mark 10 $IPTABLES -t mangle -A OUTPUT -p $PROTO -m multiport --dports $PORTS \ ! -d $LAN -m mark --mark 10 -j RETURN $IPTABLES -t mangle -A OUTPUT -p $PROTO -m multiport --dports $PORTS \ ! -d $LAN -m set --match-set dst.2 dst -j MARK --set-mark 11 $IPTABLES -t mangle -A OUTPUT -p $PROTO -m multiport --dports $PORTS \ ! -d $LAN -m mark --mark 11 -j RETURN # # Paket pertama 1 of 2 akan dilempar ke chain DST.10 # Paket kedua 2 of 2 akan dilempar ke chain DST.11 # $IPTABLES -t mangle -A OUTPUT -p $PROTO -m multiport --dports $PORTS \ ! -d $LAN -m statistic --mode nth --every 2 --packet 0 -j DST.1 $IPTABLES -t mangle -A OUTPUT -p $PROTO -m multiport --dports $PORTS \ ! -d $LAN -m statistic --mode nth --every 2 --packet 1 -j DST.2 Logika script di atas adalah cek paket yang keluar apakah mempunyai ip tujuan yang telah cocok/match dengan list ipset yang telah dibuat sebelumnya, jika tidak maka akan dilakukan load balancing nth lalu jump ke chain wan yang sesuai. Di chain wan yg sesuai akan disimpan data ip address tujuan ke list ipset. Kemudian mark paket sesuai dengan wannya. # ip ru ls 0: from all lookup local 32762: from all fwmark 0xb lookup T2 32763: from all fwmark 0xa lookup T1 32764: from 192.168.1.2 lookup T2 32765: from 192.168.2.2 lookup T1 32766: from all lookup main 32767: from all lookup default Jadi setiap kali user buka http://www.showip.com akan selalu ditunjukkan ip wan yang sama. Kelemahan ipset adalah dia hanya sanggup menyimpan sampai 65536 ip address per list. -- Arief Yudhawarman http://awarmanf.wordpress.com -- FAQ milis di http://wiki.linux.or.id/FAQ_milis_tanya-jawab Unsubscribe: kirim email ke tanya-jawab-unsubscr...@linux.or.id Arsip dan info milis selengkapnya di http://linux.or.id/milis