ที่อยู่ IP แบบคงที่สำหรับทราฟฟิกขาออกจากกลุ่มการปรับขนาดอัตโนมัติของ AWS


27

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

คำตอบ:


19

คุณต้องการ NAT การกำหนดค่านี้เป็นที่นิยมใช้เพื่อสนับสนุนเครือข่ายย่อยเอกชนใน VPC มีค่อนข้างคู่มือรายละเอียดที่นี่ เมื่อ VPC ของคุณได้รับการกำหนดค่าให้ใช้อินสแตนซ์ NAT การรับส่งข้อมูลขาออกทั้งหมดจะถูกนำมาประกอบกับ EIP ของอินสแตนซ์ NAT

ถ้าเป็นเช่นนั้นอินสแตนซ์นั้นจำเป็นต้องมีเพื่อวัตถุประสงค์นี้เพียงอย่างเดียวหรือเป็นหนึ่งในอินสแตนซ์ที่ใช้แอพของฉันหรือไม่

ในทางเทคนิคคุณอาจทำได้ แต่ไม่ใช่ความคิดที่ดี:

  • การรักษาความปลอดภัยที่ดีมีบทบาทแยกต่างหาก
  • คุณต้องการให้เซิร์ฟเวอร์แอปพลิเคชันของคุณมีโปรไฟล์การโหลดที่คล้ายกันหรือเหมือนกัน หากหนึ่งอินสแตนซ์มีการโหลดเพิ่ม 10% เนื่องจาก NAT คุณจะต้องขยายขนาดก่อนกำหนดเมื่อคุณถึงขีด จำกัด ของอินสแตนซ์นั้น สิ่งนี้จะแย่ลงเมื่อ NAT ยุ่งมากขึ้นเนื่องจากมีอินสแตนซ์เพิ่มเข้ามาในคลัสเตอร์ของคุณ
  • คุณต้องการให้เซิร์ฟเวอร์แอปพลิเคชันของคุณเหมือนกันและไม่ถาวรดังนั้นคุณจึงสามารถทำลายพวกเขาและ / หรือแทนที่พวกเขาเมื่อใดก็ตามที่มีปัญหาหรือคุณจำเป็นต้องปรับขนาด การมีแอปพลิเคชั่นเซิร์ฟเวอร์หนึ่งตัวที่แตกต่างจากที่เหลือน่าจะเป็นปัญหาใหญ่

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

โปรดทราบว่าอินสแตนซ์ NAT ของคุณอาจเป็นเพียงจุดเดียวของความล้มเหลวดังนั้นคุณอาจต้องการคิดถึงเรื่องความซ้ำซ้อน


การใช้ NAT จะเพิ่มเวลาตอบสนองของคำขอที่เพิ่มอินเทอร์เฟซเพิ่มเติม b / w ไคลเอ็นต์และเซิร์ฟเวอร์หรือไม่
r.bhardwaj

1
ฉันใช้ NAT เกตเวย์เพื่อให้บรรลุวัตถุประสงค์ ( docs.aws.amazon.com/elasticbeanstalk/latest/dg/vpc-rds.html ) แต่เมื่อฉันทำ nslookup ไปยังเซิร์ฟเวอร์ของฉันมันจะคืนค่าที่อยู่ IP สาธารณะที่แตกต่างจาก NAT เกตเวย์
r.bhardwaj

12

ฉันเข้าใจว่านี่เป็นเธรดเก่า - สำหรับคนที่มีเคสคล้ายกันตอนนี้ AWS nat-gatewayจะเป็นทางออกที่ดีกว่า


4

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

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

วิธีแก้ไขคือก่อนที่คุณจะสร้างเกตเวย์ NAT ให้สร้างซับเน็ตใหม่สำหรับ NAT เพื่อให้ NAT มีซับเน็ตและตารางเส้นทางของตัวเอง ในตารางเส้นทางของ NAT ให้ระบุการรับส่งข้อมูลทั้งหมดไปที่เกตเวย์อินเทอร์เน็ต ในตารางเส้นทางหลักของคุณชี้ IP ภายนอกของคุณไปที่ NAT จากนั้นเมื่ออินสแตนซ์ EC2 ของคุณพยายามเชื่อมต่อกับ IP ภายนอกของคุณพวกเขาจะค้นหาพวกเขาในตารางเส้นทางหลัก (หรือตารางเส้นทางใด ๆ ที่คุณกำหนดไว้สำหรับเครือข่ายย่อยที่อินสแตนซ์ของคุณอยู่) และค้นหา NAT จากนั้น NAT ของคุณจะค้นหา IP นั้นในตารางเส้นทางของตนเองและค้นหาอินเทอร์เน็ต


ฉันชอบที่จะเห็นภาพหน้าจอบางอย่างอาจจะ ฉันคิดว่านี่เป็นปัญหาของฉัน แต่ทำได้เพียง 50% เท่านั้น
justin pmchase

ฉันคิดว่าฉันมีมันตั้งค่าเช่นนี้ แต่เมื่อฉันพยายามที่จะ ssh เป็น IP สาธารณะของอินสแตนซ์ของฉันมันหมดเวลา อินสแตนซ์ต้องการอุปกรณ์เครือข่ายสองตัวเพื่อให้สามารถผ่าน NAT และรับการเชื่อมต่อขาเข้าจาก IP สาธารณะได้หรือไม่
justin.m.chase

คุณต้องเพิ่มอินเทอร์เฟซเครือข่ายที่สองให้กับอินสแตนซ์และไปยังเครือข่ายย่อยภายนอกจากนั้นกำหนด ip แบบยืดหยุ่นให้กับอินเทอร์เฟซเครือข่ายนั้น จากนั้นคุณสามารถเชื่อมต่อผ่าน IP นั้นได้ แต่ทราฟฟิกอื่น ๆ จะผ่าน nat ตามค่าเริ่มต้น
justin.m.chase
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.