ความแตกต่างของการสร้างสมดุลระหว่าง DNS และ IP - การส่งต่อและการเปลี่ยนเส้นทาง


9

ฉันเจอสถานการณ์ที่ฉันไม่เข้าใจ เรามีไฟร์วอลล์ Fortigate ที่เราเปิดใช้งานเพื่อทำการโหลดบาลานซ์ในเว็บเซิร์ฟเวอร์ Apache สองแบ็คเอนด์ จากนั้นชื่อ DNS จะถูกแมปกับ IP เสมือนบน Load Balancer

ตามที่คาดไว้เมื่อคุณเรียกดูชื่อ / URL DNS (เช่น www.something.com) Load Balancer จะแสดงหน้าจากหนึ่งในเว็บเซิร์ฟเวอร์ Apache ส่วนหลัง URL ที่เข้าพักในเบราว์เซอร์ www.something.com จากสิ่งที่ฉันเข้าใจ Load Balancer ในกรณีนี้เป็นเพียงการส่งต่อแพ็กเก็ตระหว่างเบราว์เซอร์และ Apache ในขณะที่อยู่ในเส้นทางเสมอ

อย่างไรก็ตามหากฉันเรียกดูที่อยู่ IPที่ DNS ถูกแมปไปโหลดบาลานซ์จะส่งคืน HTTP 302 Found โดยมีส่วนหัว Location ตั้งเป็น URL DNS ของหนึ่งใน Apaches URL ในเบราว์เซอร์เปลี่ยนเป็น DNS เซิร์ฟเวอร์ด้านหลัง

เหตุใดจึงเปลี่ยนเส้นทางตัวโหลดบาลานซ์เมื่อมีการสอบถามผ่าน IP แต่ส่งต่อในเส้นทางอย่างถูกต้องเมื่อถูกสอบถามผ่านชื่อ DNS

คำตอบ:


10

ฉันไม่ได้ใช้ Fortigate FW สำหรับการทำ load balancing ดังนั้นฉันจะตอบคำถามโดยทั่วไปมากกว่า

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

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

ประการที่สองเพื่อดูรายละเอียดเพิ่มเติมอีกเล็กน้อย โดยทั่วไปตัวโหลดบาลานซ์จะทำงานที่ L7 เป็นอย่างน้อยในกลุ่ม HTTP และ HTTPS ซึ่งหมายความว่าพวกเขาไม่เพียงแค่ดูที่อยู่ IP และส่งต่อหรือไม่ก็ "เปลี่ยนเส้นทาง" หน้า

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

ฉันขอแนะนำให้คุณใช้เวลาอ่านเอกสารของผู้จำหน่ายอย่างเต็มที่เพื่อให้เข้าใจถึงวิธีการทำโหลดบาลานซ์ได้ดีขึ้น (ด้วย Fortigate คุณสามารถอ่านได้ทั้ง Coyote Point และ Coyote Point - บริษัท Fortigate ที่ได้รับภาระอื่น) การทำความเข้าใจกับสิ่งที่กำลังทำอยู่จะช่วยคุณในกรณีเช่นนี้และจะช่วยให้คุณปลดล็อคความสามารถที่คุณไม่เคยรู้มาก่อน


ปัญหาคือการกำหนดค่าบนเว็บเซิร์ฟเวอร์ Apache ส่วนหลัง จำเป็นต้องเพิ่มชื่อ DNS ใหม่เป็นนามแฝง
Yusuf

3

หลังจากอ่านการโหลดบาลานซ์บนโฮสต์ HTTPในเอกสารFortigate Load Balancingฉันสามารถดูว่าคุณสามารถมีการกำหนดค่าโหลดบาลานซ์ผิดปกติที่อาจส่งผลให้สิ่งที่คุณอธิบายได้อย่างไร อย่างไรก็ตามหากไม่มีส่วนหนึ่งของการตั้งค่าของคุณเราไม่สามารถมั่นใจได้ว่าเป็นกรณีนี้สำหรับคุณ

FortiGate FortiOS ช่วยให้เซิร์ฟเวอร์เสมือนที่จะสร้างขึ้นที่จะเชื่อมโยงไปยังเซิร์ฟเวอร์จริงว่าแต่ละคนมีการกำหนดค่าส่วนหัวของโฮสต์ที่แตกต่างกัน ควรร้องขอใด ๆ host headerตรงกับวีไอพีของเซิร์ฟเวอร์เสมือนของคุณร้องขอโหลดสมดุลจะไปที่เซิร์ฟเวอร์จริงว่าการแข่งขันนั้น ส่วนที่สำคัญที่สุดที่อธิบายอาการของคุณได้ดีคือเซิร์ฟเวอร์ตัวใดตัวหนึ่งสามารถละเว้นส่วนหัวของโฮสต์เพื่อให้ตรงกับส่วนหัวของโฮสต์ใด ๆ

เซิร์ฟเวอร์จริงที่ไม่มีส่วนหัวของโฮสต์อาจได้รับการกำหนดค่าให้เป็น "catch-all" ที่เชื่อมโยงกับไซต์ที่เปลี่ยนเส้นทาง

จากตัวอย่างด้านล่างมีเพียงตัวที่ 1 และตัวที่ 2 เท่านั้นที่จัดการปริมาณข้อมูลที่ตรงกับชื่อ DNS ที่คุณต้องการผ่านทางส่วนหัวของโฮสต์ แต่ตัวที่ 3 จะทำทุกอย่างที่ตรงกับส่วนหัวของโฮสต์อื่น ๆ ทั้งหมดซึ่งรวมถึง DNS VIP ของตัวเอง .

config ไฟร์วอลล์ vip
 แก้ไข "http-host-ldb"
  เซ็ตเซิร์ฟเวอร์ชนิดโหลดบาลานซ์
  set extip 192.0.2.1
  ตั้ง extintf "lan"
  ตั้งค่า http ประเภทเซิร์ฟเวอร์
  ตั้งค่า ldb-method http-host
  ตั้งค่า extport 80
  ตั้งค่า realservers
    แก้ไข 1
      ตั้งค่า http-host "www.example.com"
      ตั้งค่า ip 192.168.2.1
      ตั้งค่าพอร์ต 80
      ต่อไป
    แก้ไข 2
      ตั้งค่า http-host "www.example.com"
      ตั้งค่า ip 192.168.2.2
      ตั้งค่าพอร์ต 80
      ต่อไป
    แก้ไข 3
      ตั้งค่า ip 192.168.2.3
      ตั้งค่าพอร์ต 80
      ต่อไป
    ปลาย
 ปลาย

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


ในการกำหนดค่านี้กำลังตั้งค่าการจับคู่ตามชื่อ และนั่นคือปัญหา หากคุณไปที่วีไอพีตามที่อยู่มันจะไม่รู้ว่าจะทำอย่างไรกับมัน (กฎ NAT ปกติจะนำไปใช้)
Ricky Beam

เหตุผลหลักที่ฉันไม่เชื่อว่านี่เป็นคำตอบคือไม่มี FW / load balancer ที่ฉันรู้ว่าจะส่งคืน 302 ด้วยตำแหน่งที่ตั้งเป็นชื่อโฮสต์ / โดเมนของทรัพยากรภายใน (อย่างน้อยก็ไม่มีการกำหนดค่าให้ทำ ดังนั้นซึ่งไม่ได้เป็นกรณีตามคำถาม)
YLearn

@RickyBeam เฉพาะผู้เข้าชมคนแรกที่ทำการจับคู่ชื่อโฮสต์ ผู้สังเกตการณ์คนสุดท้ายจะจับคู่ที่อยู่ VIP เป็นโฮสต์
generalnetworkerror

@YLearn ฉันเห็นด้วยว่าสิ่งนี้จะแปลก ฉันกำลังบอกว่า rserver ไม่ใช่ LB จะทำ 302 และมีผึ้งกำหนดค่าให้ทำเช่นนั้น ฉันรู้ว่าไม่มี LB ที่จะทำเช่นนั้น
generalnetworkerror
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.