เมื่อโปรเจกต์ของคุณเป็นที่ต้องการและมีผู้เยี่ยมชมมาก คุณจะประสบปัญหา – ความจำเป็นในการเพิ่มประสิทธิภาพการทำงานของฮาร์ดแวร์ เนื่องจากควรจะสามารถจัดการและตอบสนองคำขอของผู้ใช้ที่เข้ามาทั้งหมดได้อย่างรวดเร็ว การเพิ่มทรัพยากรเพิ่มเติมจะช่วยเพิ่มประสิทธิภาพในสถานการณ์นั้นได้ชั่วคราว ช่วยป้องกันเซิร์ฟเวอร์จากการล้มเหลว แต่จะไม่สามารถแก้ปัญหาที่เป็นสาเหตุได้ และส่งผลให้จำเป็นต้องตั้งค่า clustering solution ที่มีการทำโหลดบาลานซ์แบบอัตโนมัติในตัว
การปรับคลัสเตอร์แอปพลิเคชันนั้นค่อนข้างง่ายด้วยการใช้ Ruk-Com Cloud เพียงเพิ่มแอปพลิเคชันเซิร์ฟเวอร์ instance อีกไม่กี่ตัวให้กับ Environment ของคุณ นอกจากนี้คุณจะเปิดใช้งานเซิร์ฟเวอร์ NGINX-balancer โดยอัตโนมัติในส่วนของหน้าโปรเจกต์ จะทำหน้าที่รับผิดชอบในการกระจายโหลดอย่างสม่ำเสมอระหว่างจำนวนโหนดเซิร์ฟเวอร์แอปที่ระบุ ซึ่งดำเนินการโดยอาศัยการ load balancing
![NGINX load balancer](https://docs.jelastic.com/images/middleware-stacks/load-balancers/nginx/testing-load-balancing/01-nginx-load-balancer.png)
ด้วยวิธีนี้ประสิทธิภาพแอปพลิเคชันของคุณจะเพิ่มขึ้นอย่างมากโดยเพิ่มจำนวนคำขอที่สามารถให้บริการได้ในภายครั้งเดียว เป็นโบนัสที่ดีที่คุณสามารถลดความเสี่ยงของการไม่สามารถเข้าถึงแอปได้เนื่องจากหากมีเซิร์ฟเวอร์หนึ่งล้มเหลว แต่ส่วนที่เหลือทั้งหมดจะยังคงทำงานต่อไป
เพื่อพิสูจน์ว่าโครงการนี้มีประสิทธิภาพนั้น เราจะแสดงวิธีการทดสอบการจัดสรรภาระงานด้วยการใช้เครื่องมือ link # ApacheBench (ab) เป็นตัวช่วย มีความเป็นไปได้หลายประการในการทดสอบความสามารถของเซิร์ฟเวอร์ในการรับมือกับโหลดที่เพิ่มขึ้นและเปลี่ยนแปลงได้ แม้ว่า ab ได้รับการออกแบบมาสำหรับการทดสอบการติดตั้ง Apache แต่ก็สามารถใช้เพื่อเปรียบเทียบเซิร์ฟเวอร์ HTTP ต่าง ๆ ได้
มาเริ่มและทดสอบกันแบบเรียลไทม์กัน
สร้าง Environment และ Deploy แอปพลิเคชัน
1. เข้าสู่ระบบ Ruk-Com Platform และคลิกปุ่ม Create environment ที่มุมบนซ้ายของแดชบอร์ด
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/newenv.jpg)
2. หน้าต่างไดอะล็อก Environment topology จะปรากฏขึ้นทันที คุณสามารถเลือกภาษาโปรแกรมมิ่ง แอปพลิเคชัน/เว็บเซิร์ฟเวอร์และฐานข้อมูลที่ต้องการได้
ในขณะที่เรากำลังจะทดสอบการโหลดเซิร์ฟเวอร์ Apache PHP ให้เลือกและระบุลิมิตการใช้ทรัพยากรโดยใช้แถบเลื่อน cloudlets จากนั้นแนบ Public IP address สำหรับเซิร์ฟเวอร์นี้และพิมพ์ชื่อของ Env ใหม่ (เช่น balancer) คลิก Create.
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-create-env.jpg)
3. ในเวลาเพียงไม่กี่นาที Env ของคุณจะปรากฏที่แดชบอร์ด
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-create-env-done.jpg)
4. เมื่อสร้าง Env สำเร็จแล้วคุณสามารถปรับใช้ (deploy) แอปพลิเคชันของคุณได้ เราจะใช้แพ็กเกจ HelloWorld.zip เป็นค่าเริ่มต้น ดังนั้นคุณเพียงแค่ต้องปรับใช้ (deploy) กับ Env ที่ต้องการด้วยปุ่มที่เกี่ยวข้องและยืนยันการปรับใช้ (deploy) ในเฟรมที่เปิดอยู่
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-deploy.jpg)
การทดสอบ Control Point
ในการวิเคราะห์ผลลัพธ์คุณจะต้องมีบางสิ่งเพื่อเปรียบเทียบ ดังนั้นเรามาทำการทดสอบจุดควบคุมโดยใช้ Environment ที่สร้างขึ้นเป็นแบบแอพพลิเคชั่นเซิร์ฟเวอร์แบบโหนดเดียว
ดังที่ได้กล่าวไว้ข้างต้นเราจะใช้เครื่องมือ ApacheBench (ab) เพื่อวัตถุประสงค์เหล่านี้ สามารถสร้างการโหลดแบบซิงเกิล้เธรดได้โดยการส่งคำขอพร้อมกันตามจำนวนที่ระบุไปยังเซิร์ฟเวอร์
ดังนั้น ให้ทำตามขั้นตอนด้านล่างนี้
1. ApacheBench เป็นส่วนหนึ่งของการแจกจ่ายซอร์ส Apache มาตรฐาน ดังนั้นหากคุณยังไม่มี ให้ใช้คำสั่งต่อไปนี้ผ่านเทอร์มินัล (หรือข้ามขั้นตอนนี้ไปถ้าคุณมี)
apt-get install apache2-utils
รอจนกว่าการติดตั้งจะเสร็จสมบูรณ์
หมายเหตุ :
สามารถดูข้อมูลโดยละเอียดเกี่ยวกับคำสั่ง ab ที่ใช้เพิ่มเติมได้ตาม link
2. ป้อนบรรทัดถัดไปนี้ในเทอร์มินัล:
ab -g res1.tsv -n 500 -c 10 {URL_to_your_env}
แทนที่ส่วน {URL_to_your_env} ด้วยลิงก์ที่ไปยัง Env ของคุณ (เช่น ในกรณีของเราคือ http://balancer.app.ruk-com.cloud/) ในการรับให้คลิกปุ่ม Open in Browser ถัดจาก Env และคัดลอก URL ที่เกี่ยวข้องจากแถบที่อยู่ของเบราว์เซอร์
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-url.jpg)
คำสั่งที่ระบุจะส่งจำนวนคำขอทั้งหมด 500 คำขอไปยัง Env ที่ระบุ ซึ่งแบ่งออกเป็นชุดของคำขอพร้อมกัน 10 รายการในครั้งเดียว ผลลัพธ์ทั้งหมดจะถูกเก็บไว้ในไฟล์ res1.tsv ภายในโฟลเดอร์ home ของคุณ (หรือป้อนพาธแบบเต็มไปยังไดเร็กทอรีที่ต้องการหากคุณต้องการเปลี่ยนตำแหน่งไฟล์)
นอกจากนี้คุณสามารถระบุพารามิเตอร์ที่กำหนดเองสำหรับคำสั่งที่กล่าวถึงข้างต้นได้หากต้องการ
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-result.jpg)
การทดสอบนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับพารามิเตอร์ที่ตั้งไว้ดังนั้นโปรดอดใจรอ
3. ไฟล์ที่ถูกสร้างขึ้นผลลัพธ์ควรมีลักษณะดังภาพด้านล่าง
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-result-tsv.jpg)
เปลี่ยนการตั้งค่า Environment
1. กลับไปที่แดชบอร์ด Ruk-Com Cloud แล้วคลิก Change environment topology สำหรับ environment balancer ของคุณ
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-change-env-config.jpg)
2. ภายในกรอบ Environment topology ที่เปิดอยู่ ให้เพิ่มแอปพลิเคชันเซิร์ฟเวอร์เพิ่มเติม (เช่น เพิ่ม instance Apache อีกสักหนึ่งอัน) – ใช้ปุ่ม + ในส่วน Horizontal scaling wizard จากนั้นเปิดใช้งานคุณสมบัติ Public IP และระบุลิมิตทรัพยากรสำหรับโหนด NGINX-balancer ที่เพิ่มโดยอัตโนมัติ เนื่องจากจะกลายเป็นจุดเริ่มต้นของแอปพลิเคชันของคุณ คลิก Apply เพื่อดำเนินการต่อ
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-add-apache.jpg)
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-enable-public-ip-nginx.jpg)
3. เมื่อนำการเปลี่ยนแปลงที่จำเป็นทั้งหมดไปใช้สำเร็จ คุณควรปิดใช้งาน sticky sessions สำหรับเซิร์ฟเวอร์ balancer มิฉะนั้นคำขอทั้งหมดจาก IP address นั้นจะถูกเปลี่ยนเส้นทางไปยัง instance เดียวกันของแอปพลิเคชันเซิร์ฟเวอร์
ดังนั้นคลิกปุ่ม Config ถัดจากโหนด Nginx
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-nginx-config.jpg)
4. ไปที่ไฟล์ conf > nginx-jelastic.conf ไม่สามารถแก้ไขได้ ดังนั้นให้คัดลอกเนื้อหาทั้งหมดและวางลงในไฟล์ nginx.conf (อยู่ในโฟลเดอร์เดียวกัน) แทนที่จะรวม /etc/nginx/nginx-jelastic.conf; ตามเส้น (ที่วงไว้ตามภาพต่อไปนี้)
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-nginx-config-load-bal-1024x436.jpg)
5. จากนั้นค้นหาพารามิเตอร์ sticky path 2 รายการในโค้ด (ในส่วน DEFAULT UPSTREAM และ UPSTREAMS LIST) และคอมเมนต์ตามที่แสดงด้านล่าง
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-config-nginx-sticky-path.jpg)
หมายเหตุ :
อย่าลืมใส่วงเล็บปีกกาปิดหลังสตริง sticky path และไม่ควรใส่เครื่องหมายคอมเมนต์ไว้
6. บันทึกการเปลี่ยนแปลงที่ใช้และรีสตาร์ทเซิร์ฟเวอร์ NGINX
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-restart-node.jpg)
การทดสอบ Balancer และเปรียบเทียบผลลัพธ์
1. เปลี่ยนกลับไปที่เทอร์มินัลของคุณและเรียกใช้การทดสอบ ab อีกครั้งด้วยพารามิเตอร์เดียวกัน (ยกเว้นไฟล์ที่มีผลลัพธ์เป็น – ให้ระบุชื่ออื่น เช่น res2.tsv)
ab -g res2.tsv -n 500 -c 10 {URL_to_your_env}
ตอนนี้เรามาดำเนินการทดสอบ load balancing โดยตรงกัน
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-test-balancer-result.jpg)
2. เพื่อชี้แจงผลลัพธ์ที่ได้เราจะใช้ข้อมูลจากไฟล์ res1.tsv และ res2.tsv นำเข้าไปยัง spreadsheet และใช้ plot กราฟออกมา
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-data-1024x530.jpg)
คล้ายกับภาพต่อไปนี้:
![](https://docs.ruk-com.cloud/wp-content/uploads/2021/05/test-load-result-graph.jpg)
เนื่องจากตัวเลือกที่ระบุไว้กราฟสีน้ำเงินจะแสดงประสิทธิภาพของเซิร์ฟเวอร์ Apache แบบเดี่ยวที่ไม่มีตัว balancer (ผลการทดสอบจุดควบคุม [control point]) และเซิร์ฟเวอร์สีแดง จะเป็นสองเซิร์ฟเวอร์ที่มี NGINX load balancer (ผลการทดสอบขั้นที่สอง)
Note: The received testing results (response time for each sent requests) are shown in the ascending order, i.e. not chronologically.
หมายเหตุ :
ผลการทดสอบที่ได้รับ (เวลาตอบสนองสำหรับแต่ละคำขอที่ส่งไป) จะแสดงตามลำดับจากน้อยไปหามากกล่าวคือไม่เรียงตามลำดับเวลา
อย่างที่คุณเห็นในขณะที่ให้บริการ low load ประสิทธิภาพของการกำหนดค่าทั้งสองเกือบจะเท่ากัน แต่เมื่อจำนวนคำขอเพิ่มขึ้นเวลาตอบสนองสำหรับ Environment ที่มี instance เซิร์ฟเวอร์แบบซิงเกิ้ลแอปจะเพิ่มขึ้นอย่างมากซึ่งส่งผลให้แสดงคำขอน้อยลงในเวลาเดียวกัน ดังนั้นหากคุณคาดหวังว่าแอปพลิเคชันเซิร์ฟเวอร์ของคุณจะมีภาระงานสูง (high load) การเพิ่มจำนวน instance ในบันเดิล (bundle) ด้วยเซิร์ฟเวอร์ balancer จะเป็นวิธีที่ดีที่สุดในการทำให้ลูกค้าของคุณพึงพอใจ
เพลิดเพลินไปกับข้อดีทั้งหมดของคลาวด์!