ค้นหาเว็บไซต์

การเชื่อมช่องสัญญาณอีเทอร์เน็ตหรือที่รู้จักกันในชื่อ NIC Teaming บนระบบ Linux


การเชื่อมต่อช่องสัญญาณอีเธอร์เน็ต เปิดใช้งาน การ์ดอินเทอร์เฟซเครือข่าย (NIC) สองตัวขึ้นไปในการ์ด NIC เสมือนใบเดียวซึ่งอาจเพิ่มขึ้น แบนด์วิธและให้ความซ้ำซ้อนของ การ์ด NIC นี่เป็นวิธีที่ดีเยี่ยมในการบรรลุลิงก์ที่ซ้ำซ้อน ความทนทานต่อข้อผิดพลาด หรือเครือข่ายการปรับสมดุลโหลดในระบบการผลิต หาก NIC กายภาพตัวหนึ่ง ไม่ทำงาน หรือ ไม่ได้เสียบปลั๊ก มันจะย้ายทรัพยากรไปยังการ์ด NIC อื่นโดยอัตโนมัติ การเชื่อมโยง ช่อง/NIC จะทำงานโดยใช้ตัวขับเคลื่อนการเชื่อมโยงใน เคอร์เนล เราจะใช้ NIC สองตัวเพื่อสาธิตสิ่งเดียวกัน

มีประเภท Channel Bond เกือบ หก ประเภทให้เลือก ในที่นี้ เราจะรีวิว Channel Bond เพียงสองประเภทเท่านั้นที่ได้รับความนิยมและใช้กันอย่างแพร่หลาย

  1. 0: การปรับสมดุลโหลด (Round-Robin) : การรับส่งข้อมูลจะถูกส่งตามลำดับหรือแบบ Round-Robin จาก NIC ทั้งสอง โหมดนี้มีการปรับสมดุลโหลดและความทนทานต่อข้อผิดพลาด
  2. 1: Active-Backup : NIC ทาสเพียงตัวเดียวเท่านั้นที่ทำงาน ณ เวลาใดก็ตาม การ์ดอินเทอร์เฟซอื่นจะใช้งานได้ก็ต่อเมื่อ NIC ทาสที่ใช้งานอยู่ล้มเหลว

การสร้างการเชื่อมโยงช่องสัญญาณอีเธอร์เน็ต

เรามี การ์ดเครือข่ายอีเทอร์เน็ต สองใบ ได้แก่ eth1 และ eth2 โดยที่ bond0 จะถูกสร้างขึ้นเพื่อจุดประสงค์ในการประสาน ต้องการสิทธิ์ superuser เพื่อดำเนินการคำสั่งด้านล่าง

โหลดบาลานซ์ (Round-Robin)

กำหนดค่า eth1

กล่าวถึงพารามิเตอร์ MASTER bond0 และ eth1 อินเทอร์เฟซเป็น SLAVE ในไฟล์กำหนดค่าดังที่แสดงด้านล่าง

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes
กำหนดค่า eth2

นอกจากนี้ ให้ระบุพารามิเตอร์ 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

สร้าง bond0 และกำหนดค่าอินเทอร์เฟซการเชื่อมช่องสัญญาณในไดเรกทอรี “/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"

หมายเหตุ: ในการกำหนดค่าข้างต้น เราได้เลือกตัวเลือกพันธะ mode=0 เช่น Round-Robin และ miimon=100 (ช่วงเวลาการโพล 100 มิลลิวินาที)

มาดูอินเทอร์เฟซที่สร้างขึ้นโดยใช้คำสั่ง ifconfig ซึ่งแสดง “bond0” ทำงานเป็น MASTER ทั้งอินเทอร์เฟซ “eth1” และ “eth2” ทำงานเป็น ทาส

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)

รีสตาร์ทบริการเครือข่ายและอินเทอร์เฟซควรจะใช้ได้

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
ตัวอย่างเอาต์พุต

เอาต์พุตด้านล่างแสดงให้เห็นว่า โหมดการเชื่อม คือ โหลดบาลานซ์ (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

สร้างการสำรองข้อมูลที่ใช้งานอยู่

ในสถานการณ์สมมตินี้ อินเทอร์เฟซ ทาส ยังคงเหมือนเดิม จะมีการเปลี่ยนแปลงเพียงครั้งเดียวในอินเทอร์เฟซของพันธบัตร 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
ผลลัพธ์ตัวอย่าง

โหมดการเชื่อมต่อกำลังแสดงความทนทานต่อข้อผิดพลาด (ใช้งานการสำรองข้อมูล) และอินเทอร์เฟซทาสทำงานอยู่

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 ด้วยตนเองเพื่อตรวจสอบการทำงานของ Channel Bonding โปรดดูคำสั่งด้านล่าง

ifconfig eth1 down
ifconfig eth1 up

แค่นั้นแหละ!