Konfigurasi Bonding Interface CentOS (Failover/Load Balancing)

Konfigurasi Bonding Interface CentOS (Failover/Load Balancing)

  • 28 January 2021
  • Linux
  • Ditulis oleh Arif Zulfikar Pelian
  • 1.4K Views

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.