Halaman

Rabu, 09 Oktober 2013

Load Balancing Ubuntu Server

Load Balancing Beberapa Sambungan Internet (beberapa ISP)

oleh Onno W. Purbo
Pada berbagai kesempatan di mailing list, banyak sekali orang yang bertanya teknik untuk melakukan load balancing atau menggunakan secara bersamaan beberapa sambungan ke Internet sekaligus. Hal ini terjadi karena sering kali kita dapati bandwidth dari sebuah ISP tidak mencukupi. Kita memerlukan tambahan bandwidth dari bandwidth yang sudah ada.

Teknik yang sering digunakan untuk menambahkan bandwidth dari yang sudah biasanya adalah load balancing dari beberapa link / sambungan Internet. Teknik load balancing sangat erat hubungannya dengan teknik routing. Teknik routing yang sederhana menggunakan parameter gateway yang mempunyai satu gateway saja. Teknik load balancing termasuk kategori advanced bukan untuk pemula.
    

                                          +------------+        /
                                          |            |       |
                            +-------------+ Provider 1 +-------
        __                  |             | Wireless   |     /
    ___/  \_         +------+-------+     +------------+    |
  _/        \__      |     eth0     |                      /
 /             \     |    Router    |                      |
| Local network -----+eth1          |                      |     Internet
 \_           __/    |    Linux     |                      |
   \__     __/       |     eth2     |                      \
      \___/          +------+-------+     +------------+    |
                            |             |            |     \
                            +-------------+ Provider 2 +-------
                                          |  ADSL      |       |
                                          +------------+        \________
Pada gambar di perlihatkan sebuah LAN dengan IP address 192.168.0.0/24 tersambung ke dua buah sambungan sekaligus, yaitu, ADSL Speedy dan Wireless Internet yang menggunakan 2.4GHz. Kita berharap bandwidth dari Speedy dan Wireless Internet dapat sekaligus termanfaatkan.
Untuk itu kita menggunakan sebuah Linux Gateway yang mempunyai tiga (3) LAN card. Semakin banyak sambungan ke Internet semakin banyak LAN card yang dibutuhkan. Dalam percobaan saya menggunakan Ubuntu yang di install hanya shell saja.
LAN di RT/RW-net atau kantor menggunakan IP address 192.168.0.0/24. Linux gateway mempunyai tiga (3) LAN card dengan tiga (3) IP address yang berbeda, yaitu,
    
eth0 IP address 10.0.148.48 gateway 10.0.148.254 ke Provider Wireless
eth1 IP address 192.168.0.222 ke LAN RT/RW-net yang kita layani
eth2 IP address 192.168.1.222 gateway 192.168.1.1 ke ADSL Speedy
Konfigurasi Linux PC gateway agar mendukung load balancing yang perlu dilakukan adalah sebagai berikut.
Install SSH server agak mudah di remote dari komputer lain, lakukan,
    
# apt-get install openssh-server
# /etc/init.d/ssh restart

Edit file /etc/network/interfaces pastikan agar isinya adalah

 auto eth0
 iface eth0 inet static
  address 10.0.148.48
  netmask 255.255.255.0

 auto eth1
 iface eth1 inet static
  address 192.168.0.222
  netmask 255.255.255.0

 auto eth2
 iface eth2 inet static
  address 192.168.1.222
  netmask 255.255.255.0
Melalui perintah di atas, kita pada dasarnya memberikan IP address statik pada eth0, eth1 dan eth2. Masing-masing 10.0.148.48, 192.168.0.222 dan terakhir ke eth2 192.168.1.222.
Isi file /etc/iproute2/rt_tables dengan tabel adsl, wirelessisp dan internet agar memudahkan iproute2 bekerja. Isi /etc/iproute2
    
120     adsl
121     wirelessisp
123     internet
Buat script untuk menjalankan menset iproute2 agar menjalankan load balancing. Script tersebut dapat di panggil dari /etc/rc.local agar langsung operasional pada saat PC router Linux di booting.
    
# aktifkan interface lo, eth0, eth1, dan eth2
/sbin/ip link set lo up
/sbin/ip link set eth0 up
/sbin/ip link set eth1 up
/sbin/ip link set eth2 up

# flush / bersihkan tabel routing yang ada
# flush tabel router adsl, table wirelessisp dan tabel internet
/sbin/ip route flush table adsl
/sbin/ip route flush table wirelessisp
/sbin/ip route flush table internet

# masukan informasi IP address & broadcast address dari masing-masing interface 
/sbin/ip addr add 127.0.0.1/8 brd 127.0.0.255 dev lo
/sbin/ip addr add 192.168.1.222/24 brd 192.168.1.255 dev eth2
/sbin/ip addr add 10.0.148.48/24 brd 10.0.148.255 dev eth0
/sbin/ip addr add 192.168.0.222/24 brd 192.168.0.255 dev eth1

# masukan tabel routing ke arah LAN / RT/RW-net yang sifatnya statik
# routing ke arah LAN / RT/RW-net / kantor sifatnya statik
/sbin/ip route add 127.0.0.0/8 dev lo
/sbin/ip route add 192.168.0.0/24 dev eth1

# beri prioritas untuk masing-masing tabel
/sbin/ip rule add prio 10 table main
/sbin/ip rule add prio 20 table adsl
/sbin/ip rule add prio 30 table wirelessisp
/sbin/ip rule add prio 40 table internet

# delete routing ke arah default gateway
/sbin/ip route del default table main
/sbin/ip route del default table adsl
/sbin/ip route del default table wirelessisp
/sbin/ip route del default table internet

# buat tabel routing ke arah ADSL Speedy
/sbin/ip rule add prio 20 from 192.168.1.0/24 table adsl
/sbin/ip route add default via 192.168.1.1 dev eth2 src 192.168.1.222 \
 proto static table adsl
/sbin/ip route append prohibit default table adsl metric 1 proto static

# buat tabel routing ke arah Wireless ISP
/sbin/ip rule add prio 30 from 10.0.148.0/24 table wirelessisp
/sbin/ip route add default via 10.0.148.254 dev eth0 src 10.0.148.48 \
 proto static table wirelessisp
/sbin/ip route append prohibit default table wirelessisp metric 1 proto static
Perhatikan pada routing ke arah ADSL Speedy dan Wireless ISP routing default dibuang (prohibit). Hal ini dilakukan supaya nantinya dapat dilakukan load balancing beberapa sambungan ke Internet.
# Set up load balancing ke dua (2) buah gateway ke Internet
    
/sbin/ip rule add prio 40 table internet
/sbin/ip route add default proto static table internet \
        nexthop via 192.168.1.1 dev eth2 weight 1 \
        nexthop via 10.0.148.254 dev eth0 weight 1
Di bagian akhir ini terlihat proses load balancing-nya dengan cara mengarahkan default ke table Internet yang mempunyai dua buat “nexthop” melalui 192.168.1.1 eth2 dan 10.0.148.254 eth0. Perhatikan parameter weight, disini digunakan nilai weight yang sama maka prioritas paket akan sama baik untuk eth0 maupun eth2. Jika kita bedakan nilai weight-nya maka nilai weight yang lebih besar akan memperoleh prioritas untuk dilalui paket lebih rendah.
Buat script untuk melakukan NAT untuk ke dua (2) interface menuju Internet. Script tersebut dapat di letakan di /etc/rc.local jika mau. Contoh script adalah sebagai berikut,
    
# pastikan agar PC Linux dapat memforward IP paket
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward

# bersihkan isi iptables
/sbin/iptables -F
/sbin/iptables -P INPUT DROP
/sbin/iptables -A INPUT -i eth1 -j ACCEPT
sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -p tcp -i eth2 -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -p udp -i eth0 -j REJECT --reject-with icmp-port-unreachable
/sbin/iptables -A INPUT -p udp -i eth2 -j REJECT --reject-with icmp-port-unreachable

# lakukan source NAT untuk eth0 dan eth2
/sbin/iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 192.168.1.222
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 10.0.148.48

sumber :http://adinuryanto.wordpress.com/2011/07/28/load-balancing-beberapa-sambungan-internetisp/

Tidak ada komentar:

Posting Komentar