> For the complete documentation index, see [llms.txt](https://docs-epc.gitbook.io/ncs-documents/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-epc.gitbook.io/ncs-documents/~/changes/U2SVceQUXXCaek3t7CoE/load-balancer-as-a-service/create-load-balancer.md).

# Create Load Balancer

load balancer ใช้ในการ balancer หรือกระจาย load ไปยัง instance หลายๆ ตัว เพื่อเพิ่ม HA (High Availability) ในกับระบบ ในกรณีที่อาจจะมี instance ตัวใดตัวหนึ่งมีปัญหา ระบบก็จะกระจาย load ไป server ตัวอื่นแทน หรือเป็นการกระจาย load ให้เหมาะสมกับปริมาณการใช้งาน เพื่อป้องกันไม่ให้ instance ปัญหาตั้งแต่ต้น

โดยนอกจากสร้าง load balancer แล้ว ยังจะต้องสร้าง listener และ backend group ใน load balancer นั้นด้วย

* listener คือตัวรับ load ที่จะใช้ในการจำแนกว่า load ประเภทไหน จะไปหา backend group ตัวไหน
* backend group คือตัวที่รวบรวม instance ที่ทำงานชนิดเดียวกันเอาไว้ เพื่อรับ load จาก listener

## Prerequisite

* มียอดคงเหลือใน Project มากกว่า 0 บาท ([ขั้นตอนการเติมเงินเข้าสู่ Project](/ncs-documents/~/changes/U2SVceQUXXCaek3t7CoE/starting-nipa-cloud-space/topup-a-project-wallet.md))

## Instructions

### 1. เข้าสู่ Project

กดเลือก project จากหน้า Projects Management เพื่อเข้าสู่หน้า Project Detail

<figure><img src="/files/jFcfsZozd5ostnFTPsH9" alt=""><figcaption><p>Project Detail</p></figcaption></figure>

### 2. เข้า menu create load balancer

เข้าสู่หน้า load balancer โดยกด menu Load Balancer ภายใต้ sidebar และกดปุ่ม +Load Balanacer ที่มุมขวาบนของหน้า load balancer

<figure><img src="/files/0K1pnRrgoqKn7Nqi0TvL" alt=""><figcaption><p>Create Load Balancer Button</p></figcaption></figure>

### 3. เลือก Availability Zone ของ Load Balancer

เลือก availability zone (AZ) ของ load balancer โดยจะต้องเลือก AZ เดียวกันกับ instance ที่ต้องการทำ load balance

<figure><img src="/files/wVPUkkfXBm3TJJKbRCSx" alt=""><figcaption><p>Select Availability Zone</p></figcaption></figure>

### 4. เลือก Type ของ Load Balancer

เลือก type ของ load balancer โดยคำนึงจากปริมาณการใช้งาน โดย&#x20;

* standard load balancer จะเหมาะกับปริมาณ load ไม่มาก และสามารถยอมรับการ performance drop ได้เล็กน้อย เนื่องจาก standard load balancer จะมีการ share resource รวมกับกับ load balancer อื่นๆ แต่ข้อดีด็คือราคาถูกกว่า และคิดค่าใช้จ่ายด้าน data process และ new connection ตามการใช้งานจริง
* dedicated load balancer จะเหมาะกับปริมาณ load มากๆ และไม่ต้องการให้มีความเสียงด้าน performance drop เนื่องจาก dedicated load balancer จะไม่มีการ share resource ใดๆ จะสามารถใช้งานได้เต้มประสิทธิภาพตลอดเวลา และจะคิดค่าใช้จ่ายแบบเหมา ที่จ่ายใน rate ที่คงที่

<figure><img src="/files/xaNlLCfOh5zJbsqXT0Qa" alt=""><figcaption><p>Load Balancer Type</p></figcaption></figure>

### 5. เลือก Specification ของ Load Balancer

เลือก specification หรือขนาดของ load balancer ว่าต้องการ load balancer ที่รองรับการทำงานระดับใด และต้องการความปลอดภัยระดับไหน โดยถ้าต้องการ HA ที่สูงที่สุด แนะนำให้เลือก specification ที่มี topology เป็น HA

<figure><img src="/files/ADQMEtJIQWbErb6MUD39" alt=""><figcaption><p>Load Balancer Specification</p></figcaption></figure>

### 6. กำหนดชื่อและคำอธิบายเบื่องต้นของ Load Balancer

กำหนดชื่อและคำอธิบายของ load balancer เพื่อใช้สามารถจำแนกออกจาก load balancer ตัวอื่นได้

<figure><img src="/files/nfY2Tsl8qgQMwSwG8hed" alt=""><figcaption><p>Load Balancer Details</p></figcaption></figure>

### 7. เลือก Virtual Network และ External Network

เลือก virtual network ที่จะต้องเป็น network เดียวกันกับ instance ที่ต้องการ balance load รวมถึงเลือก external IP หากต้องการ expose ออกสู่ internet

<figure><img src="/files/SRtYzXkzixRUHnhjqoqe" alt=""><figcaption><p>Load Balancer Network</p></figcaption></figure>

### 8. Review ความถูกต้องของ Load Balancer ก่อน Confirm การสร้าง

รีวิวความถูกต้องของการตั้งค่า และกดปุ่ม CREATE เพื่อสร้าง load balancer

<figure><img src="/files/hZ5UfBMXa9JPrd74Eo6z" alt=""><figcaption><p>Load Balancer Summary</p></figcaption></figure>

### 9. ดูรายละเอียดของ Load Balancer ที่สร้าง

รอจน load balancer status กลายเป็น HEALTHY และกดที่ชื่อของ load balancer เพื่อเข้าหน้า load balancer overview

<figure><img src="/files/uNQsoRFl3eT5rLkUdx1F" alt=""><figcaption><p>Load Balancer List</p></figcaption></figure>

### 10. เข้า Menu สร้าง Backend Group

ในหน้า load balancer overview ให้ click ที่ปุ่ม CREATE BACKEND GROUP เพื่อเปิด menu create backend group

<figure><img src="/files/uNwwzOvnpl2HBoo7WLDP" alt=""><figcaption><p>Create Backend Group Menu</p></figcaption></figure>

### 11. กำหนดค่าต่างๆ ของ Backend Group

ตั้งค่าต่างๆ ใน backend group เพื่อเป็นตัวรับ load จาก listener

* Name: ชื่อของ backend group ที่ใช้ในการจำแนกแต่ละ backend group ออกจากกัน
* Protocol: protocol ที่จะส่ง request ต่อไปยัง member หรือ instance ใน backend group นี้
* Algorithm: วิธีการเลือกว่าจะส่ง request ไหนไปหา member ตัวใด โดยจะมี 3 อย่างคือ
  * Least Connection: เลือก member ที่มี connection อยู่น้อยที่สุด
  * Round Robin: เลือก member วนตามลำดับ
  * Source IP: เลือก member โดยการ hash source IP ของ request โดย IP เดิม จะเข้า member เดิมเท่านั้น
* Enable Health Check: เปิดใช้งาน health check ที่จะเข้าไป check อยู่ตลอดว่า member ยังสามารถใช้งานได้หรือไม่
  * Protocol: protocol ของการทำ health check
  * Timeout: เวลาก่อนที่จะตีว่า health check request แต่ละครั้งเป็น timeout
  * Interval: ความถี่ในการทำ health check
  * Healthy Threshold: จำนวนครั้งที่ health check พบว่า member ใช้งานได้ ก่อนจะกำหนดว่า member นั้น online อยู่ และส่ง request เข้าไป
  * Unhealthy Threshold: จำนวนครั้งที่ health check พบว่า member ใช้งานไม่ได้ ก่อนจะกำหนดว่า member นั้น ERROR อยู่ และหยุดส่ง request เข้าไป

<figure><img src="/files/hXS7lcPtor0QThDcIDvi" alt=""><figcaption><p>Configurate Backend Group</p></figcaption></figure>

* Member: instance ที่จะรับ request ในกลุ่มของ backend group นี้
  * Instance: port ของ instance ที่จะรับ request โดยจะต้องเปิด security ให้ถูกต้องจึงจะสามารถใช้งานได้
  * Port: เลข port ที่จะรับ request
  * Weigth: อัตราส่วนที่จะส่ง request เข้าไปใน member นี้ โดยถ้า weigth เยอะ request ก็จะเข้า member นั้นเยอะ
  * Monitor Port: เลข port ที่จะใช้ทำ health check
  * Assign As: รูปแบบการทำงานของ member นี้

<figure><img src="/files/EJDw1vZOzf6JfVnphi79" alt=""><figcaption></figcaption></figure>

จากนั้น click ปุ่ม CONFIRM เพื่อสร้าง backend group และรอจนกว่า load balancer จะ update เสร็จ

### 12. เข้า Menu สร้าง Listener

ในหน้า load balancer overview ให้ click ที่ปุ่ม CREATE LISTENER เพื่อเปิด menu create listener

<figure><img src="/files/rpBlYeGsG4cdSD0B7zQr" alt=""><figcaption><p>Create Listener Menu</p></figcaption></figure>

### 13. กำหนดค่าต่างๆ ของ Listener

ตั้งค่าต่างๆ ใน listener เพื่อให้สามารถรับ load ได้ ดังนี้

* Name: ชื่อของ listener ที่ใช้ในการจำแนกแต่ละ listener ออกจากกัน
* Protocol: เลือก protocol ของ request ที่ listener นี้จะรับ
* Port: เลือก port number ของ request ที่ listener นี้จะรับ
* Client Side Idle Timeout: เวลาที่จะ keep connection กับ client ที่ไม่ active
* TCP inspect: เวลาที่รอการ inspect ของ TCP package
* Backend Side Idle Timeout: เวลาที่จะ keep connection กับ backend ที่ไม่ active
* Backend Side Connection Timeout: เวลาที่จะรอการ connect กับ backend

<figure><img src="/files/v9iAen4ubOlXMK7LmjYI" alt=""><figcaption><p>Listener Configuration</p></figcaption></figure>

* Whitelist CIDR: CIDR ที่ยอมให้ใช้งาน listener นี้
* CIDRs: ถ้าไม่ได้เลือก whitelist CIDR เป็น allow all จะสามารถระบุ CIDR ที่ allow เฉพาะได้
* Backend Group: เลือก backend group ที่ใช้รับ request จาก listener นี้

<figure><img src="/files/Vt9LDVf0RVK1uGUDRK3P" alt=""><figcaption><p>Listener Configuration 2</p></figcaption></figure>

เพียงเข้านี้ ก็สามารถใช้งาน load balancer ได้แล้ว

![](/files/EZrFfb6hgm0vYlRs6xVA)![](/files/WP5adxiTJwnWTbR1KRjP)
