ลอง NGINX Load Balancing Microservice

1.png

มาดูวิธีการทำ 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

  1. ติดตั้ง NGINX
    • Download
      Link download -> https://nginx.org/en/ เลือก windows version จะได้ zip file ให้แตก file ออกมา2.png
    • Start เพื่อทดสอบ
      เปิด dos แล้ว cd ไปที่ folder ที่แตก file เสร็จ พิมพ์ command “start nginx”3.png
    • ทดสอบการทำงานของ NGINX
      เปิด browser เข้า url : http://localhost จะได้ผลลัพธ์ดังภาพ นั่นคือ NGINX ทำงานแล้ว
      4.png
  2. Start MicroService ของเรา (ที่ได้จาก blog ก่อนหน้า) 2 service แยกกันคนละ port
    (blog -> “มาลองจัดการ Log บน Spring Boot กัน ง่ายนะ! พูดเลย!“)

    • Start micro service แรก ด้วย port 8888
      command “java -jar HelloService.jar –server.port=8888”
      5.png
    • Start micro service ที่สอง ด้วย port 9999
      command “java -jar HelloService.jar –server.port=9999”
      6.png
    • ทดสอบการทำงานแต่ละ service
      – ทดสอบ server ที่ port 8888 -> สามารถใช้งานได้
      7.png– ทดสอบ server ที่ port 9999 -> สามารถใช้งานได้
      8.png
  3. Config NGINX ให้กระจาย load ไปที่ microservice แต่ละตัวแบบ weight round-robin
    เปิด file conf/nginx.conf ใน folder nginx ที่แตก zip ออกมา ลบข้อความเก่าทิ้งให้หมด ใส่ข้อความตามนี้ครับ
    9.png
  4. reload NGINX ให้ใช้ config ใหม่ ด้วย command “10.png
  5. ทดสอบการทำงาน
    เปิด browser แล้วพิมพ์ url: http://localhost กด Enter แล้ว reload page อีก 4 ครั้ง
    (รวมเป็น 5 ครั้ง) จะพบการกระจาย load อย่างถูกต้องตาม weight ที่ config ไว้ 4 ต่อ 1
    -> สังเกตุที่ console log ของแต่ละ microservice ทั้งสองตัวครับ

    11.png

    พบการกระจาย load แบบ round-robin wight ถูกต้อง ^^

  6. เล่นเพิ่ม config อีกนิดหน่อย เพื่อให้ กรณีที่เครื่องใดเครื่องหนึ่งมีปัญหา request ยังสามารถไปทำงานเครื่องที่เหลือได้
    – เพิ่ม config เพื่อ set timeout นิดหน่อย เสร็จแล้ว reload nginx ตามข้อ 4
    12.png-ทดสอบปิดการทำงานที่ microservice port 8888
    แล้วลองยิง request เข้ามาดูว่า.. request ยิงไปเครื่องที่เหลือ (port 9999) ได้ไหม? …ได้นะ!!!
    13.png

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

10246350_279146422245844_5638122126167896421_n.jpg

 

 

 

 

 

 

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

Line@
Facebook Fanpage
Blogdit/Medium: โปรแกรมเมอร์บ่น


Ebook/Magazine


ขอบคุณ ที่กดไลค์ กดแชร์ กดติดตามครับ 🙏🏻😊

 

 

 

 
โปรแกรมเมอร์บ่น
Public group · 68 members

Join Group

คน IT ขี้บ่น
มีเรื่องราวมา share กัน (นะ)
เพื่อพัฒนาตัวเองให้เก่งขึ้นและมีความสุข ^^

บอกเล่าเรื่องราวในแวดวงคนเขียน code แชร์ประสบการณ์การทำงานคนไอทีครับ

 

ใส่ความเห็น