การสร้างระบบ Load Balance Web Server ด้วยวิธีการ URL Redirect

เราสามารถสร้างระบบ Load Balance Web Server ด้วยวิธีการ URL Redirect
โดยสามารถสร้างด้วยภาษาใดก็ได้ แต่จะขอยกตัวอย่างด้วยภาษา PHP ได้ง่าย ๆ ดังนี้

ตัวอย่างไฟล์ server-status ที่ได้ทำการ monitor web server มาเรียบร้อยแล้ว

webserver1.testlab UP
webserver2.testlab DOWN

– เราสามารถใช้คำสั่งดึงไฟล์เพื่อคัดเฉพาะ Web Server ที่สามารถใช้งานได้จริง ๆ ดังนี้

exec("cat /tmp/server-status | grep UP",$redirect);

– จากนั้นจะทำการ นำรายการ server ทั้งหมดซึ่งอยู่ในตัวแปร $redirect มาทำการสุ่ม ดังนี้

$random = rand(0,(count($redirect)-1);

– ก็จะทำเอาเลข server ที่ random ได้ไปเข้ากระบวนการ Redirect ดังนี้

$server = explode(" ",$redirect[$random]);
header('HTTP/1.1 301 Moved Permanently');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
header('Location: https://'.$server[0].'/');
unset($server);

ในกรณีที่ต้องการสร้างหน้ารอให้ทำการตรวจสอบว่าในกรณีที่ไม่มีเครื่องให้บริการให้แสดงข้อความ ตัวอย่างดังนี้

if(count($redirect)==0){
   echo "Server Unavailable or Maintenance Period";
}

ดังที่กล่าวมาทั้งหมดข้างต้นสามารถรวมเป็น script ไฟล์ PHP ได้ดังนี้

<?php
exec("cat /tmp/server-status | grep UP",$redirect);
if(count($redirect)==0){
   echo "Server Unavailable or Maintenance Period";
}else{
   $random = rand(0,(count($redirect)-1));
   $server = explode(" ",$redirect[$random]);
   header('HTTP/1.1 301 Moved Permanently');
   header('Cache-Control: no-store, no-cache, must-revalidate');
   header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
   header('Location: http://'.$server[0].'/');
   unset($server);
}
unset($redirect);
?>

*สามารถอ่านวิธีสร้างไฟล์สำหรับ monitor web serverได้จาก บทความนี้ http://sysadmin.psu.ac.th/2014/06/19/monitor-web-server-wget-shell-script-daemon/

1 comment for “การสร้างระบบ Load Balance Web Server ด้วยวิธีการ URL Redirect

Leave a Reply