วิธีกำหนดค่าการเชื่อมโยง/การสร้างทีมเครือข่าย (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 มิฉะนั้นระบบจะปัดเศษลง