วิธีการใช้ ELB (ALB) ใน Elastic Beanstalk

เราสามารถสร้าง Load Balancers ใน Elastic Beanstalk โดยกำหนดจำนวน Instance ได้ตามที่เราต้องการใช้งาน ในบทความครั้งนี้ผมจะมาอธิบายโดยเน้นไปที่วิธีการใช้ ELB (ALB) ใน Elastic Beanstalk ครับ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ครั้งนี้ผมจะมาแนะนำเกี่ยว วิธีการใช้ ELB (ALB) ใน Elastic Beanstalk

สิ่งที่ต้องมี

  • มีการสร้าง Application ใน Elastic Beanstalk

ตัวอย่างในบทความนี้ สมมติว่าผมสร้าง Application โดยใช้ชื่อดังนี้
Application:tinnakorn

การใช้ ELB (ALB)

ก่อนอื่นผมจะสร้าง Environment โดยตั้งค่าการใช้งาน ELB (ALB)

ตัวอย่างในบทความนี้ ผมจะสร้าง Environment โดยใช้ชื่อดังนี้
Environment:tinnakorn-loadbalancer

การสร้าง Environment

สามารถดูตัวอย่างเพิ่มเติมได้ที่บทความด้านล่างนี้ (สำหรับผู้ใช้งานที่รู้วิธีการสร้าง Environment อยู่แล้วข้ามขั้นตอนนี้ไปได้เลยครับ)

ตัวอย่างการสร้าง Environment

※Environment information
Environment name:tinnakorn-loadbalancer(ชื่ออะไรก็ได้)
Domain:tinnakorn-loadbalancer(ชื่ออะไรก็ได้)

※Platform
Platform:PHP

※Application code
เลือกวิธีอัปโหลดไฟล์ตามที่คุณต้องการ

ต่อไปคือการตั้งค่าในConfigure more optionsโดยทำตามหัวข้อดังต่อไปนี้

※หัวข้อ Capacity
คลิกปุ่มEditที่หัวข้อ Capacity แล้วตั้งค่าดังนี้:
» Environment type:Load balanced
» Instances: Min2, Max2(ครั้งนี้ เราจะทำการล็อกจำนวน Instance อยู่ที่ 2 ตัว)

เลื่อนลงมาด้านล่างสุดที่หัวข้อ Scaling triggers แล้วตั้งค่าดังนี้:
» Lower threshold:0(หากไม่ตั้งค่านี้เป็น 0 ก็จะเกิด Error Message)
» คลิกปุ่มSave

※หัวข้อ Load balancer
คลิกปุ่มEditที่หัวข้อ Load balancer แล้วตั้งค่าดังนี้:
Load balancer type
» Load balancer type: ◉ Application Load Balancer

การตั้งค่า Stickness Policy

Processes
» ติ๊กdefault
» คลิกActionsและเลือกEdit

สิ่งที่เราจะทำต่อไปนี้คือการล็อกปลายทาง EC2 Instance ที่จะเชื่อมต่อ โดยการใช้ข้อมูลจาก Cookie ที่ฝังใน HTTP response ด้วย ELB
ซึ่งไม่ใช่สิ่งที่จำเป็นจะต้องทำ แต่เพื่อให้แอปพลิเคชันทำงานได้อย่างปลอดภัย เราแนะนำให้ทำตามขั้นตอนนี้ครับ


แล้วเลื่อนลงมาด้านล่างสุดที่หัวข้อ Sessions แล้วตั้งค่าดังนี้:
» ติ๊กStickiness policy enabled
» คลิกปุ่มSave
» เลื่อนลงมาด้านล่างสุดอีกครั้งและคลิกปุ่มSave

เมื่อตั้งค่าตามขั้นตอนข้างต้นทุกอย่างเสร็จแล้ว ให้เลื่อนลงมาด้านล่างสุดและคลิกปุ่มCreate environmentจากนั้นรอระบบเริ่มต้นสักครู่ครับ

ตรวจสอบสภาพแวดล้อมหลังจากเริ่มต้นระบบ

ก่อนอื่นเรามาทำการตรวจสอบเว็บไซต์ที่สร้างขึ้นมาก่อนครับ (เว็บไซต์ Laravel นี้เป็นแค่ตัวอย่าง)

http://[your_environment_name].ap-southeast-1.elasticbeanstalk.com/

ช่วงเวลาที่ผมสร้าง ELB (ALB) ใน Elastic Beanstalk โดยประมาณคือJuly 27 2022 at 9:08 AM
หลังจากเริ่มต้นระบบเสร็จแล้ว เราจะได้สภาพแวดล้อมตามที่สร้างใน Elastic Beanstalk ดังนี้

Load Balancers

เข้ามาที่ [Amazon EC2 > Load Balancers]
จะเห็นว่าเราได้ Load Balancers มาแล้ว

Auto Scaling Groups

เข้ามาที่ [Amazon EC2 > Auto Scaling Groups]
จะเห็นว่าเราได้ Auto Scaling Groups มาแล้ว

Instances

เข้ามาที่ [Amazon EC2 > Instances]
จะเห็นว่าเราได้ Instances มาแล้ว ซึ่งในส่วนนี้เราจะได้ Instances มา 2 ตัวตามที่ตั้งค่าไว้ใน Elastic Beanstalk เมื่อสักครู่นี้ครับ

การเชื่อมต่อ Server EC2

เราสามารถเชื่อมต่อ Server EC2 จาก EC2 อื่นได้โดยใช้Public IPv4 addressและPrivate IPv4 addressesของ EC2 ที่ต้องการเชื่อมต่อครับ

ดูวิธีการทำได้ที่ลิงก์บทความด้านล่างนี้ครับ


นอกจากนี้ยังมีวิธีการเชื่อมต่อ Server EC2 ด้วยโปรแกรม PuTTY และ VSCode ดังนี้

การเชื่อมต่อ Server EC2 ด้วย PuTTY
ดูตัวอย่างที่นี่: การ Connect to EC2 by PuTTY

การเชื่อมต่อ Server EC2 ด้วย VSCode
ดูตัวอย่างที่นี่: ทำการติดตั้ง Extention Remote – SSH ใน VSCode และทดลองใช้งาน EC2 โดยตรงใน VSCode

ทดสอบ Auto Scaling

มาที่ EC2 instance และให้เรา Terminate instance ที่สร้างขึ้นจาก Auto Scaling ดูครับ

เมื่อทำการ Terminate Instance เสร็จแล้ว ให้เข้าไปที่หน้า Target Groups แล้วตรวจสอบ Healthy จะเห็นว่ามีสถานะเป็น 1
จะสังเกตว่าเรายังสามารถเข้าใช้เว็บไซต์ได้ตามปกติ (ในขณะที่ Healthy เป็น 1) เพราะว่า ELB ได้ทำการนำ Instance ที่ Terminate ออกจากการเชื่อมต่อแล้วนั่นเเอง
พูดง่ายๆคือต่อให้มี EC2 ตัวใดตัวหนึ่งเกิดปัญหา เว็บไซต์ก็ยังสามารถใช้งานต่อได้ครับ

http://[your_environment_name].ap-southeast-1.elasticbeanstalk.com/

หลังจากนี้ให้รอสักครู่จนกว่า Healthy จะมีสถานะเป็น2

และเมื่อเรากลับมาดูที่หน้า Instances อีกทีจะพบว่ามี Instance ถูกสร้างขึ้นใหม่จาก Auto Scaling มาแทนที่

และนี่ก็เป็นเพราะ Auto Scaling จะคอยตรวจสอบว่า EC2 เป็นไปตามเงื่อนไขที่ตั้งค่าไว้ไหม
หากไม่ตรงตามเงื่อนไขก็จะปรับค่าให้ตรงตามเงื่อนไข โดยในกรณีนี้คือการเปิดใช้งาน Instance ให้ครบ 2 ตัวนั่นเอง

สรุป

กรณีที่ทำการตั้งค่า Auto Scaling Groups ด้วยตนเองนั้นจะยุ่งยาก อย่างไรก็ตาม การตั้งค่า Auto Scaling Groups โดยใช้ Elastic Beanstalk นั้นง่ายมากๆ และนี่ก็เป็นอีก 1 ข้อดีของการใช้งาน Elastic Beanstalk นั่นเองครับ

บทความที่เกี่ยวข้อง