Amazon Elastic Load Balancing โหลดบาลานซิ่งสถาปัตยกรรมที่มีความพร้อมใช้งานสูง: ให้เซิร์ฟเวอร์ของคุณเป็น "ตำรวจจราจรจราจร" ระดับบนสุด
ในโลกอินเทอร์เน็ตมีสองสิ่งที่ทำให้สถาปนิกและเจ้านายนอนไม่หลับมากที่สุด:
ประการหนึ่งคือการเข้าชมที่เพิ่มขึ้นอย่างกะทันหันทำให้เซิร์ฟเวอร์พังและอีกประการหนึ่งคือการ "หยุดทำงาน" อย่างกะทันหันของเซิร์ฟเวอร์ทำให้ทั้งไซต์เป็นอัมพาต
หากคุณเปรียบเทียบคลัสเตอร์เซิร์ฟเวอร์ส่วนหลังของคุณกับพนักงานบอกของธนาคารเมื่อมีลูกค้าเพียงหนึ่งหรือสองรายทุกคนก็อยู่ในความสงบแต่เมื่อ 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 แล้วคุณจะเข้าใจกุญแจหลักในการสร้างเว็บไซต์สมัยใหม่ที่มีการทำงานพร้อมกันสูงและไม่หยุดทำงาน

