ทดสอบ Load Balancing
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
ตรวจสอบชื่อเมนู ตัวเลือก และข้อกำหนดล่าสุดจากเนื้อหาภาษาอังกฤษในหน้าเดียวกันก่อนดำเนินการกับระบบจริง
วัตถุประสงค์
บทความนี้อธิบายทดสอบ Load Balancing บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง
ก่อนเริ่มดำเนินการ
- เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
- ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
- สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production
เมื่อโปรเจกต์ของคุณเป็นที่ต้องการและมีผู้เยี่ยมชมมาก คุณจะประสบปัญหา – ความจำเป็นในการเพิ่มประสิทธิภาพการทำงานของ Hardware เนื่องจากควรจะสามารถจัดการและตอบสนองคำขอของผู้ใช้ที่เข้ามาทั้งหมดได้อย่างรวดเร็ว การเพิ่ม Resource เพิ่มเติมจะช่วยเพิ่มประสิทธิภาพในสถานการณ์นั้นได้ชั่วคราว ช่วยป้องกัน Server จากการล้มเหลว แต่จะไม่สามารถแก้ปัญหาที่เป็นสาเหตุได้ และส่งผลให้จำเป็นต้องตั้งค่าโซลูชันการจัดกลุ่มที่มีการทำโหลดบาลานซ์แบบอัตโนมัติในตัว
การปรับ ClusterApplication นั้นค่อนข้างง่ายด้วยการใช้ Ruk-Com Cloud เพียงเพิ่ม Application Server instance อีกไม่กี่ตัวให้กับ Environment ของคุณ นอกจากนี้คุณจะเปิดใช้งาน Server NGINX-balancer โดยอัตโนมัติในส่วนของหน้าโปรเจกต์ จะทำหน้าที่รับผิดชอบในการกระจายโหลดอย่างสม่ำเสมอระหว่างจำนวน NodeServer แอปที่ระบุ ซึ่งดำเนินการโดยอาศัยการ load balancing
ด้วยวิธีนี้ประสิทธิภาพ Application ของคุณจะเพิ่มขึ้นอย่างมากโดยเพิ่มจำนวนคำขอที่สามารถให้บริการได้ในภายครั้งเดียว เป็นโบนัสที่ดีที่คุณสามารถลดความเสี่ยงของการไม่สามารถเข้าถึงแอปได้เนื่องจากหากมี Server หนึ่งล้มเหลว แต่ส่วนที่เหลือทั้งหมดจะยังคงทำงานต่อไป
เพื่อพิสูจน์ว่าโครงการนี้มีประสิทธิภาพนั้น เราจะแสดงวิธีการทดสอบการจัดสรรภาระงานด้วยการใช้เครื่องมือ link # ApacheBench (ab) เป็นตัวช่วย มีความเป็นไปได้หลายประการในการทดสอบความสามารถของ Server ในการรับมือกับโหลดที่เพิ่มขึ้นและเปลี่ยนแปลงได้ แม้ว่า ab ได้รับการออกแบบมาสำหรับการทดสอบการติดตั้ง Apache แต่สามารถใช้เพื่อเปรียบเทียบ Server HTTP ต่าง ๆ ได้
มาเริ่มและทดสอบกันแบบเรียลไทม์กัน
สร้าง Environment และ Deploy Application
1. เข้าสู่ระบบ Ruk-Com Platform และคลิกปุ่มสร้าง Environmentที่มุมบนซ้ายของ Dashboard

2. หน้าต่างไดอะล็อก Environment topology จะปรากฏขึ้นทันที คุณสามารถเลือกภาษาโปรแกรมมิ่ง Application/เว็บ Server และ Database ที่ต้องการได้
ในขณะที่เรากำลังจะทดสอบการโหลด Server Apache PHP ให้เลือกและระบุลิมิตการใช้ Resource โดยใช้แถบเลื่อน cloudlets จากนั้นแนบ Public IP address สำหรับ Server นี้และพิมพ์ชื่อของ Env ใหม่ (เช่น balancer) คลิก Create.

3. ในเวลาเพียงไม่กี่นาที Env ของคุณจะปรากฏที่ Dashboard

4. เมื่อสร้าง Env สำเร็จแล้วคุณสามารถ Deploy (deploy) Application ของคุณได้ เราจะใช้ Package HelloWorld.zip เป็นค่าเริ่มต้น ดังนั้นคุณเพียงแค่ต้อง Deploy (deploy) กับ Env ที่ต้องการด้วยปุ่มที่เกี่ยวข้องและยืนยันการ Deploy (deploy) ในเฟรมที่เปิดอยู่

การทดสอบ Control Point
ในการวิเคราะห์ผลลัพธ์คุณจะต้องมีบางสิ่งเพื่อเปรียบเทียบ ดังนั้นเรามาทดสอบจุดควบคุมโดยใช้ Environment ที่สร้างขึ้นเป็นแบบ Application Server แบบ Node เดียว
ดังที่ได้กล่าวไว้ข้างต้นเราจะใช้เครื่องมือApacheBench (ab)เพื่อวัตถุประสงค์เหล่านี้ สามารถสร้างการโหลดแบบซิงเกิล้เธรดได้โดยการส่งคำขอพร้อมกันตามจำนวนที่ระบุไปยัง Server
ดังนั้น ให้ทำตามขั้นตอนด้านล่างนี้
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 ที่เกี่ยวข้องจากแถบที่อยู่ของ Browser

คำสั่งที่ระบุจะส่งจำนวนคำขอทั้งหมด 500 คำขอไปยัง Env ที่ระบุ ซึ่งแบ่งออกเป็นชุดของคำขอพร้อมกัน 10 รายการในครั้งเดียว ผลลัพธ์ทั้งหมดจะถูกเก็บไว้ในไฟล์ res1.tsv ภายในโฟลเดอร์ home ของคุณ (หรือป้อนพาธแบบเต็มไปยัง Directory ที่ต้องการหากคุณต้องการเปลี่ยนตำแหน่งไฟล์)
นอกจากนี้คุณสามารถระบุ Parameter ที่กำหนดเองสำหรับคำสั่งที่กล่าวถึงข้างต้นได้หากต้องการ

การทดสอบนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับ Parameter ที่ตั้งไว้ดังนั้นโปรดอดใจรอ
3. ไฟล์ที่ถูกสร้างขึ้นผลลัพธ์ควรมีลักษณะดังภาพด้านล่าง

เปลี่ยนการตั้งค่า Environment
1. กลับไปที่ Dashboard Ruk-Com Cloud แล้วคลิก Change environment topology สำหรับ environment balancer ของคุณ

2. ภายในกรอบ Environment topology ที่เปิดอยู่ ให้เพิ่ม Application Server เพิ่มเติม (เช่น เพิ่ม instance Apache อีกสักหนึ่งอัน) - ใช้ปุ่ม + ในส่วนตัวช่วยทำ Horizontal Scalingจากนั้นเปิดใช้งานคุณสมบัติ Public IP และระบุลิมิต Resource สำหรับ NodeNGINX-Balancerที่เพิ่มโดยอัตโนมัติ เนื่องจากจะกลายเป็นจุดเริ่มต้นของ Application ของคุณ คลิก Apply เพื่อดำเนินการต่อ


3. เมื่อนำการเปลี่ยนแปลงที่จำเป็นทั้งหมดไปใช้สำเร็จ คุณควรปิดใช้งาน sticky sessions สำหรับ Server balancer มิฉะนั้นคำขอทั้งหมดจาก IP address นั้นจะถูกเปลี่ยนเส้นทางไปยัง instance เดียวกันของ Application Server
ดังนั้นคลิกปุ่ม Config ถัดจาก Node Nginx

4. ไปที่ไฟล์conf > NGINX-Ruk-Com PaaS.confไม่สามารถแก้ไขได้ ดังนั้นให้คัดลอกเนื้อหาทั้งหมดและวางลงในไฟล์NGINX.conf(อยู่ในโฟลเดอร์เดียวกัน) แทนที่จะรวม/etc/NGINX/NGINX-Ruk-Com PaaS.conf; ตามเส้น (ที่วงไว้ตามภาพต่อไปนี้)

5. จากนั้นค้นหา Parameter sticky path 2 รายการใน Code (ในส่วน DEFAULT UPSTREAM และ UPSTREAMS LIST) และคอมเมนต์ตามที่แสดงด้านล่าง

หมายเหตุ :
อย่าลืมใส่วงเล็บปีกกาปิดหลังสตริง sticky path และไม่ควรใส่เครื่องหมายคอมเมนต์ไว้
6. บันทึกการเปลี่ยนแปลงที่ใช้และ RestartServerNGINX

การทดสอบ Balancer และเปรียบเทียบผลลัพธ์
1. เปลี่ยนกลับไปที่เทอร์มินัลของคุณและเรียกใช้การทดสอบ ab อีกครั้งด้วย Parameter เดียวกัน (ยกเว้นไฟล์ที่มีผลลัพธ์เป็น – ให้ระบุชื่ออื่น เช่น res2.tsv)
ab -g res2.tsv -n 500 -c 10 {URL_to_your_env}
ตอนนี้เรามาดำเนินการทดสอบ load balancing โดยตรงกัน

2. เพื่อชี้แจงผลลัพธ์ที่ได้เราจะใช้ข้อมูลจากไฟล์ res1.tsv และ res2.tsv นำเข้าไปยัง spreadsheet และใช้ plot กราฟออกมา

คล้ายกับภาพต่อไปนี้:

เนื่องจากตัวเลือกที่ระบุไว้กราฟสีน้ำเงินจะแสดงประสิทธิภาพของ Server Apache แบบเดี่ยวที่ไม่มีตัว balancer (ผลการทดสอบจุดควบคุม [control point]) และ Server สีแดง จะเป็นสอง Server ที่มี NGINX load balancer (ผลการทดสอบขั้นที่สอง)
หมายเหตุ:ผลการทดสอบที่ได้รับ (เวลาตอบกลับสำหรับคำขอที่ส่งแต่ละรายการ) จะแสดงตามลำดับจากน้อยไปหามาก กล่าวคือ ไม่ตามลำดับเวลา
หมายเหตุ :
ผลการทดสอบที่ได้รับ (เวลาตอบสนองสำหรับแต่ละคำขอที่ส่งไป) จะแสดงตามลำดับจากน้อยไปหามากกล่าวคือไม่เรียงตามลำดับเวลา
อย่างที่คุณเห็นในขณะที่ให้บริการ low load ประสิทธิภาพของการกำหนดค่าทั้งสองเกือบจะเท่ากัน แต่เมื่อจำนวนคำขอเพิ่มขึ้นเวลาตอบสนองสำหรับ Environment ที่มี instance Server แบบซิงเกิ้ลแอปจะเพิ่มขึ้นอย่างมากซึ่งส่งผลให้แสดงคำขอน้อยลงในเวลาเดียวกัน ดังนั้นหากคุณคาดหวังว่า Application Server ของคุณจะมีภาระงานสูง (high load) การเพิ่มจำนวน instance ในบันเดิล (bundle) ด้วย Server balancer จะเป็นวิธีที่ดีที่สุดในการทำให้ลูกค้าของคุณพึงพอใจ
เพลิดเพลินไปกับข้อดีทั้งหมดของ Cloud!
