Amazon Elastic Load Balancing โหลดบาลานซิ่งสถาปัตยกรรมที่มีความพร้อมใช้งานสูง: ให้เซิร์ฟเวอร์ของคุณเป็น "ตำรวจจราจรจราจร" ระดับบนสุด

2026-05-27 阅读 11
1

ในโลกอินเทอร์เน็ตมีสองสิ่งที่ทำให้สถาปนิกและเจ้านายนอนไม่หลับมากที่สุด:

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

หากคุณเปรียบเทียบคลัสเตอร์เซิร์ฟเวอร์ส่วนหลังของคุณกับพนักงานบอกของธนาคารเมื่อมีลูกค้าเพียงหนึ่งหรือสองรายทุกคนก็อยู่ในความสงบแต่เมื่อ Double Eleven, Black Friday หรือข่าวด่วนมาถึงลูกค้าหลายพันคนก็หลั่งไหลเข้ามาทันทีพนักงานบอกเพียงคนเดียวจะไม่เพียงแต่เข้าแถวยาว (เว็บไซต์ติดขัด) แต่พนักงานบอกจะพังโดยตรงเนื่องจากทำงานหนักเกินไป (เซิร์ฟเวอร์หยุดทำงาน).

จะแก้ยังไงดี? คุณต้องมี "ผู้จัดการล็อบบี้" ที่ฉลาดและมีความสามารถเพื่อรักษาความสงบเรียบร้อยและกระจายลูกค้าไปยังหน้าต่างว่างแต่ละบานอย่างเท่าเทียมกันในระบบนิเวศของ Amazon Cloud Technology (AWS) บทบาทนี้คือ

ELB(Elastic Load Balancing, การจัดสรรภาระงานที่ยืดหยุ่น)

วันนี้เราไม่ได้ใช้คำศัพท์ PPT ที่คลุมเครือแต่ใช้มุมมองเชิงปฏิบัติที่บริสุทธิ์ในการแยกชิ้นส่วนวิธีใช้ ELB เพื่อสร้าง "สถาปัตยกรรมการจัดสรรภาระงานที่มีความพร้อมใช้งานสูง" ที่ไม่สามารถทำลายได้

1.การเลือกหลัก: คุณควรเลือกสมาชิกตระกูล ELB หลักสามตระกูลใด?

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

1. ALB (Application Load Balancer) -App โหลดควอไลเซอร์

การวางตำแหน่ง: มุ่งเน้นไปที่การรับส่งข้อมูล HTTP/HTTPS (นั่นคือเลเยอร์แอปพลิเคชันในโปรโตคอลเจ็ดชั้นของเครือข่าย)

ทักษะเฉพาะ: ฟังก์ชันการกำหนดเส้นทางขั้นสูงสามารถเข้าใจเนื้อหาของคำขอตัวอย่างเช่นผู้ใช้เยี่ยมชมนอกจากนี้ยังรองรับการกระจายการเข้าชมตามชื่อโดเมน (โฮสต์), Header และแม้แต่สตริงการสืบค้น

สถานการณ์ที่ใช้งานได้: เว็บแอปพลิเคชันส่วนใหญ่สถาปัตยกรรมไมโครเซอร์วิสแอปพลิเคชันคอนเทนเนอร์ (ECS/EKS)

2. NLB (Network Load Balancer) -เครือข่ายโหลดควอไลเซอร์

การวางตำแหน่ง: มุ่งเน้นไปที่การรับส่งข้อมูล TCP/UDP/TLS (ชั้นการขนส่งในโปรโตคอลเครือข่ายสี่ชั้น)

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

สถานการณ์ที่ใช้งานได้: เซิร์ฟเวอร์เกมระบบธุรกรรมทางการเงินความถี่สูงจุดสิ้นสุดการรับข้อมูล Internet of Things (IoT)

3. GLB (Gateway Load Balancer)

-เกตเวย์โหลดอีควอไลเซอร์

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

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

2.การออกแบบสถาปัตยกรรมที่มีความพร้อมใช้งานสูง: ELB บรรลุ "การรักษาตัวเองล้มเหลว" ได้อย่างไร?

สามเณรหลายคนจะมีคำถาม: "ฉันส่งการเข้าชมทั้งหมดให้กับ ELB แล้วถ้า ELB วางสายด้วยตัวเองล่ะ? มันไม่ใช่จุดเดียวของความล้มเหลวหรือ?"

AWS ได้พิจารณาเรื่องนี้มานานแล้วในชื่อ ELB

Elastic (ยืดหยุ่น)

มีสองความหมาย:

ความยืดหยุ่นของความจุ

และ

ความยืดหยุ่นของสถาปัตยกรรม

1.ข้ามพื้นที่ว่าง (Multi-AZ) ที่มีอยู่สูง

เมื่อออกแบบสถาปัตยกรรม ELB หลักการหลักคือ

อย่าใส่ไข่ในตะกร้า

พื้นที่ทางภูมิศาสตร์ (ภูมิภาค) ของ AWS แต่ละแห่งมีพื้นที่ว่างอิสระหลายแห่ง (Availability Zone เรียกว่า AZ) แต่ละ AZ มีไฟฟ้าเครือข่ายและระบบระบายความร้อนที่เป็นอิสระ

เมื่อคุณสร้าง ELB ระบบจะบังคับให้คุณเลือกพื้นที่ว่างอย่างน้อยสองแห่งในความเป็นจริง ELB จะปรับใช้ "โหนด (โหนด)" ของการจัดสรรภาระงานโดยอัตโนมัติในแต่ละพื้นที่ว่างที่คุณเลือก

เมื่อผู้ใช้เริ่มคำขอ DNS จะกระจายการสำรวจการรับส่งข้อมูลไปยังโหนดพื้นที่ว่างต่างๆเหล่านี้

หากพื้นที่ว่าง A เป็นอัมพาตโดยสิ้นเชิงจากฝนตกหนักและไฟฟ้าดับความละเอียด DNS ที่ด้านบนของ ELB จะตัดการรับส่งข้อมูลโดยอัตโนมัติและเทลงในโหนดของพื้นที่ว่าง B กระบวนการทั้งหมดไม่ได้รับรู้อย่างสมบูรณ์สำหรับผู้ใช้

2.ตรวจสุขภาพ (Health Check): กำจัด "แกะดำ" ได้อย่างแม่นยำ

นักฆ่าคนสำคัญอีกคนที่ ELB สามารถรักษาความพร้อมใช้งานได้สูงคือ

ตรวจสุขภาพ

คุณต้องกำหนดค่ากฎสำหรับ ELB เช่น:

ทุกๆ10วินาทีให้ส่งคำขอ HTTP ไปยังเส้นทาง/health ของเซิร์ฟเวอร์แบ็กเอนด์หากคุณส่งคืน200 OK 3ครั้งติดต่อกันแสดงว่าเซิร์ฟเวอร์ยังมีชีวิตอยู่หากไม่มีการตอบสนองติดต่อกัน2ครั้งเซิร์ฟเวอร์จะถูกตัดสินว่า "ป่วย"

เมื่อเซิร์ฟเวอร์ถูกตัดสินว่าไม่แข็งแรง ELB จะทันที

บล็อก

และไม่ส่งการเข้าชมใหม่ๆอีกต่อไปจนกว่าจะกลับสู่สภาวะปกติสิ่งนี้ประสบความสำเร็จในการหลีกเลี่ยงโศกนาฏกรรม "เนื่องจากเซิร์ฟเวอร์ขัดข้องผู้ใช้1/3รายงานข้อผิดพลาดในการเข้าถึง"

3.แบบฝึกหัดการต่อสู้จริง: สร้างชุดสถาปัตยกรรมเว็บที่มีความพร้อมใช้งานสูง ALB Multi-AZ

ต่อไปเราจะนำ ALB ที่คลาสสิกที่สุดมาเป็นตัวอย่างและทำตามขั้นตอนการกำหนดค่ามาตรฐานของสภาพแวดล้อมการผลิต

ขั้นตอนที่1: เตรียมแบ็คเอนด์ "Target Group"

ก่อนที่จะกำหนดค่าโหลดบาลานซ์เราต้องบอกก่อนว่า "ส่งทราฟฟิกไปให้ใคร" ใน AW

ใน S ชุดแบ็คเอนด์นี้เรียกว่ากลุ่มเป้าหมาย

เปิดคอนโซล EC2ค้นหา Target Groups ในแถบนำทางด้านซ้ายแล้วคลิก Create target groups

เลือกประเภทเป้าหมายมักจะเลือก Instances (อินสแตนซ์) ป้อนชื่อ

โปรโตคอลและพอร์ต: เลือก HTTP:80 (หรือพอร์ตที่แอปของคุณทำงาน)

(การตรวจสุขภาพ): เส้นทางการตรวจสอบมักจะเขียนอินเตอร์เฟซสถานะบริการของคุณเช่น/หรือ/status.html 。ขยายการตั้งค่าขั้นสูงตั้งค่า "เกณฑ์สุขภาพ" เป็น3 "เกณฑ์ที่ไม่แข็งแรง" เป็น2 "หมดเวลา" เป็น5วินาทีและ "ช่วงเวลา" เป็น10วินาที

คลิกถัดไปเลือกอินสแตนซ์ของเว็บเซิร์ฟเวอร์ที่คุณเริ่มต้นในพื้นที่ใช้งานที่แตกต่างกัน (เช่น AZ-A และ AZ-B) แล้วคลิกกลุ่มเป้าหมายที่สร้างขึ้น

ขั้นตอนที่2: สร้าง Application Load Balancer

คลิก Load Balancers ในแถบนำทางด้านซ้ายคลิก Create load Balancer เลือก Application Load Balancer

Scheme (แผน): เลือก Internet-facing (เน้นอินเทอร์เน็ต) หากคุณโหลดไมโครเซอร์วิสบนเว็บให้เลือก Internal

Network Mapping: เลือก VPC ของคุณขั้นตอนสำคัญ: ตรวจสอบพื้นที่ว่างอย่างน้อยสองแห่ง (เช่น us-east-1a และ us-east-1b) และเลือกเครือข่ายย่อยเครือข่ายสาธารณะ (Public Subnet) ที่สอดคล้องกับพื้นที่ว่างแต่ละแห่ง💡แนวทางการหลีกเลี่ยงสถาปัตยกรรม: ALB ต้องอยู่ในเครือข่ายย่อยของเครือข่ายสาธารณะเพื่อให้สามารถรับ IP เครือข่ายสาธารณะเพื่อรับปริมาณการใช้งานอินเทอร์เน็ตแต่ว่า! เว็บเซิร์ฟเวอร์แบ็คเอนด์ (EC2) ของคุณสามารถและขอแนะนำอย่างยิ่งให้วางไว้ใน ** Subnet ส่วนตัว ** ด้วยวิธีนี้ไม่มีใครจากโลกภายนอกสามารถโจมตีเซิร์ฟเวอร์ของคุณได้โดยตรงผ่าน IP การป้องกันความปลอดภัยทั้งหมดดำเนินการโดย ALB ส่วนหน้าและความปลอดภัยของสถาปัตยกรรมจะเต็มทันที

ขั้นตอนที่3: กำหนดค่ากลุ่มความปลอดภัย (Security Groups) และฟัง

กลุ่มความปลอดภัย: เชื่อมโยงกลุ่มความปลอดภัยสำหรับ ALB และต้องเปิดพอร์ต TCP 80(HTTP) และ TCP 443(HTTPS)

รายชื่อและการกำหนดเส้นทาง: ตามค่าเริ่มต้นจะมีจอภาพ HTTP:80ในเมนูแบบเลื่อนลง Forward to (ส่งต่อไปยัง) ให้เลือก "กลุ่มเป้าหมาย" ที่เราสร้างในขั้นตอนแรกเช่น

หากคุณมีใบรับรอง SSL ให้คลิกเพิ่ม listener เพิ่ม HTTPS:443และกำหนดค่าใบรับรองชื่อโดเมนของคุณ

คลิกที่ด้านล่าง

Create load balancer

。หลังจากนั้นประมาณ2นาทีสถานะ ALB จะกลายเป็น

Active

คุณจะได้รับชื่อ DNS ยาว (ตัวอย่างเช่น:

My-alb-123456789.us-east-1.elb.amazonaws.com

)。

ประการที่สี่ขั้นสูงขั้นสูง: การผสมผสานกับ Auto Scaling (ความยืดหยุ่น) บรรลุสูงสุดพร้อมใช้งานสูง

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

เพื่อให้บรรลุ "อิสระที่ยืดหยุ่น" อย่างแท้จริงคุณต้องใส่

ELB

และ

Auto Scaling (อัตโนมัติยืดหยุ่นยืดได้)

ผูกเข้าด้วยกัน

[คำขอของผู้ใช้] -> [ELB] -> [เพิ่ม/ลดจำนวน EC2โดยอัตโนมัติตามการจราจร (Auto Scaling Group)]

เมื่อ Double Eleven มาถึงเวลาเที่ยงคืนการจราจรก็พุ่งสูงขึ้น:

การตรวจสอบ CloudWatch พบว่าซีพียูโดยเฉลี่ยของเซิร์ฟเวอร์แบ็คเอนด์เพิ่มสูงขึ้นถึง80%

Auto Scaling ได้รับสัญญาณและบรรจุและสร้างเซิร์ฟเวอร์ EC2ใหม่5เครื่องโดยอัตโนมัติทันที

สถานที่ที่ยอดเยี่ยมที่สุดอยู่ที่นี่: หลังจากเปิดตัวเซิร์ฟเวอร์ใหม่ Auto Scaling จะรายงานไปยังกลุ่มเป้าหมายของ ELB โดยอัตโนมัติ: "ผู้จัดการรายงานฉันเป็นคนใหม่พร้อมแล้ว!"

ELB ได้รับการแจ้งเตือนและเริ่มเปลี่ยนการรับส่งข้อมูลที่ตามมาไปยังเซิร์ฟเวอร์ใหม่ทั้ง5เครื่องนี้ทันทีกระบวนการทั้งหมดไม่จำเป็นต้องเปลี่ยนการกำหนดค่าหรือรีสตาร์ทอุปกรณ์ใดๆด้วยตนเอง

การจราจรลดลงในเวลาสองโมงเช้าและ CPU ลดลง Auto Scaling จะทำลายเครื่องทั้งห้านี้โดยอัตโนมัติเพื่อประหยัดเงิน ELB จะยกเลิกการเชื่อมต่ออย่างสง่างาม (Deregistration Delay) เพื่อให้แน่ใจว่าคำขอที่ดำเนินการจะถูกลบออกจากคลัสเตอร์หลังจากเสร็จสิ้นตามปกติ

บทสรุป

ในสถาปัตยกรรมเนทีฟบนคลาวด์สมัยใหม่ Amazon ELB ไม่ใช่ "ทราฟฟิกทรานสปอนเดอร์" ธรรมดาๆแต่เป็นสถาปัตยกรรมที่มีความพร้อมใช้งานสูงทั้งหมด

ผู้บัญชาการ

ป้องกันภัยพิบัติระดับทางกายภาพผ่านการปรับใช้โหนดในพื้นที่ว่างแยกความล้มเหลวภายในของระบบผ่านการตรวจสุขภาพอย่างเข้มงวดและให้ความเป็นไปได้ในการขยายธุรกิจไม่จำกัดผ่านความร่วมมือที่สมบูรณ์แบบกับ Auto Scaling เมื่อเข้าใจตรรกะการดำเนินงานและรายละเอียดการกำหนดค่าของ ELB แล้วคุณจะเข้าใจกุญแจหลักในการสร้างเว็บไซต์สมัยใหม่ที่มีการทำงานพร้อมกันสูงและไม่หยุดทำงาน

cloud
← 返回新闻中心