16 Januari 2009

Membangun Server Load Balancing beberapa Speedy dengan VLAN

Satu alasan mengapa membangun server load balancing beberapa speedy dengan VLAN adalah karena keterbatasan slot PCI yang ada di komputer server. kalau membangun warnet dengan koneksi 12 speedy akan menjadi masalah di slot PCI server yang pasti tidak ada yang sebanyak itu. maka salah satu solusinya adalah di buat VLAN tiap-tiap modem speedy dengan memanfaatkan salah satu fitur yang di miliki oleh swith, tentunya switch yang support VLAN. dalam kesempatan ini saya menggunakan switch cisco catalyst 2950 XL dengan FreeBSD sebagai routernya.



misalkan IP local modem adalah:
modem-1 192.168.1.1/24
modem-2 192.168.2.1/24
modem-3 192.168.3.1/24
modem-4 192.168.4.1/24
modem-5 192.168.5.1/24
modem-6 192.168.6.1/24

sedangkan Network local LAN adalah 192.168.0.0/24

maka persiapan pertama adalah install mesin FreeBSD dan kompile kernel.

#cd /sys/i386/conf
#cp GENERIC loadbalancer
#vi loadbalancer

untuk module kernel tambahkan option berikut:

device vlan
device pf
device pflog
device pfsync

#config loadbalancer
#cd ..
#make depend && make && make install && reboot &

#vi /etc/rc.conf

pf_enable="YES"
pf_program="/sbin/pfctl"
pf_rules="/etc/pf.conf"
network_interfaces="AUTO"
hostname="loadbalancer"
gateway_enable="YES"
ifconfig_lo0="127.0.0.1"
cloned_interfaces="vlan10 vlan20 vlan30 vlan40 vlan50 vlan60"
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_vlan10="inet 192.168.1.2 netmask 255.255.255.0 vlan 10 vlandev rl1"
ifconfig_vlan20="inet 192.168.2.2 netmask 255.255.255.0 vlan 20 vlandev rl1"
ifconfig_vlan30="inet 192.168.3.2 netmask 255.255.255.0 vlan 30 vlandev rl1"
ifconfig_vlan40="inet 192.168.4.2 netmask 255.255.255.0 vlan 40 vlandev rl1"
ifconfig_vlan50="inet 192.168.5.2 netmask 255.255.255.0 vlan 50 vlandev rl1"
ifconfig_vlan60="inet 192.168.6.2 netmask 255.255.255.0 vlan 60 vlandev rl1"

#vi /etc/pf.conf

ext_if1="vlan10" # speedy1
ext_if2="vlan20" # speady2
ext_if3="vlan30" # speedy3
ext_if4="vlan40" # speedy4
ext_if5="vlan50" # speedy5
ext_if6="vlan60" # speedy6

# Gateway Out #
ext_gw1 = "192.168.1.1"
ext_gw2 = "192.168.2.1"
ext_gw3 = "192.168.3.1"
ext_gw4 = "192.168.4.1"
ext_gw5 = "192.168.5.1"
ext_gw6 = "192.168.6.1"

nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)
nat on $ext_if3 from $lan_net to any -> ($ext_if3)
nat on $ext_if4 from $lan_net to any -> ($ext_if4)
nat on $ext_if5 from $lan_net to any -> ($ext_if5)
nat on $ext_if6 from $lan_net to any -> ($ext_if6)

pass in quick on $int_if route-to {($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2), ($ext_if3 $ext_gw3), ($ext_if4 $ext_gw4), ($ext_if5 $ext_gw5), ($ext_if6 $ext_gw6)} round-robin proto tcp from $lan_net to any flags S/SA modulate state

pass in quick on $int_if route-to {($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2), ($ext_if3 $ext_gw3), ($ext_if4 $ext_gw4), ($ext_if5 $ext_gw5), ($ext_if6 $ext_gw6)} round-robin proto { udp, icmp } from $lan_net to any keep state

pass out quick on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if1 proto { udp, icmp } from any to any keep state
pass out quick on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if2 proto { udp, icmp } from any to any keep state
pass out quick on $ext_if3 proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if3 proto { udp, icmp } from any to any keep state
pass out quick on $ext_if4 proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if4 proto { udp, icmp } from any to any keep state
pass out quick on $ext_if5 proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if5 proto { udp, icmp } from any to any keep state
pass out quick on $ext_if6 proto tcp from any to any flags S/SA modulate state
pass out quick on $ext_if6 proto { udp, icmp } from any to any keep state

berikut adalah konfigurasi switch

Interface FastEthernet 0/1
switchport access vlan 10
descriptions speedy 1

Interface FastEthernet 0/2
switchport access vlan 20
descriptions speedy 2

Interface FastEthernet 0/3
switchport access vlan 30
descriptions speedy 3

Interface FastEthernet 0/4
switchport access vlan 40
descriptions speedy 4

Interface FastEthernet 0/5
switchport access vlan 50
descriptions speedy 5

Interface FastEthernet 0/6
switchport access vlan 60
descriptions speedy 6

Interface FastEthernet 0/7
switchport mode trunk
switchport trunk allowed 1,10-60

lalu tinggal nyolokin modem-1 ke port cisco 1 sampai modem-6 ke port cisco 6 dan port cisco 7 di colokin ke server (rl1) sedangkan server (rl0) dicolokin ke hub client.