File Synchronization Between Several Application Servers in a Cluster

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

สำหรับแอปที่ใช้กันอย่างแพร่หลาย (เช่น WordPress, Drupal, Joomla, Liferay, Redmine และแอปที่คล้ายกัน) การกระจายไปยังอินสแตนซ์ของเว็บเซิร์ฟเวอร์หลายตัวจะกลายเป็นปัญหา เนื่องจากโดยปกติเนื้อหาที่ผู้ใช้จัดหาทั้งหมดจะถูกบันทึกบนโหนดที่ประมวลผลคำขออัปโหลดไฟล์ที่เกี่ยวข้องเท่านั้น

เพื่อที่จะช่วยคุณกำจัดเนื้อหาที่ไม่ซิงค์กันเมื่อสร้าง cluster solution สำหรับแอปพลิเคชันของคุณ Ruk-Com Cloud PaaS ได้จัดเตรียมโปรแกรมเสริม add-on ที่มี File Synchronization เพื่อให้ไฟล์ที่อัปโหลดมีการตั้งค่าคล้ายกันในหลายอินสแตนซ์ของเว็บเซิร์ฟเวอร์พร้อมกันนี้การซิงโครไนซ์สามารถใช้ได้ ไม่เพียงแค่ในขอบเขตของ environment เดียว (เช่น สำหรับโหนดที่ปรับขนาดในแนวนอนเพียงโหนดเดียว) แต่สามารถทำข้ามแอปพลิเคชันเซิร์ฟเวอร์ใน environment ที่แยกจากกัน 2 environments ไม่ว่าจะเรียกใช้สแต็กและแอปพลิเคชันเดียวกันหรือต่างกันก็ตาม

ดังนั้นมาดูวิธีการใช้งานโซลูชันนี้โดยเฉพาะและวิธีการทำงานจริงในขั้นตอนต่อไป:

การทำ File Synchronization Add-on

File Sync โซลูชันสามารถทำได้เพียงคลิกเดียว add-on, โดยใช้งานกับ bundle ของ lsyncd daemon และการใช้ cron พร้อมกันนี้เมื่อใช้งานร่วมกับ inotify, lsyncd จะเริ่มต้นการซิงโครไนซ์ไฟล์เมื่อตรวจพบการเปลี่ยนแปลงที่เกิดขึ้นจริงในระบบ การทำเช่นนี้จะทำให้ CPU มีประสิทธิภาพลดลงมากเมื่อเทียบกับ sync calls แบบปกติและช่วยให้ข้อมูลของคุณทันสมัยอยู่เสมอซึ่งทำให้โซลูชันนี้ใช้งานง่าย ทรงพลัง และราคาไม่แพงในเวลาเดียวกัน

สามารถติดตั้งโปรแกรมเสริม File Sync ที่ด้านบนของสแต็กแอปพลิเคชันเซิร์ฟเวอร์ที่จัดการด้วย Ruk-Com Cloud (ยกเว้น Docker Containers) โดยก่อนใช้งานอุปกรณ์ระบบจะให้คุณเลือกโฟลเดอร์ที่จะซิงโครไนซ์ ด้วยวิธีนี้คุณสามารถซิงค์เฉพาะส่วนหนึ่งของระบบไฟล์ของแอปเซิร์ฟเวอร์ที่ต้องการ ดังนั้นการเปลี่ยนแปลงเฉพาะภายในไดเร็กทอรีที่เลือก (ในอินสแตนซ์ของแอปพลิเคชันเซิร์ฟเวอร์ที่ระบุ) เท่านั้นที่จะทริกเกอร์การซิงโครไนซ์ได้

การติดตั้งแอปพลิเคชัน

ในตัวอย่างนี้เราจะใช้แอปพลิเคชัน WordPress ซึ่ง deploy กับ environment ที่มีแอปพลิเคชันเซิร์ฟเวอร์สองตัว

เคล็ดลับ: คำแนะนำด้านล่างนี้เหมาะสำหรับแอปพลิเคชันอื่นๆที่คล้ายกัน (เช่น Drupal, Joomla, Liferay, Redmine เป็นต้น) ขึ้นอยู่กับภาษาโปรแกรมที่รองรับ เช่น Java, PHP, Ruby เป็นต้น

1. คุณสามารถติดตั้งแอปพลิเคชัน WordPress ด้วยตนเองหรือค้นหาแพ็กเกจที่เหมาะสมใน Marketplace เพื่อ deploy โดยอัตโนมัติ

คลิก Install และระบุรายละเอียดที่จำเป็น เช่น environment, ชื่อที่แสดง (alias) และภูมิภาค

คลิกปุ่ม Install เพื่อติดตั้งและรอซักครู่สำหรับข้อความกับข้อมูลผู้ดูแลระบบจะถูกส่งไปยังอีเมลของคุณในเวลาเดียวกัน

2. คลิก Change Environment Topology และใช้ปุ่ม + ปรับขนาดแนวนอนสำหรับเพื่อเพิ่มโหนดแอปเซิร์ฟเวอร์อีกหนึ่งโหนดเพื่อสร้างคลัสเตอร์

เมื่อตั้งค่าเสร็จแล้ว คลิกปุ่ม Apply

เคล็ดลับ: คุณสามารถดูคำแนะนำของเราในเอกสารประกอบเพื่อเพิ่มแอปเซิร์ฟเวอร์พิเศษ เปิดใช้งานความพร้อมใช้งานสูง หรือแม้แต่กำหนดค่า clustered solution ได้อย่างง่ายดาย
หากคุณต้องการเพิ่มแอปเซิร์ฟเวอร์เข้ากับ environment ที่มีความซับซ้อนมากขึ้น คุณสามารถดูการตั้งค่า clustered solution สำหรับแอปพลิเคชัน WordPress ของคุณได้ตามลิงก์ที่แนบไว้

การทดสอบ File synchronization ด้วยการการอัพโหลดไฟล์

ในส่วนของการติดตั้ง WordPress Cluster Kit v2 จะทำการซิงโครไนซ์โหนดทั้งสองโดยอัตโนมัติโดยมีขั้นตอนดังนี้:

1. เข้าไปที่แผงผู้ดูแลระบบ WordPress admin panel โดยเพิ่มส่วนต่อท้าย /wp-login.php กับโดเมน environment ของคุณและเข้าสู่ระบบโดยใช้ข้อมูลที่คุณได้รับทางอีเมล

  • คลิกปุ่ม Open browser ที่ environment ของคุณแล้วเพิ่ม /wp-login.php ต่อท้ายหรือคลิกลิงก์ที่ได้รับทางอีเมล
  • ใส่ Username และ Password ที่ได้รับทางอีเมล

2. เมื่อเข้าสู่ระบบแล้ว ให้ทำการเปลี่ยนแปลงที่กำหนดด้วยตนเอง (เช่น อัปโหลดรูปภาพหรือไฟล์อื่นๆ แก้ไขธีม เพิ่มหน้า ฯลฯ)

ยกตัวอย่างเช่น คลิก Media Library เพื่ออัปโหลดไฟล์

3. หลังจากอัปโหลดรูปภาพเสร็จให้คุณกลับมาที่หน้า Ruk-Com Cloud Dashboard แล้วคลิก Config ถัดจากเลเยอร์แอปเซิร์ฟเวอร์

4. ไปที่หน้า webroot (คลิกที่ Favorites) > ROOT > wp-content directory และเปรียบเทียบกับโหนดทั้งสองจะเห็นว่าไฟล์ที่อัปโหลดถูกจัดเก็บไว้ที่ไดเร็กทอรีทั้งสองโดยอัตโนมัติ

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

WordPresswebroot/ROOT/wp-content
Drupalwebroot/ROOT/sites
Joomlawebroot/ROOT/images
Liferaywebroot/home/liferay/data

หากคุณทำการเปลี่ยน environment topology โดยเพิ่มแอปเซิร์ฟเวอร์โหนดใหม่จะถูก sync ไฟล์โดยอัตโนมัติโดยไม่ต้องปรับเปลี่ยน/แก้ไขด้วยตนเอง

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