ทำ Network Bonding

จาก NakhonNet
ข้ามไปยัง: นำทาง, ค้นหา

การทำ Network Bonding เป็นการนำการ์ดแลนหลายๆ ใบ มาใช้งานร่วมกันเสมือนเป็นการ์ดแลนใบเดียวที่เร็วขึ้น ซึ่งในลินุกซ์สามารถทำได้หลายวิธี ขึ้นอยู่กับความเหมาะสม และสวิตช์นำมาใช้งานร่วมกันสนับสนุนหรือไม่

รูปแบบการใช้งาน

ในที่นี้จะใช้งานในแบบที่ไม่ต้องการความสามารถพิเศษของสวิตช์ ซึ่งสามารถทำได้ 2 วิธี คือ

  • Mode 5 หรือ balance-tlb (Adaptive Transmit Load Balancing) เป็นการเฉลี่ยส่งข้อมูลออกทางการ์ดแลนหลายใบ แต่รับข้อมูลทางการ์ดแลนใบแรกเพียงใบเดียว ถ้ามีการ์ดแลนเสียในระหว่างการใช้งาน ก็จะตัดการ์ดแลนใบดังกล่าวออกจากการรวม ในกรณีที่การ์ดแลนใบแรกเสียก็จะรับข้อมูลทางการ์ดแลนใบอื่นแทน การ์ดแลนที่จะใช้งานในโหมดนี้จะต้องมีคุณสมบัติดังนี้
    • รองรับ ethtool เพื่อให้ไดรเวอร์ตรวจสอบความเร็วของการ์ดแลนได้
  • Mode 6 หรือ balance-alb (Adaptive Load Balancing) เป็นการเฉลี่ยการส่ง และการรับข้อมูลผ่านทางการ์ดแลนหลายใบ ถ้ามีการ์ดแลนเสียในระหว่างการใช้งาน ก็จะตัดการ์ดแลนใบดังกล่าวออกจากการรวม การ์ดแลนที่จะใช้งานในโหมดนี้จะต้องมีคุณสมบัติดังนี้
    • รองรับ ethtool เพื่อให้ไดรเวอร์ตรวจสอบความเร็วของการ์ดแลนได้
    • รองรับการเปลี่ยน MAC Address ในระหว่างการใช้งาน

จากการใช้งาน ไดรเวอร์ตระกูล Realtek Gigabit (เช่น 8169, 8168, 8111) สามารถใช้งานได้ทั้ง โหมด 5 และ 6 ส่วนไดรเวอร์ตระกูล Atheros สามารถใช้งานได้เฉพาะโหมด 5

โปรแกรม ifenslave

การใช้งาน Network Bonding จะเรียกผ่านโปรแกรม ifenslave ซึ่งซอร์สโค้ดของโปรแกรมนี้จะอยู่ใน kernel ของลินุกซ์

หากใช้ kernel ของ Slackware 13.37 โดยไม่ได้คอมไพล์ kernel ใหม่ ซอร์สโค้ดจะอยู่ที่ /usr/src/linux/Documentation/networking/ifenslave.c หากคอมไพล์ kernel ใหม่ ซอร์สโค้ดก็จะอยู่ที Documentation/networking/ifenslave.c ภายใต้ไดเรกทอรีที่แตกไฟล์ซอร์สโค้ดของลินุกซ์ออกมา

การคอมไพล์ และติดตั้งโปรแกรมใช้คำสั่งดังนี้

# cd /usr/src/linux/Documentation/networking/
# gcc -Wall -O -I../../include ifenslave.c -o ifenslave
# cp ifenslave /sbin/ifenslave

ทดลองเรียกโปรแกรม โดยใช้คำสั่งดังนี้

# ifenslave --help

การเรียกใช้

การเรียกใช้งาน Network Bonding จะเป็นการติดตั้งโมดูล bonding แล้วระบุพารามิเตอร์ที่ต้องการ ในที่นี้จะเพิ่มคำสั่งการเรียกใช้งานในไฟล์ /etc/rc.d/rc.modules โดยแก้ไขท้ายไฟล์ดังนี้

[...]
fi # End enabling CPU scaling support

/sbin/modprobe bonding mode=balance-tlb

# We are done with these variables now:
unset NEWMODS RELEASE CPUFREQ SCALING_GOVERNOR SYSCPUFILE

สีน้ำเงินคือคำสั่งที่เพิ่มเข้าไป โดยในที่นี้เลือกใช้แบบ balance-tlb

คำสั่งนี้จะสร้างดีไวซ์ชื่อ bond0 เตรียมไว้ ซึ่งในขั้นตอนต่อไปก็จะต้องกำหนดค่า Network ให้กับดีไวซ์นี้ และนำการ์ดแลนเข้ามาอยู่ภายใต้ดีไวซ์นี้ (รายละเอียดในหัวข้อ กำหนดค่า Network)


View/Edit Diskless Server
ภาพรวม หลักการทำงาน - Hardware - Software
ติดตั้ง Server ติดตั้ง Slackware64 13.37 บูต - แบ่งพาร์ทิชั่น - เตรียมฮาร์ดดิสก์ - ติดตั้งแพ็กเกจ - ติดตั้ง Lilo - กำหนดค่าเน็ตเวิร์ก - กำหนดรหัสผ่าน - Slackware64 14.0
ปรับแต่ง Slackware Linux การใช้งานเบื้องต้น - คอมไพล์ Kernel - สร้างไดเรกทอรี - ปรับแต่ง Filesystem - ปรับแต่งแพ็กเกจ - เพิ่มการเรียก dhcpd
ปรับแต่ง Network กำหนดชื่อ Device - ทำ Network Bonding - กำหนดค่า Network
RAID สร้างพาร์ทิชั่น - สร้าง RAID - ไม่ใช้ RAID
กำหนดค่า Service NTPD - NAMED - TFTPD
โปรแกรม iSCSI Enterprise Target - iPXE
โปรแกรมจัดการระบบ Apache - MySQL - PhpMyAdmin - CakePHP - Disk Serve Manager (อัปเกรด)
ติดตั้ง Client ติดตั้ง Windows XP - ติดตั้ง iSCSI - ปรับแต่ง Windows XP - คัดลอกดิสก์ไปยังเซิร์ฟเวอร์ - Windows 7 64-bit
การใช้งาน ภาพรวม นิยาม - ไฟล์ Config และ Script
การกำหนดค่า Config - Cluster - Alternative - Computer - ตัวอย่าง
การใช้งาน หน้าจอหลัก - Mode การใช้งาน - ปรับปรุง Image - สำรอง Image - ขยายขนาด Image - ใช้หลาย Server
โปรแกรมเสริม ปรับแต่งเครื่องลูกขณะบูต - ฟอร์แมตไดรฟ์เสริม
การแก้ไขปัญหา FAQ - ไฟล์กำหนดค่า - ไฟล์บันทึกการทำงาน - Secure Erase