TL; DR รุ่น:ปรากฎว่านี่เป็นข้อบกพร่องของเครือข่าย Broadcom ใน Windows Server 2008 R2 การแทนที่ด้วยฮาร์ดแวร์ของ Intel ได้รับการแก้ไข เราไม่ใช้ฮาร์ดแวร์ของ Broadcom อีกต่อไป เคย
เราได้ใช้HAProxyพร้อมกับheartbeatจากโครงการ Linux-HA เรากำลังใช้อินสแตนซ์ linux สองรายการเพื่อจัดเตรียมการเฟลโอเวอร์ แต่ละเซิร์ฟเวอร์มี IP สาธารณะของตัวเองและ IP เดียวซึ่งใช้ร่วมกันระหว่างทั้งสองโดยใช้อินเตอร์เฟสเสมือน (eth1: 1) ที่ IP: 69.59.196.211
อินเตอร์เฟสเสมือน (eth1: 1) IP 69.59.196.211 ได้รับการกำหนดค่าเป็นเกตเวย์สำหรับเซิร์ฟเวอร์ windows ที่อยู่ด้านหลังและเราใช้ ip_forwarding เพื่อกำหนดเส้นทางการรับส่งข้อมูล
เราประสบปัญหาเครือข่ายขัดข้องเป็นครั้งคราวในหนึ่งในเซิร์ฟเวอร์ windows ของเราที่อยู่ด้านหลังเกตเวย์ linux ของเรา HAProxy จะตรวจสอบว่าเซิร์ฟเวอร์ออฟไลน์ซึ่งเราสามารถตรวจสอบได้โดยการส่งไปยังเซิร์ฟเวอร์ที่ล้มเหลวและพยายาม ping เกตเวย์:
ส่ง Ping 69.59.196.211 พร้อมข้อมูล 32 ไบต์: ตอบจาก 69.59.196.220: ไม่สามารถเข้าถึงโฮสต์ปลายทางได้
การรันarp -a
บนเซิร์ฟเวอร์ที่ล้มเหลวนี้แสดงว่าไม่มีรายการสำหรับที่อยู่เกตเวย์ (69.59.196.211):
อินเตอร์เฟซ: 69.59.196.220 --- 0xa ที่อยู่อินเทอร์เน็ตประเภทที่อยู่ทางกายภาพ 69.59.196.161 00-26-88-63-c7-80 ไดนามิก 69.59.196.210 00-15-5d-0a-3e-0e แบบไดนามิก 69.59.196.212 00-21-5e-4d-45-c9 ไดนามิก 69.59.196.213 00-15-5d-00-b2-0d แบบไดนามิก 69.59.196.215 00-21-5e-4d-61-1a แบบไดนามิก 69.59.196.217 00-21-5e-4d-2c-e8 ไดนามิก 69.59.196.219 00-21-5e-4d-38-e5 ไดนามิก 69.59.196.221 00-15-5d-00-b2-0d แบบไดนามิก 69.59.196.222 00-15-5d-0a-3e-09 แบบไดนามิก 69.59.196.223 ff-ff-ff-ff-ff-ff-ff 224.0.0.22 01-00-5e-00-00-16 224.0.0.252 01-00-5e-00-00-fc 225.0.0.1 01-00-5e-00-00-01 คงที่
ในอินสแตนซ์ของ linux gateway ของเราarp -a
จะแสดง:
peak-colo-196-220.peak.org (69.59.196.220) ที่ <incomplete> บน eth1 stackoverflow.com (69.59.196.212) ที่ 00: 21: 5e: 4d: 45: c9 [ether] บน eth1 peak-colo-196-215.peak.org (69.59.196.215) ที่ 00: 21: 5e: 4d: 61: 1a [ether] บน eth1 peak-colo-196-219.peak.org (69.59.196.219) ที่ 00: 21: 5e: 4d: 38: e5 [ether] บน eth1 peak-colo-196-222.peak.org (69.59.196.222) ที่ 00: 15: 5d: 0a: 3e: 09 [ether] บน eth1 peak-colo-196-209.peak.org (69.59.196.209) ที่ 00: 26: 88: 63: c7: 80 [ether] บน eth1 peak-colo-196-217.peak.org (69.59.196.217) ที่ 00: 21: 5e: 4d: 2c: e8 [ether] บน eth1
เหตุใด arp จึงตั้งค่ารายการสำหรับเซิร์ฟเวอร์ที่ล้มเหลวนี้เป็น <incomplete> เป็นครั้งคราว เราควรจะกำหนดรายการ arp ของเราแบบคงที่? ฉันมักจะทิ้ง arp เพียงอย่างเดียวเพราะมันใช้งานได้ 99% ของเวลา แต่ในกรณีนี้ดูเหมือนว่าจะล้มเหลว มีขั้นตอนการแก้ไขปัญหาเพิ่มเติมใด ๆ ที่เราสามารถช่วยแก้ไขปัญหานี้ได้หรือไม่?
สิ่งที่เราลอง
ฉันได้เพิ่มรายการ arp แบบคงที่สำหรับการทดสอบหนึ่งในเกตเวย์ linux ซึ่งยังไม่ได้ช่วย
root@haproxy2:~# arp -a
peak-colo-196-215.peak.org (69.59.196.215) at 00:21:5e:4d:61:1a [ether] on eth1
peak-colo-196-221.peak.org (69.59.196.221) at 00:15:5d:00:b2:0d [ether] on eth1
stackoverflow.com (69.59.196.212) at 00:21:5e:4d:45:c9 [ether] on eth1
peak-colo-196-219.peak.org (69.59.196.219) at 00:21:5e:4d:38:e5 [ether] on eth1
peak-colo-196-209.peak.org (69.59.196.209) at 00:26:88:63:c7:80 [ether] on eth1
peak-colo-196-217.peak.org (69.59.196.217) at 00:21:5e:4d:2c:e8 [ether] on eth1
peak-colo-196-220.peak.org (69.59.196.220) at 00:21:5e:4d:30:8d [ether] PERM on eth1
root@haproxy2:~# arp -i eth1 -s 69.59.196.220 00:21:5e:4d:30:8d
root@haproxy2:~# ping 69.59.196.220
PING 69.59.196.220 (69.59.196.220) 56(84) bytes of data.
--- 69.59.196.220 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6006ms
การรีบูตหน้าต่างเว็บเซิร์ฟเวอร์ช่วยแก้ปัญหานี้ชั่วคราวโดยไม่มีการเปลี่ยนแปลงอื่น ๆ กับเครือข่าย แต่ประสบการณ์ของเราแสดงว่าปัญหานี้จะกลับมา
การสลับการ์ดเครือข่ายและสวิตช์
ฉันสังเกตเห็นไฟลิงค์ที่พอร์ตสวิตช์สำหรับเซิร์ฟเวอร์ windows ที่ล้มเหลวทำงานที่ 100Mb แทน 1Gb บนอินเตอร์เฟสที่ล้มเหลว ฉันย้ายสายเคเบิลไปยังพอร์ตที่เปิดอื่น ๆ และลิงก์ระบุ 100Mb สำหรับแต่ละพอร์ตที่ฉันพยายาม ฉันสลับสายด้วยผลลัพธ์เดียวกัน ฉันพยายามเปลี่ยนคุณสมบัติของการ์ดเครือข่ายใน windows และเซิร์ฟเวอร์ถูกล็อคและจำเป็นต้องรีเซ็ตฮาร์ดหลังจากคลิกใช้ เซิร์ฟเวอร์ windows นี้มีอินเทอร์เฟซเครือข่ายทางกายภาพสองอินดังนั้นฉันได้สลับสายเคเบิลและการตั้งค่าเครือข่ายในอินเทอร์เฟซสองแบบเพื่อดูว่าปัญหาดังต่อไปนี้กับอินเทอร์เฟซหรือไม่ หากส่วนต่อประสานสาธารณะลดลงอีกครั้งเราจะรู้ว่าไม่มีปัญหากับการ์ดเครือข่าย
(เราได้ลองสวิตช์ตัวอื่นที่เรามีในมือไม่มีการเปลี่ยนแปลง)
การเปลี่ยนเวอร์ชั่นไดรเวอร์ฮาร์ดแวร์เครือข่าย
เรามีปัญหาเดียวกันกับไดรเวอร์ Broadcom ล่าสุดรวมถึงไดรเวอร์ในตัวที่มาพร้อมกับ Windows Server 2008 R2
การเปลี่ยนสายเคเบิลเครือข่าย
ในความพยายามครั้งสุดท้ายที่เราจดจำการเปลี่ยนแปลงอื่นที่เกิดขึ้นคือการแทนที่สายแพทช์ทั้งหมดระหว่างเซิร์ฟเวอร์ / สวิตช์ของเรา เราได้ซื้อสองชุดความยาวสีเขียว 1 ฟุต - 3 ฟุตสำหรับอินเทอร์เฟซส่วนตัวและชุดสายเคเบิลสีแดงอีกชุดสำหรับอินเทอร์เฟซสาธารณะ เราเปลี่ยนสายแพตช์อินเตอร์เฟซสาธารณะทั้งหมดด้วยยี่ห้ออื่นและรันเซิร์ฟเวอร์ของเราโดยไม่มีปัญหาตลอดทั้งสัปดาห์ ... aaaaaand จากนั้นปัญหาก็เกิดขึ้นอีก
ปิดใช้งาน checksum offload, ลบ TProxy
นอกจากนี้เรายังลองปิดการใช้งานการถ่ายโอนข้อมูลการตรวจสอบ TCP / IP ในไดรเวอร์ไม่มีการเปลี่ยนแปลง ตอนนี้เรากำลังดึง TProxy ออกมาและย้ายไปที่การx-forwarded-for
จัดเรียงเครือข่ายแบบดั้งเดิมมากขึ้นโดยไม่ต้องเขียนที่อยู่ IP ที่แปลกใหม่ เราจะดูว่ามันช่วยได้ไหม
เปลี่ยนผู้ให้บริการการจำลองเสมือน
ในกรณีที่ไม่เกี่ยวข้องกับ Hyper-V ในบางวิธี (เราโฮสต์ Linux VM บนมัน) เราเปลี่ยนเป็น VMWare Server ไม่มีการเปลี่ยนแปลง.
สลับโฮสต์โมเดล
เรามาถึงจุดสิ้นสุดของการแก้ไขปัญหาเชือกของเราและตอนนี้อย่างเป็นทางการที่เกี่ยวข้องกับการสนับสนุนของ Microsoft พวกเขาแนะนำให้เปลี่ยนรูปแบบโฮสต์:
- http://en.wikipedia.org/wiki/Host_model
- http://technet.microsoft.com/en-us/magazine/2007.09.cableguy.aspx
เราทำอย่างนั้นและเรายังมีโปรแกรมแก้ไขด่วนเคอร์เนลที่ไม่ได้เผยแพร่ซึ่งคาดว่าจะถูกนำไปใช้ใน 2008 R2 SP1 ไม่มีการแก้ไข
การเปลี่ยนฮาร์ดแวร์การ์ดเครือข่าย
ในที่สุดการแทนที่ฮาร์ดแวร์เครือข่าย Broadcom ด้วยฮาร์ดแวร์เครือข่าย Intel แก้ไขปัญหานี้ให้เรา ดังนั้นฉันคิดว่าไดรเวอร์ Broadcom Windows Server 2008 R2 ผิดพลาด!