Ethernet Channel Bonding aka NIC Teaming ໃນ Linux Systems


Ethernet Channel Bonding ເຮັດໃຫ້ສອງຫຼືຫຼາຍກວ່າ Network Interfaces Card (NIC) ເຂົ້າໄປໃນບັດ NIC virtual ດຽວເຊິ່ງອາດຈະເຮັດໃຫ້ແບນວິດເພີ່ມຂື້ນແລະສະ ໜອງ ການຊ້ ຳ ບໍ່ ໜຳ ບັດ NIC. ນີ້ແມ່ນວິທີທີ່ດີທີ່ຈະບັນລຸການເຊື່ອມຕໍ່ທີ່ຊ້ ຳ ຊ້ອນ, ຄວາມທົນທານຕໍ່ຄວາມຜິດຫຼືການ ນຳ ໃຊ້ເຄືອຂ່າຍທີ່ສົມດຸນໃນລະບົບການຜະລິດ. ຖ້າ NIC ທາງຮ່າງກາຍ ໜຶ່ງ ຫຼຸດລົງຫຼືຖອດອອກ, ມັນຈະຍ້າຍຊັບພະຍາກອນໄປຫາບັດ NIC ອື່ນໆໂດຍອັດຕະໂນມັດ. ຊ່ອງທາງການເຊື່ອມໂຍງ/NIC ຈະເຮັດວຽກໂດຍການຊ່ວຍເຫຼືອຂອງຜູ້ຂັບຂີ່ທີ່ຜູກພັນໃນ Kernel. ພວກເຮົາຈະໃຊ້ສອງ NIC ເພື່ອສະແດງດຽວກັນ.

ມີເກືອບຫົກປະເພດຂອງ Channel Bond ປະເພດຕ່າງໆ. ນີ້, ພວກເຮົາຈະທົບທວນພຽງແຕ່ສອງປະເພດຂອງ Channel Bond ເທົ່ານັ້ນທີ່ໄດ້ຮັບຄວາມນິຍົມແລະ ນຳ ໃຊ້ຢ່າງກວ້າງຂວາງ.

<

  • 0: ການດຸ່ນດ່ຽງການໂຫຼດ (Round-Robin): ການຈະລາຈອນແມ່ນຖືກສົ່ງຕໍ່ຕາມ ລຳ ດັບຫຼືຮູບຊົງຮອບຈາກທັງ NIC. ຮູບແບບນີ້ໃຫ້ສົມດຸນການໂຫຼດແລະຄວາມທົນທານຕໍ່ຄວາມຜິດ.
  • 1: Active-Backup: ມີພຽງແຕ່ NIC ທາດດຽວເທົ່ານັ້ນທີ່ໃຊ້ງານໄດ້ໃນຈຸດເວລາໃດ ໜຶ່ງ. ບັດປະຕິບັດການອື່ນໆຈະມີການເຄື່ອນໄຫວຖ້າຫາກວ່າ NIC ທາດທີ່ໃຊ້ງານບໍ່ສາມາດເຮັດວຽກໄດ້.
  • ການສ້າງພັນທະບັດ Channel Ethernet

    ພວກເຮົາມີສອງເຄືອຂ່າຍ Network Ethernet Card i.e eth1 ແລະ eth2 ບ່ອນທີ່ bond0 ຈະຖືກສ້າງຂື້ນເພື່ອຈຸດປະສົງການຜູກພັນ. ຕ້ອງການສິດທິພິເສດຂອງ superuser ເພື່ອປະຕິບັດ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

    ຕົວກໍານົດການກ່າວ MASTER bond0 ແລະ eth1 interface ເປັນ SLAVE ໃນໄຟລ໌ config ດັ່ງທີ່ສະແດງຢູ່ທາງລຸ່ມ.

    # vi /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE="eth1"
    TYPE=Ethernet
    ONBOOT="yes"
    BOOTPROTO="none"
    USERCTL=no
    MASTER=bond0
    SLAVE=yes

    ນີ້ຍັງ, ລະບຸພາລາມິເຕີ MASTER bond0 ແລະ eth2 ໃນການໂຕ້ຕອບເປັນ SLAVE.

    # vi /etc/sysconfig/network-scripts/ifcfg-eth2
    DEVICE="eth2"
    TYPE="Ethernet"
    ONBOOT="yes"
    USERCTL=no
    #NM_CONTROLLED=yes
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes

    ສ້າງ bond0 ແລະ ກຳ ນົດຊ່ອງທາງໃນການເຊື່ອມໂຍງ Channel ໃນ“/etc/sysconfig/network-scripts /” ທີ່ມີຊື່ວ່າ ifcfg-bond0.

    ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງເອກະສານການຕັ້ງຄ່າ ສຳ ພັນທະບັດຂອງຊ່ອງທາງ.

    # vi /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    ONBOOT=yes
    IPADDR=192.168.246.130
    NETMASK=255.255.255.0
    BONDING_OPTS="mode=0 miimon=100"

    ໝາຍ ເຫດ: ໃນການຕັ້ງຄ່າຂ້າງເທິງນີ້ພວກເຮົາໄດ້ເລືອກຮູບແບບຕົວເລືອກພັນທະບັດ = 0 i.e Round-Robin ແລະ miimon = 100 (ໄລຍະເວລາການປ່ອນບັດ 100 ms).

    ໃຫ້ເບິ່ງອິນເຕີເຟດທີ່ຖືກສ້າງຂື້ນໂດຍໃຊ້ ifconfig ຄຳ ສັ່ງເຊິ່ງສະແດງໃຫ້ເຫັນວ່າ "bond0" ເຮັດວຽກເປັນ MASTER ທັງອິນເຕີເຟດ "eth1" ແລະ "eth2" ແລ່ນເປັນ SLAVES.

    # ifconfig
    bond0     Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
              inet addr:192.168.246.130  Bcast:192.168.246.255  Mask:255.255.255.0
              inet6 addr: fe80::20c:29ff:fe57:618e/64 Scope:Link
              UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
              RX packets:17374 errors:0 dropped:0 overruns:0 frame:0
              TX packets:16060 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0
              RX bytes:1231555 (1.1 MiB)  TX bytes:1622391 (1.5 MiB)
    
    eth1      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:16989 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8072 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:1196931 (1.1 MiB)  TX bytes:819042 (799.8 KiB)
              Interrupt:19 Base address:0x2000
    
    eth2      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:385 errors:0 dropped:0 overruns:0 frame:0
              TX packets:7989 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:34624 (33.8 KiB)  TX bytes:803583 (784.7 KiB)
              Interrupt:19 Base address:0x2080
    
    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)

    ໃຫ້ບໍລິການ Restart Network ແລະອິນເຕີເຟດ.

    # service network restart
    Shutting down interface bond0:                             [  OK  ]
    Shutting down loopback interface:                          [  OK  ]
    Bringing up loopback interface:                            [  OK  ]
    Bringing up interface bond0:                               [  OK  ]

    ກວດກາສະຖານະພາບຂອງພັນທະບັດ.

    # watch -n .1 cat /proc/net/bonding/bond0

    ຜົນໄດ້ຮັບຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວ່າຮູບແບບການເປັນພັນທະບັດແມ່ນ Load Balancing (RR) ແລະ eth1 & eth2 ແມ່ນ ກຳ ລັງສະແດງອອກ.

    Every 0.1s: cat /proc/net/bonding/bond0                         Thu Sep 12 14:08:47 2013 
    
    Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
    
    Bonding Mode: load balancing (round-robin)
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    Slave Interface: eth1
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 2
    Permanent HW addr: 00:0c:29:57:61:8e
    Slave queue ID: 0
    
    Slave Interface: eth2
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 2
    Permanent HW addr: 00:0c:29:57:61:98
    Slave queue ID: 0

    ໃນສະຖານະການນີ້, ການໂຕ້ຕອບ Slave ຍັງຄົງຄືເກົ່າ. ມີພຽງແຕ່ການປ່ຽນແປງເທົ່ານັ້ນທີ່ຈະມີຢູ່ໃນອິນເຕີເຟດພັນທະບັດ ifcfg-bond0 ແທນ ‘0’ ມັນຈະເປັນ ‘1’ ເຊິ່ງສະແດງຢູ່ພາຍໃຕ້.

    # vi /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    ONBOOT=yes
    IPADDR=192.168.246.130
    NETMASK=255.255.255.0
    BONDING_OPTS="mode=1 miimon=100"

    ເລີ່ມການບໍລິການເຄືອຂ່າຍຄືນແລະກວດກາສະຖານະພາບຂອງການຜູກພັນ.

    # service network restart
    Shutting down interface bond0:                             [  OK  ]
    Shutting down loopback interface:                          [  OK  ]
    Bringing up loopback interface:                            [  OK  ]
    Bringing up interface bond0:                               [  OK  ]

    ກວດເບິ່ງສະຖານະພາບຂອງພັນທະບັດດ້ວຍ ຄຳ ສັ່ງ.

    # watch -n .1 cat /proc/net/bonding/bond0

    ແບບ ຈຳ ລອງ (Bonding Mode) ກຳ ລັງສະແດງໃຫ້ເຫັນເຖິງຄວາມຜິດຂອງຄວາມຜິດ (ການ ສຳ ຮອງຂໍ້ມູນທີ່ໃຊ້ງານໄດ້) ແລະ Slave Interface ກໍ່ເພີ່ມຂື້ນ.

    Every 0.1s: cat /proc/n...  Thu Sep 12 14:40:37 2013
    
    Ethernet Channel Bonding Driver: v3.6.0 (September 2
    6, 2009)
    
    Bonding Mode: fault-tolerance (active-backup)
    Primary Slave: None
    Currently Active Slave: eth1
    MII Status: up
    MII Polling Interval (ms): 100
    Up Delay (ms): 0
    Down Delay (ms): 0
    
    Slave Interface: eth1
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:57:61:8e
    Slave queue ID: 0
    
    Slave Interface: eth2
    MII Status: up
    Speed: Unknown
    Duplex: Unknown
    Link Failure Count: 0
    Permanent HW addr: 00:0c:29:57:61:98
    Slave queue ID: 0

    ໝາຍ ເຫດ: ລົງມືແລະລົງ Slave Interfaces ເພື່ອກວດເບິ່ງການເຮັດວຽກຂອງ Channel Bonding. ກະລຸນາເບິ່ງ ຄຳ ສັ່ງດັ່ງລຸ່ມນີ້.

    # ifconfig eth1 down
    # ifconfig eth1 up

    ວ່າມັນ!