Score:0

วิธีตั้งค่าการเปลี่ยนเส้นทางแบบมีเงื่อนไขบน Application Load Balancer สำหรับสภาพแวดล้อม Elastic Beanstalk

ธง ng

ฉันมีสภาพแวดล้อม Elastic Beanstalk อินสแตนซ์เดียวที่ใช้ Docker สองตัว (หนึ่งรายการสำหรับการแสดงละครและอีกรายการสำหรับการผลิต)

ฉันต้องการย้ายแอปพลิเคชัน (Elastic Beanstalk) ไปนั่งหลังตัวโหลดบาลานเซอร์ (โดยหลักแล้วจะใช้ประโยชน์จาก ผู้จัดการใบรับรอง AWS).

ปัจจุบันผมใช้ .ebextensions เพื่อปรับแต่งการกำหนดค่า Nginx ให้ตรงตามข้อกำหนดการกำหนดเส้นทางการรับส่งข้อมูลของแอปพลิเคชันของฉัน:

  • สำหรับเส้นทาง /xyz/การรับส่งข้อมูลควรไปที่แอปผ่านพอร์ต 80 (เช่น HTTP)
  • สำหรับคำขออื่นๆ ทั้งหมดไปยังพอร์ต 80 ควรส่งการตอบสนองการเปลี่ยนเส้นทาง (301) ไปยังพอร์ต 443 (HTTPS)
  • คำขอทั้งหมดบนพอร์ต 443 (HTTPS) ควรส่งผ่านไปยังแอป

ดังนั้นคำถามของฉันคือ: ฉันจะบรรลุข้อกำหนดการกำหนดเส้นทางเหล่านั้นโดยใช้โหลดบาลานเซอร์ต่อหน้าหนึ่งในสภาพแวดล้อม Elastic Beanstalk ของฉันได้อย่างไร ฉันคิดว่าจะมีโหลดบาลานเซอร์หนึ่งตัวต่อสภาพแวดล้อม เพื่อความยืดหยุ่น

ฉันพบวิธีแก้ปัญหาที่เป็นไปได้ต่อไปนี้ (ไม่มีวิธีใดที่ดูดีเลย):

  1. ตั้งค่าสภาพแวดล้อมใหม่ของ Elastic Beanstalk ด้วยสภาพแวดล้อมเฉพาะ แอปพลิเคชัน Load Balancer จากนั้นแก้ไขตัวฟังและกฎของโหลดบาลานเซอร์ผ่านบริการคอนโซล EC2 (คล้ายกับอะไร นี้ รายการเอกสารประกอบของ Elastic Beanstalk ดูเหมือนจะแนะนำภายใต้ "เปลี่ยนเส้นทางการรับส่งข้อมูล HTTP ไปยัง HTTPS > กำหนดค่าโหลดบาลานเซอร์")
  2. ตั้งค่า Application Load Balancer ใหม่ผ่านบริการคอนโซล EC2 สร้างสภาพแวดล้อม Elastic Beanstalk ใหม่ที่เชื่อมต่อกับ Application Load Balancer ใหม่เป็น Application Load Balancer ที่ใช้ร่วมกัน จากนั้นทำตามคำแนะนำเหล่านี้ (นี้ และ นี้) เพื่อ (หวังว่าจะ?) ตรวจสอบให้แน่ใจว่าโหลดบาลานเซอร์และสภาพแวดล้อมของ Elastic Beanstalk ซิงค์กัน (ในแง่ของการจัดการอินสแตนซ์และการกำหนดเส้นทางการรับส่งข้อมูล)
  3. ตั้งค่าสภาพแวดล้อม Elastic Beanstalk ใหม่ด้วย Application Load Balancer เฉพาะ จากนั้นปรับเปลี่ยนแอปพลิเคชันเพื่อให้รับข้อมูลบนพอร์ตสามพอร์ต (พอร์ตหนึ่งสำหรับ /xyz/ ทราฟฟิกหนึ่งอันสำหรับการเปลี่ยนเส้นทาง HTTP -> HTTPS และอีกอันสำหรับทราฟฟิก HTTPS) ซึ่ง docs ที่นี่ ดูเหมือนจะบอกให้ฉันทำ (แต่ไม่ได้พูดถึงวิธีรับพอร์ตการฟังหลายพอร์ตในแอปเดียว)

ตัวเลือกที่หนึ่งและสองเกี่ยวข้องกับการ "ย้อนกลับ" ของ Elastic Beanstalk เพื่อแก้ไขทรัพยากรพื้นฐาน (ซึ่งฉันลังเลที่จะทำ) และตัวเลือกที่สามต้องการให้ฉันแก้ไขแอปพลิเคชันของฉัน (ซึ่งฉันอยากลองและหลีกเลี่ยง)

มีตัวเลือกเหล่านี้หรือไม่? มีตัวเลือกที่ดีกว่านี้หรือไม่?

Score:0
ธง ng

หลังจากติดต่อฝ่ายสนับสนุนด้านเทคนิคของ AWS เกี่ยวกับเรื่องนี้ ฉันสามารถยืนยันได้ว่า:

  • รองรับตัวเลือกที่สองและไม่จำเป็นต้องใช้คำแนะนำที่ฉันกล่าวถึง เช่น. ตราบใดที่คุณเลือกตัวจัดสรรภาระงานของแอปพลิเคชัน (สร้างจาก EC2) เป็นตัวจัดสรรภาระงานที่ใช้ร่วมกัน (ในสภาพแวดล้อมของ Elastic Beanstalk) สิ่งเหล่านี้จะซิงค์กัน (ในแง่ของการกำหนดเส้นทางการรับส่งข้อมูลไปยังอินสแตนซ์ในสภาพแวดล้อมอย่างเหมาะสม)
  • ความเป็นไปได้อีกอย่างคือการใช้ตัวเลือกแรก แต่แทนที่จะแก้ไขโหลดบาลานเซอร์ใน EC2 (ซึ่งฉันเดาว่าจะไม่แนะนำ) คุณสามารถใช้ ".ebextensions" เพื่อแก้ไขโหลดบาลานเซอร์ ดังนั้น โดยทั่วไป เมื่อใดก็ตามที่คอนโซล AWS ไม่มี GUI เพื่อให้บรรลุข้อกำหนดของ Elastic Beanstalk คุณสามารถใช้ ".ebextensions" เพื่อแก้ไข GUI ของคอนโซล Elastic Beanstalk ที่ขาดหายไปได้
Rami avatar
us flag
คุณมีเทมเพลตเกี่ยวกับวิธีการแก้ไขใน CloudFormation ไหม ตอนนี้ฉันเกือบจะมีปัญหาเดียวกัน
ng flag
ไม่ ขอโทษ ฉันไม่ได้ใช้ CloudFormation

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา