Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > Windows Azure > Windows Azure Load Balance (Virtual Machine / VM) > ตอนที่ 1 : เข้าใจเกี่ยวกับ Load Balance เทคนิคการทำ Load Balance บน Azure VM



Clound SSD Virtual Server

ตอนที่ 1 : เข้าใจเกี่ยวกับ Load Balance เทคนิคการทำ Load Balance บน Azure VM

ตอนที่ 1 : ความเข้าใจเกี่ยวกับ Load Balance เทคนิคการทำ Load Balance บน VM ได้มีโอกาสการทำ Load Balance บน VM เพื่อรองรับจำนวนผู้ใช้ในจำนวนมาก ๆ เพราะปกติแล้ว Web Server ทั่ว ๆ ไปเช่น Server 1 เครื่อง จะมี Limit ความสามารถในการรองรับจำนวนผู้ใช้งานที่จำกัด ต่อให้เครื่องแรงแค่ไหนก็ตาม แต่เมื่อมีปริมาณผู้ใช้จำนวนมากตัว Application ของ Web Server ก็ย่อมที่จะทำงานหนักมาก และอาจจะเกิด Connection เต็ม การรอ Queue ก็เกิดขึ้น อันเนื่องจากปริมาณ Limit ของ Server ปัญหาที่ตามมาก็คือ Server Load ตัว CPU ก็ทำงานสูง และผลก็อาจจะทำให้ Web Server ค้างหรือแฮ้ง โดยปัญหานี้เว็บไซต์ใหญ่ ๆ จะเจอปัญหากันอย่างแน่นอน แต่ก็สามารถที่จะหา Solution ในการรองรับจำนวนผู้ใช้ในปริมาณมาก ๆ ด้วยการทำ Load Balance ซึ่งปกติแล้วในกรณีที่เราจะทำเองนั้น ค่อนข้างจะมีขั้นตอนและวิธีการยากพอสมควร แต่ปัญหานี้มันจะง่ายมากบน Windows Azure เพราะ Virtual Machine (VM) บน Windows Azure สามารถสร้าง Server ให้อยู่ในรูปแบบของ Load Balance ได้อย่างง่ายดาย

Windows Azure Virtual Machine (VM) Load Balance

Load Balance บน Windows Azure VM


จากรูปจะอธิบายถึงกระบวนการทำงานของ Load Balance ซึ่งเป็นขั้นตอนที่ง่าย ๆ คือ เช่น กรณีที่เรามี Web Application เราจะสร้าง VM ที่เป็น Application ของ Web Server ขึ้นมาหลาย ๆ ตัว ซึ่งแต่ล่ะตัวจะเรียกใช้ Server ที่เป็น Database ตัวเดียวกัน เพื่อให้ข้อมูลนั้นมาจากแหล่งเดียวกัน และจากรูปจะเห็นว่า VM ที่เป็น Web Server จะทำหน้าที่กระจายการทำงานไปในแต่ล่ะเครื่อง ซึ่งวิธีนี้เอง จะทำให้ Server นั้นไม่เกิดการรอการเกิดขึ้น เพราะต่อให้มี ผู้ใช้มากแค่ไหนก็ตาม เราก็สามารถสร้างจำนวน VM ขึ้นมารองรับการใช้งานได้

กรณีศึกษา
ผมได้มีโอกาสใช้งาน Load Balance ของ Azure VM ได้มีการใช้งานกับเว็บไซต์ของ thaicreate.com (PHP กับ MySQL Database) โดยรูปแบบการใช้งานคือจะสร้าง VM ที่เป็น Web Server จำนวน 3 ตัว และ VM ที่เป็น Database จำนวน 1 ตัว สรุปแล้วคือใช้ VM ทั้งหมด 4 ตัว สำหรับวิธีการที่จะสร้าง VM ที่เป็น Web Server ขึ้นมา 3 ตัวให้เหมือนกันนั้น คือการสร้าง VM จากนั้นใช้การ Capture เป็น Image หลังจากนั้นเราสามารถสร้าง VM หลาย ๆ ตัวด้วยการเลือกจาก Image ที่เราสร้างไว้ ซึ่งจะใช้การสร้างกี่ตัวก็ได้ และสามารถสร้างได้ในเวลาอันรวดเร็ว

ตอนที่ 8 : การติดตั้ง OS จาก Image บน Virtual Machine บน Windows Azure

ตอนที่ 9 : การสร้างและติดตั้ง Capture Image บน Virtual Machine (VM)

เข้าใจเพิ่มเติมเกี่ยวกับ Load Balance
การกระจายผู้ใช้ไปยัง Web Server ต่าง ๆ นั้น นั้นหมายถึง VM ที่ทำหน้าที่เป็น Web Server ก็จะต้องทำการติดตั้งตัว Source โปรแกรมที่เหมือนกันทุกประการ ซึ่งวิธีนี้เมื่อเรามีการ แก้ไข Source ของเว็บไซต์ ก็จะต้องทำการตาม Update ไปยังทุก ๆ VM ที่ทำหน้าที่เป็น Web Server แต่จากกรณีศึกษานี้ จะใช้การแยก Database มาอีกเครื่องหนึ่ง ซึ่งวิธีนี้จะทำให้ทุก ๆ VM เรียกข้อมูลเครื่องเดียวกัน และข้อมูลจะมีการ Update ตลอดเวลา ฉะนั้น เครื่องที่ทำหน้าที่เป็น Database นั้นจะต้องมีความแรงพอสมควร

ขั้นตอนการสร้าง Load Balance บน Azure Virtual Machine ในตัวอย่างนี้เราจะสร้าง VM ที่เป็น Web Server จำนวน 3 ตัว และ VM ที่เป็น Database จำนวน 1 ตัว และในตัวอย่างนี้จะไม่ได้อธิบายถึงขั้นตอนการติดตั้ง Web Server เช่น Apache / MySQL หรือ FTP (สามารถอ่านได้จากหัวข้อ Windows Azure กับ Virtual Machine)

สร้าง VM ที่เป็น Web Server ตัวที่ 1

Windows Azure Virtual Machine (VM) Load Balance

NEW -> COMPUTE -> VIRTUAL MACHINE -> FROM GALLERY









Windows Azure Virtual Machine (VM) Load Balance

ตั้งชื่อเป็น vm-web1

Windows Azure Virtual Machine (VM) Load Balance

VM ตัวแรกจะเลือกเป็น Create a new cloud services และสร้าง Create an availability set สำหรับ กลุ่มของ Server

Windows Azure Virtual Machine (VM) Load Balance

ตอนนี้เราได้ VM ตัวแรกชื่อว่า vm-web1


สร้าง VM ที่เป็น Web Server ตัวที่ 2

Windows Azure Virtual Machine (VM) Load Balance

ชื่อว่า vm-web2

Windows Azure Virtual Machine (VM) Load Balance

ขั้นตอนนี้เราจะเลือกให้ VM นี้ทำงานร่วมกับ Cloud ของ VM ที่ได้สร้างไว้ก่อนหน้านี้ รวมทั้ง Availability Set กลุ่มเดียวกัน

Windows Azure Virtual Machine (VM) Load Balance

ตอนนี้เราได้ VM ตัวที่สองชื่อว่า vm-web2


สร้าง VM ที่เป็น Web Server ตัวที่ 2

Windows Azure Virtual Machine (VM) Load Balance

ชื่อว่า vm-web3

Windows Azure Virtual Machine (VM) Load Balance

และเช่นเดิมให้เลือก Cloud และ Availability Set ตัวเดียวกัน

Windows Azure Virtual Machine (VM) Load Balance

ตอนนี้เราได้ VM ขั้นมาทั้ง 3 ตัวแล้ว โดยทั้งหมดจะทำงานภายใต้ Cloud และ Availability Set เดียวกัน


การสร้าง Endpoint หรือ Port สำหรับ Web Server สำหรับ Endpoint ของ VM ที่เป็น Web Server ในเครื่อง Load Balance ที่จำเป็นจะต้องใช้คือ Port : 80 และในทุก ๆ VM จะต้องทำการ Config ค่าที่เหมือนกัน

Windows Azure Virtual Machine (VM) Load Balance

ใน vm-web1 ให้เลือก Add Endpoint

Windows Azure Virtual Machine (VM) Load Balance

เลือก Add a Stand-Alone Endpoint








Windows Azure Virtual Machine (VM) Load Balance

กำหนด Port เป็น 80 และเลือก Create A Load-Balanced Set

Windows Azure Virtual Machine (VM) Load Balance

ตั้งชื่อ Port สำหรับ Load Balance ซึ่งในที่นี้จะเป็น 80

Windows Azure Virtual Machine (VM) Load Balance

เราได้ Endpoint ของ vm-web1 ซึ่งเป็น Load Balance ใน Port 80 และ VM อื่น ๆ จะต้องเรียกใช้งาน Port นี้เช่นเดียวกัน

Windows Azure Virtual Machine (VM) Load Balance

vm-web2 เลือก Add an Endpoint To an Existing Load-Balance Set ของที่เป็น VM แรก

Windows Azure Virtual Machine (VM) Load Balance

ได้ Endpoint ของ VM สอง

Windows Azure Virtual Machine (VM) Load Balance

vm-web3 เลือก Add an Endpoint To an Existing Load-Balance Set ของที่เป็น VM แรกเช่นเดียวกัน

Windows Azure Virtual Machine (VM) Load Balance

ได้ Endpoint ของ VM สาม

หลังจากที่เราได้ Web Server ที่เป็น VM ทำงานในรูปแบบของ Load Balance บน Port 80 ซึ่งตอนนี้ VM ทั้ง 3 ตัว จะทำงานกระจายโหลดไปในแต่ล่ะเครื่อง และเครื่องไหนที่ไม่ได้เปิดไว้ ก็จะไม่มีการทำงาน ซึ่งจะกระจายไปยังเครื่องที่ Online อยู่เท่านั้น

การสร้าง VM ไว้รัน Database สำหรับเรียกใช้งานด้วย Web Server

Windows Azure Virtual Machine (VM) Load Balance

NEW -> COMPUTE -> VIRTUALMACHINE -> FROM GALLERY


Windows Azure Virtual Machine (VM) Load Balance

ตั้งชื่อเป็น vm-db

Windows Azure Virtual Machine (VM) Load Balance

และเลือก Create a new cloud services กำหนด URL ของ Cloud

Windows Azure Virtual Machine (VM) Load Balance

เราได้ VM ที่เป็น Database เรียบร้อยแล้ว

Windows Azure Virtual Machine (VM) Load Balance

และที่ได้กล่าวไว้ก่อนหน้านี้คือ vm-db จะทำงานเป็น Database และถูกเรียกใช้งานด้วย VM ที่เป็น Web Server ทั้ง 3 ตัว ซึ่งเราจะต้องสร้าง Endpoint สำหรับการเชื่อมต่อมายัง VM ที่เป็น Database

Windows Azure Virtual Machine (VM) Load Balance

เลือก Add a Stand-Alone Endpoint

Windows Azure Virtual Machine (VM) Load Balance

เลือก MySQL ซึ่งค่า Default จะใช้ Port : 3306

Windows Azure Virtual Machine (VM) Load Balance

เราจะได้ Endpoint สำหรับการเรียกใช้งาน Database บน vm-db เรียบร้อยแล้ว ซึ่ง VM ทั้ง 3 ตัวสามารถทำการ Connect มายัง VM ที่เป็น Database ด้วย URL ของ Cloud ตามด้วย Port : 3306 เช่น

<?php
	$objConnect = mysql_connect("vm-db.cloudapp.net:3306","user","password");
	if($objConnect)
	{
		echo "Database Connected.";
	}
	else
	{
		echo "Database Connect Failed.";
	}

	mysql_close($objConnect);
?>


และจากตัวบทความนี้เราจะได้โครงสร้างของ VM ที่เป็น Load Balance ดังนี้

Windows Azure Virtual Machine (VM) Load Balance

รูปโครงสร้างการทำงานของ VM / Load Balance และ Database



ในบทความนี้เราจะเห็นว่า VM ที่ทำหน้าที่เป็น Load Balance จะมีอยู่ 3 ตัว ซึ่งในกรณีที่ทำงานเราจะเปิดให้ VM ทั้งสามทำหน้าที่กระจายจำนวนผู้ใช้งานไปในแต่ล่ะ VM แต่ในการใช้งานจริงแล้ว การทำงานของเว็บไซต์จะ Peak แค่บางช่วงเวลาเท่านั้น และการเปิด VM ไว้ตลอดก็เท่ากับเป็นการเสียค่าใช้จ่ายโดยไม่จำเป็น เพราะบางช่วงเวลา อาจจะใช้แค่ VM จำนวน 1 เครื่องก็สามารถที่จะรองรับการทำงานได้สบาย ๆ ซึ่งปัญหานี้ Windows Azure จะมีระบบ Auto Scale ทำหน้าที่ เปิด-ปิด จำนวน VM ให้สอดคล้องกับจำนวนผู้ใช้งาน สามารถใช้งาน VM ให้มีประสิทธิภาพสูงสุด ลดค่าใช้จ่ายที่ไม่ได้ใช้ และไม่จำเป็นได้ โดยบทความและเทคนิคการทำ Auto Scale ผมได้เขียนวิธีไว้ในบทความถัดไป

   
Share


ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท


ลองใช้ค้นหาข้อมูล


   


Bookmark.   
       
  By : ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ)
  Score Rating :  
  Create/Update Date : 2013-10-27 19:29:37 / 2017-03-24 10:44:45
  Download : No files
 Sponsored Links / Related

 
ตอนที่ 2 : การทำ Session Handler บน PHP Web Site บนระบบ Load Balance
Rating :

 
ตอนที่ 3 : การทำ Session State บน ASP.Net Web บนระบบ Load Balance
Rating :

 
ตอนที่ 4 : การทำ Auto Scale ช่วยให้ Load Balance ทำงานได้อย่างมีประสิทธิภาพ
Rating :

 
ตอนที่ 5 : ติดตั้ง Zpanel (Control Panel) บน VM/Linux ของ Azure Virtual Machine
Rating :

 
ตอนที่ 6 : ติดตั้ง Zpanel (Control Panel) บน Windows Server ของ Azure VM
Rating :


ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


Hit Link
   







Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่