CLOUD PAAS / LOAD BALANCERS

การทดสอบการปรับสมดุลโหลด

คู่มือนี้เรียบเรียงและปรับรูปแบบสำหรับ Ruk-Com Cloud PaaS ภาพหน้าจออาจแตกต่างเล็กน้อยตามเวอร์ชันของระบบ

คลิกหรือแตะภาพหน้าจอเพื่อดูรายละเอียดขนาดจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน การทดสอบการปรับสมดุลโหลด บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และทรัพยากรเป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

เมื่อโปรเจกต์ของคุณเป็นที่ต้องการและมีผู้เยี่ยมชมมาก คุณจะประสบปัญหา – ความจำเป็นในการเพิ่มประสิทธิภาพการทำงานของฮาร์ดแวร์ เนื่องจากควรจะสามารถจัดการและตอบสนองคำขอของผู้ใช้ที่เข้ามาทั้งหมดได้อย่างรวดเร็ว การเพิ่มทรัพยากรเพิ่มเติมจะช่วยเพิ่มประสิทธิภาพในสถานการณ์นั้นได้ชั่วคราว ช่วยป้องกันเซิร์ฟเวอร์จากการล้มเหลว แต่จะไม่สามารถแก้ปัญหาที่เป็นสาเหตุได้ และส่งผลให้จำเป็นต้องตั้งค่าโซลูชันการจัดกลุ่มที่มีการทำโหลดบาลานซ์แบบอัตโนมัติในตัว

การปรับคลัสเตอร์แอปพลิเคชันนั้นค่อนข้างง่ายด้วยการใช้ Ruk-Com Cloud เพียงเพิ่มแอปพลิเคชันเซิร์ฟเวอร์ instance อีกไม่กี่ตัวให้กับ Environment ของคุณ นอกจากนี้คุณจะเปิดใช้งานเซิร์ฟเวอร์ NGINX-balancer โดยอัตโนมัติในส่วนของหน้าโปรเจกต์ จะทำหน้าที่รับผิดชอบในการกระจายโหลดอย่างสม่ำเสมอระหว่างจำนวนโหนดเซิร์ฟเวอร์แอปที่ระบุ ซึ่งดำเนินการโดยอาศัยการ load balancing

ด้วยวิธีนี้ประสิทธิภาพแอปพลิเคชันของคุณจะเพิ่มขึ้นอย่างมากโดยเพิ่มจำนวนคำขอที่สามารถให้บริการได้ในภายครั้งเดียว เป็นโบนัสที่ดีที่คุณสามารถลดความเสี่ยงของการไม่สามารถเข้าถึงแอปได้เนื่องจากหากมีเซิร์ฟเวอร์หนึ่งล้มเหลว แต่ส่วนที่เหลือทั้งหมดจะยังคงทำงานต่อไป

เพื่อพิสูจน์ว่าโครงการนี้มีประสิทธิภาพนั้น เราจะแสดงวิธีการทดสอบการจัดสรรภาระงานด้วยการใช้เครื่องมือ link # ApacheBench (ab) เป็นตัวช่วย มีความเป็นไปได้หลายประการในการทดสอบความสามารถของเซิร์ฟเวอร์ในการรับมือกับโหลดที่เพิ่มขึ้นและเปลี่ยนแปลงได้ แม้ว่า ab ได้รับการออกแบบมาสำหรับการทดสอบการติดตั้ง Apache แต่สามารถใช้เพื่อเปรียบเทียบเซิร์ฟเวอร์ HTTP ต่าง ๆ ได้

มาเริ่มและทดสอบกันแบบเรียลไทม์กัน

สร้าง Environment และ Deploy แอปพลิเคชัน

1. เข้าสู่ระบบ Ruk-Com Platform และคลิกปุ่มสร้างสภาพแวดล้อมที่มุมบนซ้ายของแดชบอร์ด

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. หน้าต่างไดอะล็อก Environment topology จะปรากฏขึ้นทันที คุณสามารถเลือกภาษาโปรแกรมมิ่ง แอปพลิเคชัน/เว็บเซิร์ฟเวอร์และฐานข้อมูลที่ต้องการได้

ในขณะที่เรากำลังจะทดสอบการโหลดเซิร์ฟเวอร์ Apache PHP ให้เลือกและระบุลิมิตการใช้ทรัพยากรโดยใช้แถบเลื่อน cloudlets จากนั้นแนบ Public IP address สำหรับเซิร์ฟเวอร์นี้และพิมพ์ชื่อของ Env ใหม่ (เช่น balancer) คลิก Create.

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

การทดสอบ 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 ที่เกี่ยวข้องจากแถบที่อยู่ของเบราว์เซอร์

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

นอกจากนี้คุณสามารถระบุพารามิเตอร์ที่กำหนดเองสำหรับคำสั่งที่กล่าวถึงข้างต้นได้หากต้องการ

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

การทดสอบนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับพารามิเตอร์ที่ตั้งไว้ดังนั้นโปรดอดใจรอ

3. ไฟล์ที่ถูกสร้างขึ้นผลลัพธ์ควรมีลักษณะดังภาพด้านล่าง

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เปลี่ยนการตั้งค่า Environment

1. กลับไปที่แดชบอร์ด Ruk-Com Cloud แล้วคลิก Change environment topology สำหรับ environment balancer ของคุณ

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ดังนั้นคลิกปุ่ม Config ถัดจากโหนด Nginx

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

6. บันทึกการเปลี่ยนแปลงที่ใช้และรีสตาร์ทเซิร์ฟเวอร์NGINX

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

การทดสอบ Balancer และเปรียบเทียบผลลัพธ์

1. เปลี่ยนกลับไปที่เทอร์มินัลของคุณและเรียกใช้การทดสอบ ab อีกครั้งด้วยพารามิเตอร์เดียวกัน (ยกเว้นไฟล์ที่มีผลลัพธ์เป็น – ให้ระบุชื่ออื่น เช่น res2.tsv)

ab -g res2.tsv -n 500 -c 10 {URL_to_your_env}

ตอนนี้เรามาดำเนินการทดสอบ load balancing โดยตรงกัน

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เนื่องจากตัวเลือกที่ระบุไว้กราฟสีน้ำเงินจะแสดงประสิทธิภาพของเซิร์ฟเวอร์ Apache แบบเดี่ยวที่ไม่มีตัว balancer (ผลการทดสอบจุดควบคุม [control point]) และเซิร์ฟเวอร์สีแดง จะเป็นสองเซิร์ฟเวอร์ที่มี NGINX load balancer (ผลการทดสอบขั้นที่สอง)

หมายเหตุ:ผลการทดสอบที่ได้รับ (เวลาตอบกลับสำหรับคำขอที่ส่งแต่ละรายการ) จะแสดงตามลำดับจากน้อยไปหามาก กล่าวคือ ไม่ตามลำดับเวลา

หมายเหตุ :
ผลการทดสอบที่ได้รับ (เวลาตอบสนองสำหรับแต่ละคำขอที่ส่งไป) จะแสดงตามลำดับจากน้อยไปหามากกล่าวคือไม่เรียงตามลำดับเวลา

อย่างที่คุณเห็นในขณะที่ให้บริการ low load ประสิทธิภาพของการกำหนดค่าทั้งสองเกือบจะเท่ากัน แต่เมื่อจำนวนคำขอเพิ่มขึ้นเวลาตอบสนองสำหรับ Environment ที่มี instance เซิร์ฟเวอร์แบบซิงเกิ้ลแอปจะเพิ่มขึ้นอย่างมากซึ่งส่งผลให้แสดงคำขอน้อยลงในเวลาเดียวกัน ดังนั้นหากคุณคาดหวังว่าแอปพลิเคชันเซิร์ฟเวอร์ของคุณจะมีภาระงานสูง (high load) การเพิ่มจำนวน instance ในบันเดิล (bundle) ด้วยเซิร์ฟเวอร์ balancer จะเป็นวิธีที่ดีที่สุดในการทำให้ลูกค้าของคุณพึงพอใจ

เพลิดเพลินไปกับข้อดีทั้งหมดของคลาวด์!