Elastic Load Balancer สำหรับ webapps หลายตัว


13

ฉันมีNwebapps แต่ละเว็บแอปให้บริการโดยชื่อโฮสต์ที่แตกต่างกันในโดเมนของฉันและปรับใช้กับ 2 อินสแตนซ์ที่ทำงานใน AWS กล่าวอีกนัยหนึ่งฉันมี2Nอินสแตนซ์แบ่งออกเป็นคู่ซึ่งเรียกใช้Nwebapps ที่แตกต่างกัน

ฉันต้องการตั้งค่า AWS Elastic Load Balancer เพียงหนึ่งตัวที่จะส่งคำขอไปยังหนึ่งในสองอินสแตนซ์ที่ให้บริการตามHostส่วนหัว เป็นไปได้หรือไม่ที่จะใช้ ELB เดี่ยวหรือต้องใช้NELB หนึ่งอันสำหรับแต่ละคู่


คำตอบ:


19

ELB เดี่ยวจะกำหนดเส้นทางการรับส่งข้อมูลไปยังอินสแตนซ์หนึ่งชุดและกระจายการรับส่งข้อมูลไปยังอินสแตนซ์ทั้งหมด "หลัง" มันไม่ได้เลือกเส้นทางการรับส่งข้อมูลตามการวิเคราะห์เลเยอร์ 7 ของการรับส่งข้อมูลเช่นHost:ส่วนหัว

คุณต้องใช้ELB หนึ่งชุดสำหรับแต่ละชุดอินสแตนซ์ ตามที่คุณอธิบายนั่นเป็นหนึ่ง ELB สำหรับแต่ละเว็บแอป

หากวัตถุประสงค์หลักของคุณในการใช้งาน ELB นั้นเป็นการถ่ายโอน SSL โดยใช้ใบรับรองไวด์การ์ด (ฉันมีระบบเดียวที่ได้รับการออกแบบเช่นนี้โดยมีแอพจำนวนมากที่อาศัยอยู่ในหลายโดเมนที่แตกต่างกันไปที่โดเมนโดเมน -cild-domain.com) "เบื้องหลัง" ELB สามารถเรียกใช้พร็อกซีย้อนกลับได้เช่น HAProxy (หรือทางเลือกอื่น ๆ เช่น Varnish) ที่สามารถทำการตัดสินใจเส้นทางเลเยอร์ -7 และส่งต่อการรับส่งข้อมูลไปยังชุดย่อยที่เหมาะสมของเครื่องที่อยู่ด้านหลัง โหลดบาลานซ์และมีข้อได้เปรียบในการให้สถิติและเคาน์เตอร์การจราจรรวมและแยกจากกัน

       /-- HAProxy \  /----- instances hosting app #1  
ELB ---|            >> ----- instances hosting app #2 
       \-- HAProxy /  \----- instances hosting app #n 

อินสแตนซ์ระดับกลาง ^^^^ สามารถประเมินHost:ส่วนหัว (เหนือสิ่งอื่นใด) และแม้กระทั่งจับมูลค่าคุกกี้เซสชั่นในบันทึกของพวกเขาสำหรับการวิเคราะห์

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


3
ในเดือนสิงหาคม 2559 อเมซอนเปิดตัวAWS Application Load Balancerซึ่งช่วยให้สามารถกำหนดเส้นทางไปยังกลุ่มเป้าหมายต่าง ๆ ตามส่วนหัว HTTP
Jens Bannmann

2
@JensBannmann ที่เป็นจริง เมื่อพวกเขาเผยแพร่กฎการกำหนดเส้นทางที่สนับสนุนเพียงอย่างเดียวนั้นขึ้นอยู่กับเส้นทาง ในปี 2560 พวกเขาเพิ่มความสามารถในการกำหนดเส้นทางตามHost:ส่วนหัว คำตอบนี้ถูกต้องกลับมาเมื่อฉันเขียนมันในปี 2014 แต่ดูเหมือนว่าถึงเวลาสำหรับการปรับปรุง ขอบคุณที่นำมันกลับมาให้ฉัน
Michael - sqlbot

3

ณ เดือนสิงหาคม 2559 Amazon ELB เสนอเครื่องถ่วงน้ำหนักสองประเภท:

  • Classic Load Balancer จัดเส้นทางการรับส่งข้อมูลทั้งหมดไปยังอินสแตนซ์หนึ่งชุดโดยไม่พิจารณาเนื้อหาของแอปพลิเคชันโปรโตคอล ก่อนหน้านี้เป็นรุ่นเดียวของ ELB ที่มีอยู่
  • Application Load Balancerสามารถกำหนดเส้นทางทราฟฟิกไปยังกลุ่มเป้าหมายที่แตกต่างกันตามกฎที่กำหนดค่าได้ตามเส้นทาง URL บล็อกโพสต์ใหม่ - AWS Application Load Balancerกล่าวถึงแอปพลิเคชันที่ประกอบด้วยไมโครไซต์เป็นกรณีการใช้งานที่สำคัญและให้คำแนะนำการตั้งค่าโดยละเอียด

สำหรับกรณีการใช้งานของคุณ Application Load Balancer นั้นเหมาะอย่างยิ่ง อย่างไรก็ตามมี จำกัด เพียง 10 กฎเท่านั้นดังนั้นจะทำงานได้ง่ายหากคุณNไม่ใหญ่กว่า 10


0

ในรายการอินสแตนซ์ของ ec2 คุณเห็นสองอินสแตนซ์ใช่ไหม แต่ในแต่ละครั้งคุณมี webapps มากมาย? คุณใช้โฮสต์เสมือนเพื่อปรับใช้แต่ละรายการหรือไม่

คุณต้องการเพียง ELB เดียวเพื่อแบ่งค่าใช้จ่ายในโฮสต์ของคุณ ตัวอย่าง:

External request > ELB (based on CNAME pointer)  > EC2 Instance. 

ฉันคิดว่านั่นเป็นสิ่งที่ดีกว่าถ้าคุณให้สถานการณ์ของคุณมากขึ้นและบางทีฉันอาจช่วยคุณได้

ความนับถือ.

UPDATE

หากคุณมี webapps ที่แตกต่างกันในอินสแตนซ์ของ EC2 คุณจะต้องมี Elastic Load Balancer สองตัว (ELB) แต่ละอันสำหรับอินสแตนซ์คู่ ทั้งหมดสี่อินสแตนซ์


ในรายการอินสแตนซ์ของฉันฉันเห็น2Nแอพ มี webapps N สองรายการสำหรับแต่ละรายการ ฉันจะแก้ไขคำถามเพื่อชี้แจงนี้
thesamet

อัปเดตการตอบสนอง
Junior Rocha
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.