
มาดูวิธีการทำ load balance ให้ micro service ของเรากัน
การทำ load balance นอกจากจะช่วยกระจาย load การทำงานของ server แล้ว ในกรณีที่เรามีการ upgrade server แต่ยังไม่มั่นใจว่า server ใหม่ดีพอ เรายังสามารถเปิดใช้งาน server เก่า ควบคู่กับ server ใหม่ โดยกระจาย load สัก 80% ไปที่ server ใหม่ อีก 20% ไปที่ server เก่า เพื่อลดความเสี่ยงได้อีกด้วยครับ
กรณี server ใหม่มีปัญหา สามารถปิดหรือ down ทิ้งไป เพื่อให้ user request ถูกดีดเข้าใช้งานที่ server เก่าได้อัตโนมัติ
เทคนิคเหล่านี้ถ้าไม่ซื้อ hardware ก็ต้องมี software load balance เข้าช่วย..หนึ่งในตัวที่ดัง ๆ นอกจาก HaProxy แล้ว ยังมี NGiNX (ที่ support widows) ให้ใช้งาน
มาทดลองกันครับ ^^
Step
- ติดตั้ง NGINX
- Download
Link download -> https://nginx.org/en/ เลือก windows version จะได้ zip file ให้แตก file ออกมา
- Start เพื่อทดสอบ
เปิด dos แล้ว cd ไปที่ folder ที่แตก file เสร็จ พิมพ์ command “start nginx”
- ทดสอบการทำงานของ NGINX
เปิด browser เข้า url : http://localhost จะได้ผลลัพธ์ดังภาพ นั่นคือ NGINX ทำงานแล้ว

- Download
- Start MicroService ของเรา (ที่ได้จาก blog ก่อนหน้า) 2 service แยกกันคนละ port
(blog -> “มาลองจัดการ Log บน Spring Boot กัน ง่ายนะ! พูดเลย!“)- Start micro service แรก ด้วย port 8888
command “java -jar HelloService.jar –server.port=8888”

- Start micro service ที่สอง ด้วย port 9999
command “java -jar HelloService.jar –server.port=9999”

- ทดสอบการทำงานแต่ละ service
– ทดสอบ server ที่ port 8888 -> สามารถใช้งานได้
– ทดสอบ server ที่ port 9999 -> สามารถใช้งานได้

- Start micro service แรก ด้วย port 8888
- Config NGINX ให้กระจาย load ไปที่ microservice แต่ละตัวแบบ weight round-robin
เปิด file conf/nginx.conf ใน folder nginx ที่แตก zip ออกมา ลบข้อความเก่าทิ้งให้หมด ใส่ข้อความตามนี้ครับ

- reload NGINX ให้ใช้ config ใหม่ ด้วย command “

- ทดสอบการทำงาน
เปิด browser แล้วพิมพ์ url: http://localhost กด Enter แล้ว reload page อีก 4 ครั้ง
(รวมเป็น 5 ครั้ง) จะพบการกระจาย load อย่างถูกต้องตาม weight ที่ config ไว้ 4 ต่อ 1
-> สังเกตุที่ console log ของแต่ละ microservice ทั้งสองตัวครับ
พบการกระจาย load แบบ round-robin wight ถูกต้อง ^^
- เล่นเพิ่ม config อีกนิดหน่อย เพื่อให้ กรณีที่เครื่องใดเครื่องหนึ่งมีปัญหา request ยังสามารถไปทำงานเครื่องที่เหลือได้
– เพิ่ม config เพื่อ set timeout นิดหน่อย เสร็จแล้ว reload nginx ตามข้อ 4
-ทดสอบปิดการทำงานที่ microservice port 8888
แล้วลองยิง request เข้ามาดูว่า.. request ยิงไปเครื่องที่เหลือ (port 9999) ได้ไหม? …ได้นะ!!!

เป็นแค่ตัวอย่างการ config เบื้องต้นเท่านั้นนะคับ NGINX ยังมี features มากกว่านี้ เช่นพวก URL Rewriting, SSL Handling, Caching, Maintenance Feature, Organizational Policies
ลองศึกษาเพิ่มกันต่อนะคับ ^^

ติดตามบทความดี ๆ ได้ทุกวันที่

Line@
Facebook Fanpage
Blogdit/Medium: โปรแกรมเมอร์บ่น
ขอบคุณ ที่กดไลค์ กดแชร์ กดติดตามครับ 🙏🏻😊
