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

วิธีกำหนดค่าการเชื่อมโยง/การสร้างทีมเครือข่าย (NIC) บน Debian Linux


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

อ่านเพิ่มเติม: วิธีกำหนดค่าการเชื่อมโยงเครือข่ายหรือการทำงานเป็นทีมใน Ubuntu

คู่มือนี้จะอธิบายการรวมการ์ดอินเทอร์เฟซเครือข่ายสองตัวบนระบบ Debian ซอฟต์แวร์ที่เรียกว่า ifenslave จะใช้ในการเชื่อมต่อและถอด NIC ออกจากอุปกรณ์ที่เชื่อมโยงกัน อุปกรณ์บอนด์จะกลายเป็นอุปกรณ์เครือข่ายที่เชื่อมต่อกับเคอร์เนล แต่ทางกายภาพใช้อุปกรณ์อินเทอร์เฟซเครือข่ายจริง (eth0, eth1 ฯลฯ)

การเชื่อมโยงใน Debian Linux

สิ่งแรกที่ต้องทำก่อนการกำหนดค่าใดๆ คือการกำหนดประเภทของการเชื่อมที่ระบบจำเป็นต้องนำไปใช้จริง มีโหมดการเชื่อมหกโหมดที่เคอร์เนล Linux รองรับในขณะที่เขียนบทความนี้ การเชื่อมโยง 'โหมด' เหล่านี้บางส่วนนั้นติดตั้งง่าย และโหมดอื่นๆ จำเป็นต้องมีการกำหนดค่าพิเศษบนสวิตช์ที่ลิงก์เชื่อมต่ออยู่

ทำความเข้าใจกับโหมดพันธบัตร

โหมดบอนด์ 0 – ยอดคงเหลือ-rr

วิธีการรวมทีม NIC นี้เรียกว่า 'Round-Robin' ดังนั้น 'RR' ในชื่อ ด้วยวิธีการเชื่อมโยงนี้ แพ็กเก็ตเครือข่ายจะถูกหมุนเวียนผ่านการ์ดอินเทอร์เฟซเครือข่ายแต่ละการ์ดที่ประกอบขึ้นเป็นอินเทอร์เฟซที่ถูกผูกมัด

ตัวอย่างเช่น ระบบที่มี eth0, eth1 และ eth2 ทั้งหมดเป็นทาสของอินเทอร์เฟซ bond0 อินเทอร์เฟซนี้ เมื่อเปิดใช้งานด้วยโหมดบอนด์ 0 จะส่งแพ็กเก็ตแรกออกไป eth0 แพ็กเก็ตที่สองออก eth1 แพ็กเก็ตที่สามของเรา eth2 จากนั้นเริ่มต้นกลับไปที่ eth0 ด้วยแพ็กเก็ตที่สี่ นี่คือที่ที่โหมดได้รับชื่อ 'round-robin'

โหมดบอนด์ 1 - ใช้งานสำรองข้อมูล

ด้วยวิธีการเชื่อมโยงนี้ จะมีอินเทอร์เฟซเครือข่ายเพียงอินเทอร์เฟซเดียวเท่านั้นที่ใช้งานได้ ในขณะที่อินเทอร์เฟซอื่นๆ ในการเชื่อมโยงเพียงแค่รอความล้มเหลวในลิงก์ไปยังการ์ดอินเทอร์เฟซเครือข่ายหลัก

โหมดบอนด์ 2 – ยอดคงเหลือ XOR

ในโหมดบาลานซ์ XOR บอนด์ บอนด์จะประเมินที่อยู่ Mac ต้นทางและปลายทางเพื่อกำหนดอินเทอร์เฟซที่จะส่งแพ็กเก็ตเครือข่ายออกไป วิธีนี้จะเลือกอินเทอร์เฟซเดียวกันสำหรับที่อยู่ Mac ที่กำหนด และด้วยเหตุนี้จึงมีความสามารถในการปรับสมดุลโหลดและความทนทานต่อข้อผิดพลาด

โหมดบอนด์ 3 – การออกอากาศ

ในวิธีนี้ อุปกรณ์บอนด์จะส่งข้อมูลออกอินเทอร์เฟซทาสทั้งหมด ดังนั้นชื่อ 'ออกอากาศ' ของวิธีการเชื่อมเฉพาะนี้ มีการใช้งานน้อยมากสำหรับวิธีนี้ แต่ให้ระดับความทนทานต่อข้อผิดพลาด

โหมดบอนด์ 4 – 802.3ad

นี่เป็นวิธีการบอนด์พิเศษสำหรับการรวมลิงก์ และจำเป็นต้องมีการกำหนดค่าพิเศษบนสวิตช์ที่อินเทอร์เฟซที่ถูกผูกมัดนี้เชื่อมต่ออยู่ วิธีการนี้เป็นไปตามมาตรฐาน IEEE สำหรับการรวมลิงก์ และให้ทั้งความทนทานต่อข้อผิดพลาดและแบนด์วิดท์ที่เพิ่มขึ้น

โหมดบอนด์ 5 – การส่งโหลดบาลานซ์

ใน TLB บอนด์จะได้รับทราฟฟิกบนอินเทอร์เฟซทาสตามปกติ แต่เมื่อระบบจำเป็นต้องส่งทราฟฟิก มันจะกำหนดว่าอินเทอร์เฟซใดดีที่สุดในการส่งข้อมูลตามโหลด/คิวสำหรับแต่ละ อินเทอร์เฟซ

โหมดบอนด์ 6 – การปรับสมดุลโหลดแบบปรับได้

ใน ALB พันธะจะโหลดบาลานซ์คล้ายกับ โหมดบอนด์ 5 แต่มีความสามารถเพิ่มเติมในการรับบาลานซ์ด้วยเช่นกัน

ขึ้นอยู่กับบทบาทของระบบ การเลือกวิธีการยึดติดที่เหมาะสมนั้นมีความจำเป็น บทช่วยสอนนี้จะดำเนินการบน Debian Jessie ที่มีอินเทอร์เฟซเครือข่ายสองอินเทอร์เฟซ (eth0 และ eth1) และจะได้รับการตั้งค่าสำหรับ โหมดบอนด์ 1< หรือ active-backup

อย่างไรก็ตาม มันง่ายมากที่จะสลับระหว่างโหมดต่างๆ เนื่องจากเป็นเพียงการเปลี่ยนแปลงในไฟล์อินเทอร์เฟซเครือข่าย (สมมติว่าไม่ได้เลือก โหมดบอนด์ 4 เนื่องจากต้องมีการกำหนดค่าสวิตช์)

การกำหนดค่าการจัดทีม NIC

ขั้นตอนแรกในกระบวนการนี้คือการได้รับซอฟต์แวร์ที่เหมาะสมจากที่เก็บข้อมูล ซอฟต์แวร์สำหรับ Debian เรียกว่า ifenslave และสามารถติดตั้งด้วย "apt"

apt-get install ifenslave-2.6

เมื่อติดตั้งซอฟต์แวร์แล้ว จะต้องแจ้งให้เคอร์เนลโหลดโมดูลเชื่อมต่อทั้งสำหรับการติดตั้งปัจจุบันนี้รวมถึงการรีบูตในอนาคต หากต้องการโหลดโมดูลครั้งนี้ สามารถใช้ยูทิลิตี 'modprobe' เพื่อโหลดโมดูลเคอร์เนลได้

modprobe bonding

อีกครั้ง เพื่อให้แน่ใจว่าพันธะนี้ใช้งานได้เมื่อระบบรีบูต จำเป็นต้องแก้ไขไฟล์ '/etc/modules เพื่อแจ้งให้เคอร์เนลโหลดโมดูลการเชื่อมเมื่อเริ่มต้นระบบ

echo 'bonding' >> /etc/modules 

ตอนนี้เคอร์เนลได้รับทราบถึงโมดูลที่จำเป็นสำหรับการเชื่อม NIC แล้ว ก็ถึงเวลาสร้างอินเทอร์เฟซที่ถูกผูกมัดจริง ซึ่งทำได้ผ่านไฟล์อินเทอร์เฟซซึ่งอยู่ที่ '/etc/network/interfaces' และสามารถแก้ไขได้ด้วยโปรแกรมแก้ไขข้อความใดๆ

nano /etc/network/interfaces

ไฟล์นี้ประกอบด้วยการตั้งค่าอินเทอร์เฟซเครือข่ายสำหรับอุปกรณ์เครือข่ายทั้งหมดที่ระบบเชื่อมต่ออยู่ ตัวอย่างนี้มีการ์ดเครือข่ายสองใบ (eth0 และ eth1) ควรสร้างอินเทอร์เฟซบอนด์ที่เหมาะสมเพื่อรวมการ์ดเครือข่ายทางกายภาพทั้งสองไว้ในอินเทอร์เฟซแบบลอจิคัลเดียวในไฟล์นี้ นี่เป็นไฟล์อินเทอร์เฟซที่เรียบง่าย แต่ทำทุกอย่างที่จำเป็นเพื่อสร้างอินเทอร์เฟซที่ใช้งานได้

บทแรก (กล่องสีแดงด้านบน) คือการกำหนดค่าอินเทอร์เฟซแบบย้อนกลับมาตรฐาน 'auto lo' แจ้งให้เคอร์เนลนำอะแดปเตอร์ขึ้นมาโดยอัตโนมัติเมื่อเริ่มต้นระบบ 'iface lo inet loopback' จะบอกระบบว่าอินเทอร์เฟซนี้เป็นอินเทอร์เฟซแบบย้อนกลับของระบบหรือโดยทั่วไปจะอ้างอิงเป็น 127.0.0.1

บทที่สอง (กล่องสีเหลืองด้านบน) คือส่วนต่อประสานจริงที่จะใช้ 'พันธบัตรอัตโนมัติ0' บอกให้ระบบเริ่มต้นการเชื่อมโยงโดยอัตโนมัติเมื่อเริ่มต้นระบบ 'iface Bond0 inet dhcp' อาจชัดเจน แต่ในกรณีนี้ บทนี้ระบุว่าอินเทอร์เฟซที่ชื่อ bond0 ควรรับข้อมูลเครือข่ายผ่าน DHCP (โปรโตคอลการควบคุมโฮสต์แบบไดนามิก)

'bond-mode 1' คือสิ่งที่ใช้เพื่อกำหนดว่าโหมดบอนด์ใดที่ใช้โดยอินเทอร์เฟซที่ถูกผูกมัดนี้โดยเฉพาะ ในกรณีนี้ โหมดบอนด์ 1 บ่งชี้ว่าบอนด์นี้เป็นการตั้งค่าการสำรองข้อมูลที่ใช้งานอยู่ โดยมีตัวเลือก 'bond-primary' ระบุอินเทอร์เฟซหลักสำหรับบอนด์ที่จะใช้ 'slaves eth0 eth1' ระบุว่าอินเทอร์เฟซทางกายภาพใดที่เป็นส่วนหนึ่งของอินเทอร์เฟซที่ถูกผูกมัดนี้โดยเฉพาะ

สองสามบรรทัดถัดมามีความสำคัญในการพิจารณาว่าเมื่อใดที่บอนด์ควรเปลี่ยนจากอินเทอร์เฟซหลักไปเป็นอินเทอร์เฟซทาสตัวใดตัวหนึ่งในกรณีที่ลิงก์ล้มเหลว Miimon เป็นหนึ่งในตัวเลือกที่มีให้สำหรับการตรวจสอบสถานะของลิงก์พันธบัตร โดยอีกตัวเลือกหนึ่งคือการใช้คำขอ arp

คู่มือนี้จะใช้ miimon 'bond-miimon 100' บอกให้เคอร์เนลตรวจสอบลิงก์ทุกๆ 100 ms 'bond-downdelay 400' หมายความว่าระบบจะรอ 400 ms ก่อนที่จะสรุปว่าอินเทอร์เฟซที่ใช้งานอยู่ในปัจจุบันหยุดทำงานจริง

'bond-updelay 800' ใช้เพื่อบอกให้ระบบรอในการใช้อินเทอร์เฟซใหม่ที่ใช้งานอยู่จนถึง 800 ms หลังจากลิงก์ปรากฏขึ้น หมายเหตุเกี่ยวกับ updelay และ downdelay ทั้งสองค่านี้ต้องเป็นทวีคูณของค่า miimon มิฉะนั้นระบบจะปัดเศษลง