Konfigurasi Bonding Interface CentOS (Failover/Load Balancing)
Teknik Bonding Interface adalah teknik yang sangat sering digunakan pada server yang berada dalam environment yang membutuhkan availability tinggi.
Pada dasarnya teknologi bonding yang dimiliki linux yang saya tahu terdiri dari 7 mode (0-6), yaitu.
mode=0 (balance-rr)
mode=1 (active-backup)
mode=2 (balance-xor)
mode=3 (broadcast)
mode=4 (802.3ad)
mode=5 (balance-tlb)
mode=6 (balance-alb)
Di artikel kali ini say mau coba share mode yang paling sering dipake yaitu mode 0 dan 1.
Notes:
Di lab ini NIC yang digunakan adalah minimal dua.
Bonding Mode Balance-RR
1) Pastikan modul kernel bonding sudah terinstall di Linux Server.
Cek dengan menggunakan command dibawah ini.
[root@localhost ~]# modinfo bonding
#kalo outputnya seperti dibawah, maka modul bonding sudah terload di kernel dan siap digunakan
filename: /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/bonding/bonding.ko
author: Thomas Davis, [email protected] and many others
description: Ethernet Channel Bonding Driver, v3.6.0
version: 3.6.0
license: GPL
srcversion: 990DDFEBDBA03F305236885
depends: 8021q,ipv6
vermagic: 2.6.32-358.el6.x86_64 SMP mod_unload modversions
parm: max_bonds:Max number of bonded devices (int)
parm: tx_queues:Max number of transmit queues (default = 16) (int)
parm: num_grat_arp:Number of gratuitous ARP packets to send on failover event (int)
parm: num_unsol_na:Number of unsolicited IPv6 Neighbor Advertisements packets to send on failover event (int)
parm: miimon:Link check interval in milliseconds (int)
parm: updelay:Delay before considering link up, in milliseconds (int)
parm: downdelay:Delay before considering link down, in milliseconds (int)
parm: use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm: mode:Mode of operation; 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm: primary:Primary network device to use (charp)
parm: primary_reselect:Reselect primary slave once it comes up; 0 for always (default), 1 for only if speed of primary is better, 2 for only on active slave failure (charp)
parm: lacp_rate:LACPDU tx rate to request from 802.3ad partner; 0 for slow, 1 for fast (charp)
parm: ad_select:803.ad aggregation selection logic; 0 for stable (default), 1 for bandwidth, 2 for count (charp)
parm: xmit_hash_policy:balance-xor and 802.3ad hashing method; 0 for layer 2 (default), 1 for layer 3+4, 2 for layer 2+3 (charp)
parm: arp_interval:arp interval in milliseconds (int)
parm: arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm: arp_validate:validate src/dst of ARP probes; 0 for none (default), 1 for active, 2 for backup, 3 for all (charp)
parm: fail_over_mac:For active-backup, do not set all slaves to the same MAC; 0 for none (default), 1 for active, 2 for follow (charp)
parm: all_slaves_active:Keep all frames received on an interfaceby setting active flag for all slaves; 0 for never (default), 1 for always. (int)
parm: resend_igmp:Number of IGMP membership reports to send on link failure (int)
2) Define Master Interface, Di lab ini master Interfacenya bond0 dan dengan bootproto DHCP
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0
#lalu isi dengan parameter seperti dibawah ini
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=dhcp
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="mode=0 miimon=100"
3) Define Slave Interface, Pada lab ini slave Interfacenya ialah eth0 dan eth1
#Dibawah ini adalah Konfigurasi eth0 sebagai slave
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#lalu isi dengan parameter seperti dibawah ini
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="00:0C:29:70:0A:61"
IPV6INIT="yes"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="4b89f027-9f53-4085-b07f-84be268b8286"
MASTER=bond0
SLAVE=yes
#Dibawah ini adalah Konfigurasi eth1 sebagai slave
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
#lalu isi dengan parameter seperti dibawah ini
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="00:0C:29:70:0A:6B"
IPV6INIT="yes"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="4b89f027-9f53-4085-b07f-84be268b8286"
MASTER=bond0
SLAVE=yes
Remarks
- Yang harus diperhatikan ialah mac-address, pastikan mac-address yang digunakan itu sesuai dengan mac-address hardware, misal di lab ini eth0 mac-addressnya 00:0C:29:70:0A:61 dan eth1 mac-addressnya 00:0C:29:70:0A:6B
- Parameter Master dan Slave harus di define, karna masternya bond0 sesuai pada langkah kedua maka master yang di define adalah bond0
4) Restart Service Network dan Verifikasi Konfigurasi
[root@localhost ~]# /etc/init.d/network restart
[root@localhost ~]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0C:29:70:0A:61
inet addr:192.168.98.130 Bcast:192.168.98.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe70:a61/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:37394 errors:0 dropped:0 overruns:0 frame:0
TX packets:388 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3375111 (3.2 MiB) TX bytes:39823 (38.8 KiB)
eth0 Link encap:Ethernet HWaddr 00:0C:29:70:0A:61
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:18795 errors:0 dropped:0 overruns:0 frame:0
TX packets:209 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1705689 (1.6 MiB) TX bytes:21236 (20.7 KiB)
eth1 Link encap:Ethernet HWaddr 00:0C:29:70:0A:61
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:18600 errors:0 dropped:0 overruns:0 frame:0
TX packets:180 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1669482 (1.5 MiB) TX bytes:18821 (18.3 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:480 (480.0 b) TX bytes:480 (480.0 b)
Dari konfigurasi diatas terlihat bahwa sudah terbentuk interface bond0 yang merupakan perpaduan dari eth0 dan eth1. Mode ini biasa disebut load balancing.
Bonding Mode Active-Backup
Tahapan konfigurasinya sama seperti diatas, hanya saja pada langkah kedua parameter bond_opts diganti mode nya menjadi mode=1. Sebagai contoh seperti dibawah ini.
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0
#lalu isi dengan parameter seperti dibawah ini
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=dhcp
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="mode=1 miimon=100"
Setelah itu restart service network kamu, maka mode bondingnya sudah berubah dari balance-rr ke mode active-backup, mode seperti ini biasa disebut failover.