67
กรณีศึกษาการทํา Load Balance Web Server A Case Study use Load Balance on Web Server โชติมา ชาญนุกูล Chotima Channukul สารนิพนธฉบับนี้เปนสวนหนึ่งของการศึกษา ตามหลักสูตรวิทยาศาสตรมหาบัณฑิต สาขาวิชาเทคโนโลยีสารสนเทศ บัณฑิตวิทยาลัย มหาวิทยาลัยเทคโนโลยีมหานคร ปการศึกษา 2552

006 กรณีศึกษาการทำ Load Balance Web Server

  • Upload
    -

  • View
    533

  • Download
    2

Embed Size (px)

Citation preview

Page 1: 006 กรณีศึกษาการทำ Load Balance Web Server

กรณีศึกษาการทํา Load Balance Web Server

A Case Study use Load Balance on Web Server

โชติมา ชาญนุกูล

Chotima Channukul

สารนิพนธฉบับนี้เปนสวนหนึ่งของการศึกษา ตามหลักสูตรวิทยาศาสตรมหาบัณฑิต

สาขาวิชาเทคโนโลยีสารสนเทศ บัณฑิตวทิยาลัย มหาวิทยาลัยเทคโนโลยีมหานคร

ปการศึกษา 2552

Page 2: 006 กรณีศึกษาการทำ Load Balance Web Server

I

หัวขอโครงงาน กรณีศึกษาการทํา Load Balance Web Server นักศึกษา นางสาว โชติมา ชาญนุกูล รหัสนักศึกษา 5117620009 ปริญญา วิทยาศาสตรมหาบัณฑิต สาขาวิชา เทคโนโลยีสารสนเทศ พ.ศ. 2552 อาจารยผูคุมโครงงาน ผศ. ดร. หมัดอามีน หมันหลนิ

บทคัดยอ

ปจจุบันการคนหาขอมูลบนอินเตอรเน็ต มีความสําคัญมากตอการทํางาน หรือ การศึกษาหาความรู ความเขาใจเพิ่มเติม เพื่อใชในการแกปญหาตางๆ ในการทํางาน ตอบขอสงสัยตางๆ และหัวใจหลักท่ีเปนชองทางท่ีจะหาขอมูลบนอินเตอรเน็ต คือ “เว็บไซต”

ในปจจุบัน เว็บไซตไดเขามามีบทบาทท่ีสําคัญอยางย่ิงในการหาขอมูลบนอินเตอรเน็ต ทําใหการศึกษาคนควาในดานตางๆ เปนไปไดอยางรวดเร็ว และสะดวกมากย่ิงข้ึน โครงงานฉบับน้ีเปนการพัฒนากรณีศึกษาเกี่ยวกับการกระจายโหลด เพื่อแบงเบาภาระงานของเว็บเซิฟเวอรท่ีมีการเขาใชบริการเปนจํานวนมาก และสามารถนําทฤษฎีมาประยุกตใชในการเขียนโปรแกรมไดดวยตนเอง

Page 3: 006 กรณีศึกษาการทำ Load Balance Web Server

II

กิตติกรรมประกาศ

โครงงานฉบับน้ีสําเร็จลุลวงไดดวยดี ดวยการใหคําปรึกษา และคําแนะนําช้ีแนะตางๆ จาก ผศ. ดร. หมัดอามีน หมันหลินอาจารยผูควบคุมโครงงาน ขาพเจารูสึกซาบซ้ึงในความอนุเคราะห ของอาจารยท้ังสองทานเปนอยางมาก และขาพเจาขอขอบพระคุณเปนอยางสูง ขอขอบคุณคณะอาจารย มหาวิทยาลัยเทคโนโลยีมหานคร บัณฑิตวิทยาลัย สาขาวิชาเทคโนโลยีสารสนเทศ ที่ใหความชวยเหลือในเรื่องตางๆ ในการเรียนรูส่ิงใหมๆ ขอขอบคุณบิดา มารดา เพื่อนๆ พี่ๆ นองๆ ในสาขาวิชาเทคโนโลยีสารสนเทศทุกคน ท่ีใหคําแนะนํา และชวยเหลือขาพเจามาโดยตลอด รวมถงึคอยใหกําลงัใจเสมอมา สุดทายน้ีคุณคาและประโยชนอันพึงไดจากโครงงานฉบับน้ี ขาพเจาขอมอบแดผูมีพระคุณทุกทาน

โชติมา ชาญนุกูล

Page 4: 006 กรณีศึกษาการทำ Load Balance Web Server

III

สารบัญ หนา

บทคัดยอภาษาไทย l กิตติกรรมประกาศ II สารบัญ III สารบัญตาราง lV สารบัญรูปภาพ VII บทท่ี 1 บทนํา 1 1.1 ความเปนมาและความสําคัญของปญหา 1

1.2 แนวทางการแกไขปญหา 2 1.3 วัตถุประสงคและขอบเขตของโครงงาน 2 1.4 ขอบเขตของโครงการ 2 1.5 ข้ันตอนและวิธีดําเนินงาน 2 1.6 ประโยชนท่ีคาดวาจะไดรับ 2

1.7 เนื้อหา 3 1.8 ระยะเวลาในการดําเนินงาน 3 บทท่ี 2 ทฤษฏีที่เกี่ยวของ 4 2.1 การทํา Load Balance ทําไดหลายวิธี 4 - 2.1.1 Round Robin DNS 4 - 2.2.2 Random Redirection 5 - 2.2.3 Load Balancer 5 2.2 การใชงานระบบ Cluster Computing 7 - 2.2.1 โครงสรางของระบบคลัสเตอร 7 - 2.2.2 การติดตัง้ระบบคลัสเตอร 8 - 2.2.3 ขอแตกตางของระบบ Cluster Computing 8 - 2.2.4 สรุป 9

2.3 World Wide Web : HTTP 10 - 2.3.1 กลไกการทํางานของ HTTP 11 - 2.3.2 เมสเสจการรรองขอและตอบรับ (HTTP Message) 11

- 2.3.3 HTTP Response Message 12

Page 5: 006 กรณีศึกษาการทำ Load Balance Web Server

IV

สารบัญ (ตอ) หนา

2.4 การสมดุลภาระงานแบบกระจาย 12 - 2.4.1 การกระจายภาระงานแบงไดเปน 12 - 2.4.2 นโยบายที่ใชในขั้นตอนวิธีกระจายภาระงาน 13 2.5 งานวิจัยที่เกี่ยวของ 13 - 2.5.1 A Scalable HTTP Server: The NCSA Prototype 13 - 2.5.2 Scalable Web Server Architectures 13 - 2.5.3 Network Dispatcher: a Connection Router for Scalable 13 Internet Services - 2.5.4 High Performance Web-Server Systems 13 - 2.5.5 Redirection Algorithms for Load Sharing in Distributed 14 Web-Server Systems - 2.5.6 Dynamic Load Balancing on Web-Server Systems 14 - 2.5.7 Load Balancing a Cluster of Web Servers Using 14 Distributed Packet Rewriting

- 2.5.8 Load Distribution via Static Scheduling and Client Redirection 14 for Replicated Web Servers

- 2.5.9 Locality-Aware Request Distribution in Web Server Clusters 15 - 2.5.10 Efficient Support for Content-based Routing in 15 Web Server Clusters - 2.5.11 Scalable Content-aware Request Distribution in 15

Cluster-based Network Servers - 2.5.12 Summary Cache 15

- 2.5.13 Cache Digests [1] 16 - 2.5.14 An Adaptive Load Balancing Algorithm 16 Using Simple Prediction

Page 6: 006 กรณีศึกษาการทำ Load Balance Web Server

V

สารบัญ (ตอ) หนา

บทท่ี 3 การออกแบบโครงสรางของระบบและการพัฒนา 17 3.1 การจําลองแบบโครงสรางของระบบ 17 - 3.1.1 อธิบายโครงสรางการทํางานของระบบ 17 3.2 การออกแบบโครงสรางในครั้งนี้ จะมีสวนประกอบ 3 สวน 18 - 3.2.1 สวนที่ 1 Scrip Load Balance 18 - 3.2.2 สวนที่ 2 Application Scan Streaming 19 - 3.2.3 สวนที่ 3 Database 20 3.3 ลักษณะการทํางานรวมของระบบ 20

3.4 ขั้นตอนการติดตั้งโปรแกรมที่เกี่ยวของกับโครงงาน 21 - 3.4.1 ข้ันตอนการทําเว็บเซิฟเวอร 21 - 3.4.2 ขั้นตอนการติดตั้งโปรแกรมฐานขอมูล 30

บทท่ี 4 การทดสอบ และผลการทดสอบ 41 4.1 การทดสอบ 41 4.2 ผลการทดสอบโปรแกรม 44 4.3 สรุปผลการทดสอบ 46 บทท่ี 5 บทสรุป 47

5.1 สรุปผลการทดสอบ 47 5.2 ปญหาและอุปสรรค 48 5.3 ขอคิดเห็นและเสนอแนะ 48 เอกสารอางอิง 49 ภาคผนวก 51

ภาคผนวก ก. คําสั่งสคริปตและโคดของโปรแกรม 52

Page 7: 006 กรณีศึกษาการทำ Load Balance Web Server

VI

สารบัญตาราง หนา

ตารางที่ 4.1 เปรียบเทียบแสดงเขาใชไมพรอมกันตอการกระจาย Load Balance 45 ท่ีมี Server 2 เครื่อง 4.2 เปรียบเทียบแสดงเขาใชไมพรอมกันตอการกระจาย Load Balance 45 ท่ีมี Server 3 เครื่อง 4.3 เปรียบเทียบแสดงเขาใชพรอมกันตอการกระจาย Load Balance 46 ท่ีมี Server 2 เครื่อง

4.4 เปรียบเทียบแสดงเขาใชพรอมกันตอการกระจาย Load Balance 46 ท่ีมี Server 3 เครื่อง

Page 8: 006 กรณีศึกษาการทำ Load Balance Web Server

VII

สารบัญรูป หนา รูปท่ี 2.1 แสดงการทํางานแบบ Round Robin DNS 4 2.2 แสดงการทํางานแบบ Random Redirection 5 2.3 แสดงการทํางานของ Load Balance 6 2.4 การทํางานของโปรโตคอล HTTP 10 3.1 แสดงลักษณะการทํางานของระบบแบบภาพรวม 17 3.2 แสดง Flow Chart การทํางานของ Scrip Load Balance 18 3.3 แสดง Flow Chart การทํางานของ Application Scan Streaming 19 3.4 แสดง Flow Chart การทํางานของ Database 20 4.1 แสดงหนาตาของโฮมเพจ 41 4.2 แสดงตารางเก็บคาในฐานขอมูลขณะยังไมมีการนับคา 42 4.3 แสดงตารางเก็บคาในฐานขอมูลขณะมีการนับคา 42 4.4 แสดงหนาตาของโปรแกรม Scan Streaming 42 4.5 แสดงการเรียกใชคําสั่ง netstat –n 43 4.6 แสดงหนาของเว็บเพจ 44

Page 9: 006 กรณีศึกษาการทำ Load Balance Web Server

บทที่ 1 กรณีศึกษาการทํา Load Balance Web server

1.1 ความเปนมาและความสําคัญของปญหา เนื่องจากปจจุบันไมวาจะเปนเว็บขายสินคาออนไลนกําลังเปนที่นิยม และเว็บที่ใหขอมูลท่ัวไปอยางเชน Google ท่ีไดรับความนิยมเปนอยางมาก หรืออาจเปนพวกเว็บใหบริการขอมูลทองเที่ยว ขอมูลความรูทั่วไปที่เปนแบบใหบริการฟรี บางเว็บก็มีผูชมเขาไปเยอะมากอาจจะเปน แตก็อาจจะมีปญหาเรื่องเกี่ยวกับการเขาเว็บไซตพรอมๆกันที่ละหลายๆคน ทําใหผูใชไมสามารถเขาไปดูเขามูลไดลาชา ผูใชอาจจะความตองการในเวลานั้นแตไมสามารถเขาไปดูได ทําใหทอแทในการหาขอมูล

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

1. การเขาชมเว็บไซตในเวลาพรอมๆกนั อาจจะทําใหเขาไมไดหรือลาชา 2. เว็บไซตบริการสวนใหญ ไมมีการรับมือในการจัดการของระบบเว็บเซิรฟเวอร 3. เจาของเว็บไซตอาจขาดความรู ความเขาใจในการจัดการเว็บเซิรฟเวอร 4. ไมมีการตรวจสอบสถิตของผูเขาชมวาสามารถเขาชมไดหรือไม อยางไร เพราะ

อะไร 5. การหาซ้ืออุปกรณท่ีมาทํา load Balance มีราคาคอนขางแพงไมคุมกับการ

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

1. แนวทางการแกปญหาดังกลาว คือ จะมี Load Balancer หนึ่งตัว ขวางหนา Server ภายในกลุม เพ่ือรอรับ Request จาก User เม่ือมี Request เขามาตัว Load Balancer จะทําการ Forward Request ไปยัง Server ภายในกลุมเขียนโปรแกรมเขามาใชงานบนเว็บเซิรฟเวอรเพ่ือเปนการประหยัดคาใชจายแทนการซ้ืออุปกรณ ตัวโปรแกรมสามารถตรวจสอบและนับจํานวนคนเขาชมเว็บ แลวโปรแกรมก็จะจัดการกระจายแบงตามเซิรฟเวอรท่ีมีอยูใหสมดุล

Page 10: 006 กรณีศึกษาการทำ Load Balance Web Server

2

1.3 วัตถุประสงคของโครงงาน 1. สราง Load Balance ใหสัมพันธการใชงานกับเว็บเซิรฟเวอรอยางมี

ประสิทธิภาพ 2. ทําใหประสิทธิภาพการเขาใชบริการเว็บไซนไดรวดเร็วข้ึน 3. พัฒนาโปรแกรมท่ีสามารถประยุกตการใชงานในระบบไดจริง

1.4 ขอบเขตของโครงการ 1. เขียนโปรแกรม Load Balance รันบน Web Server เพื่อกระจายโหลด 2. โปรแกรมสามารถกระจายของเครื่องไคลเอนตไปยังเซิรฟเวอรตามลําดับได ให

สมดุลตามการเขาใชบริการ 3. โปรแกรมสามารถจําลองเคร่ือง Server จํานวน 3 เครื่อง 4. พิจารณาเวลาตอบสนองของเคร่ืองเซิรฟเวอรเทาน้ัน 5. ทําการทดลองและเปรียบเทียบกับการกระจายความสมดลุของเซิรฟเวอร กอนใช

โปรแกรมและหลังใชโปรแกรมมีขอแตกตางหรือไมอยางไร 1.5 ข้ันตอนและวิธีดําเนินงาน

1. ศึกษาการทํางานและการใหบริการของเวบ็ไซต 2. ศึกษาการใชงานของเว็บเซิรฟเวอร 3. ศึกษาการทํางานของLoad Balancing 4. ศึกษาการทํางานของภาษาท่ีใชเขียนโปรแกรม 5. วิเคราะหและออกแบบโปรแกรม 6. ทดลองและสรุปผล 7. จัดทํารูปเลมรายงาน

1.6 ประโยชนที่คาดวาจะไดรับ 1. เขาใจการทํางานของ Load Balancing 2. เขาใจการใชภาษาของโปรแกรมท่ีเขียน 3. เขาใจการใหบริการของเว็บเซิรฟเวอร 4. ศึกษาและพัฒนาโปรแกรมเพื่อประยุกตใชจริงไดในอนาคต

1.7 เน้ือหา

โครงการฉบับน้ีจะประกอบดวยสวนตาง ๆ 5 สวน ดังน้ี สวนที่ 1 กลาวถึงที่มาและความสําคัญของโครงงาน วัตถุประสงค ขอบเขต ผลที่

คาดหวัง เนื้อหา และกําหนดการ

Page 11: 006 กรณีศึกษาการทำ Load Balance Web Server

3

สวนที่ 2 กลาวถึงทฤษฎีพื้นฐานที่ใชในการทําโครงการ และเทคโนโลยีที่เกี่ยวของ สวนที่ 3 กลาวถึงการออกแบบ และพัฒนาโปรแกรม บรรยายโดยละเอียด สวนที่ 4 กลาวถึงการออกแบบวิธีการใชงานโปรแกรม ผลการทดลองทําโครงการ สวนที่ 5 กลาวถึงบทสรุปผลการดําเนินงาน ปญหาและอุปสรรค และแนวทางในการ

พัฒนาตอไป 1.8 ระยะเวลาในการดําเนินงาน

ระยะเวลาในการดําเนินงาน

ป 2552/1

ข้ันตอนการดําเนินงาน

มิ.ย ก.ค ส.ค ก.ย 1.ที่มาและความสําคัญของโครงงาน วัตถุประสงค ขอบเขต ผลที่คาดหวัง เนื้อหา และกําหนดการ

2. พื้นฐานที่ใชในการทําโครงการ และเทคโนโลยีที่เกี่ยวของ 3. การออกแบบ และพัฒนาโปรแกรมบรรยายโดยละเอยีด 4. การออกแบบวิธีการใชงานโปรแกรม ผลการทดลองโครงการ

5. บทสรุปผลการดําเนินงาน ปญหาและอุปสรรค และแนวทางในการพัฒนาตอไป

ระยะเวลาในการดําเนินงาน

ป 2552/2

ข้ันตอนการดําเนินงาน

พ.ย ธ.ค ม.ค ก.พ 1.ที่มาและความสําคัญของโครงงาน วัตถุประสงค ขอบเขต ผลที่คาดหวัง เนื้อหา และกําหนดการ

2. พื้นฐานที่ใชในการทําโครงการ และเทคโนโลยีที่เกี่ยวของ 3. การออกแบบ และพัฒนาโปรแกรมบรรยายโดยละเอยีด 4. การออกแบบวิธีการใชงานโปรแกรม ผลการทดลองโครงการ

5. บทสรุปผลการดําเนินงาน ปญหาและอุปสรรค และแนวทางในการพัฒนาตอไป

Page 12: 006 กรณีศึกษาการทำ Load Balance Web Server

บทที่ 2 ทฤษฏีที่เกี่ยวของ

2. ทฤษฏีที่เกี่ยวของ 2.1 การทาํ Load Balance ทําไดหลายวิธี ไดแก 2.1.1 Round Robin DNS คือการใช Feature ของ DNS โดยทําการ register ช่ือ domain ช่ือหน่ึงสําหรับหลายๆ ip address ขอดีของวิธีนี้คืองายที่สุดและใชงบประมาณนอยที่สุด แตเปนวิธีน้ีมีขอเสียคอนขางมาก ขอเสียที่สําคัญคือไมสามารถควบคุมการทํางานได เนื่องจากการทํางานดวยวิธีนี้จะมีแตการทํา Round Robin เทาน้ัน ไมสามารถปดการแบง load การทํางานแบบ real-time ได และหากตองการ register server เขาไปใน load จะตองใชเวลานานเพราะการทํา mapping dns น้ันจะมีการ cache ขอมูลไวตามที่ตางๆ ซึ่งเราไมสามารถควบคุมได

รูปที่ 2.1 แสดงการทํางานแบบ Round Robin DNS

Page 13: 006 กรณีศึกษาการทำ Load Balance Web Server

5

2.2.2 Random Redirection วิธีน้ีเปนวิธีท่ีนิยมกันแพรหลายในยุคสมัยหน่ึง

Server1 Server2

User User User

User User User

Distribute

รูปที่ 2.2 แสดงการทํางานแบบ Random Redirection ข้ันท่ี 1 user ทุกคนจะเขามาท่ี Distribute เปน Server กลางตัวหนึ่งที่จะคอย Redirect User ไปยัง Server ภายในกลุม เชน user พิมพวา www.narisa.com ตัว browser จะสง request ของ user ไปยัง Distribute จากน้ันตัว Distribute จะทําการสุมเลือก Server และทําการ redirect user ไปยังwww1.narisa.com หรือ www2.narisa.com เปนตน วิธีน้ีนิยมกันมากใน internet ยุคแรกๆ เน่ืองจากสมัยน้ันยังไมมีเทคนิคของการทํา Load Balancer และเม่ือมีแลวก็ยังราคาแพงอยูมาก (สมัยน้ันเม่ือ 7-8 ปที่แลว Load Balancer ตกเครื่องละ 1,000,000 บาท เปนอยางต่ํา) 2.2.3 Load Balancer ปจจุบันนิยมใชวิธีน้ีมากท่ีสุด วิธีน้ีเราจะมี Load Balancer หนึ่งตัว ขวางหนา Server ภายในกลุม เพ่ือรอรับ Request จาก User เม่ือมี Request เขามาตัว Load Balancer จะทําการ Forward Request ไปยัง Server ภายในกลุมCODE

Page 14: 006 กรณีศึกษาการทำ Load Balance Web Server

6

รูปที่ 2.3 แสดงการทํางานของ Load Balance

ตัวอยางการทํางานคราวๆคือ 1. ทําการ Register DNS ดวย IP ของ Load Balancer เชน www.narisa.com ---> xxx.xxx.xxx.1 2. ท่ี Load Balancer เราจะสราง Profile ข้ึนมา Profile หน่ึงเชนเปน profile ช่ือ Narisa.com 3. ทําการ Register IP Address ของ Server ท่ีจะอยูในกลุมเขาไปยัง Profile ของ Load Balancer เชน ท่ี profile Narisa.com ประกอบไปดวย Server1 ip xxx.xxx.xxx.2 และ Server2 ip xxx.xxx.xxx.3 4. เม่ือ User ทําการ Request ตองการใชงาน www.narisa.com ตัว request จะถูกสงมาท่ี load balancer ซ่ึง load balancer จะทําการตรวจสอบ Profile และ Policy ของการทํา load balance เชนจะใชวิธี Round Robin หรือ Performance หรือ Sticky เปนตน จากน้ันก็จะ Forward Request ของ User ไปยัง Server ภายในกลุมจากการทํางานของขอ 3 และ 4 จึงเกิดคําศัพทขึ้นมาคําหนึ่งคือ VIP หรือ Virtual IP น่ันก็คือ ท่ี IP xxx.xxx.xxx.1 น้ันเปนเพียง IP จําลองเปน IP ของ Load Balancer แต IP จริงๆของ Server1 และ Server2 เปน IP ตัวอื่น Load Balancer น้ันมีท้ังแบบเปน Hardware และเปน Software ซึ่งแตกตางกันที่ราคาและประสิทธิภาพการทํางาน Load Balancer ท่ีเปน Hardware จะมีราคาท่ีแพงแตประสิทธิภาพการทํางานดีกวา Software อยูมาก ขอดอย ของการทํา Load Balance ดวยวิธีที่ 3 คือมันจะเกิด Single Point of Failure น่ันก็คือหาก Load Balancer มีอันเปนไป User จะไมสามารถเขามาใชงานระบบไดเลย ดังนั้นสําหรับวิธีที่ 3

Page 15: 006 กรณีศึกษาการทำ Load Balance Web Server

7

สวนใหญแลวจะตองมีการทํา Backup สําหรับ Load Balancer ดวย ซ่ึงจะทําใหส้ินเปล้ืองคาใชจายเพ่ิมข้ึนไปอีกมาก ตามสถิติแลว Load Balancer มีโอกาส down นอยมาก คิดเปนรอยละ 0.001 ทีเดียว ดังน้ันคณุอาจจะไมตองมี Backup เลยก็ได 2.2 การใชงานระบบ Cluster Computing ระบบคลัสเตอร หรือคลัสเตอริ่ง เปนการเชื่อมตอระบบการทํางานของกลุมคอมพิวเตอรเขาดวยกันภายใตระบบเครือขายความเร็วสูง มีความสามารถในการกระจายงานท่ีทําไปยังเคร่ือง ภายในระบบเพื่อใหการประมวลผลมีประสิทธิภาพสูงขึ้น โดยอาจเทียบเทาซุปเปอรคอมพิวเตอรหรือสูงกวาสําหรับการประมวลผลงานที่มีความซับซอนโดยเฉพาะงานดานวิทยาศาสตร เชน การจําลองโครงสรางของโมเลกุลทางเคมี, การวิเคราะหเกี่ยวกับตําแหนงการเกิดพายุสุริยะ, การวิเคราะหขอมูลที่มีขนาดใหญ เปนตน ถาดูตามโครงสรางแลว ระบบคลัสเตอร คอืคอมพิวเตอรแบบขนานท่ีมีหนวยจําแยกน่ันเอง 2.2.1 โครงสรางของระบบคลัสเตอร แบงเปน 2 ชนิด คือ ระบบคลัสเตอรแบบปด คลัสเตอรจะตอผานเกตเวยที่ซอนทั้งระบบจากโลกภายนอก ขอดี คือ มีความปลอดภัยสูงและใชอินเตอรเน็ตแอดเดรสเพียงแอดเดรสเดียวเทานั้น ขอเสีย คือ แตละโหนดในระบบไมสามารถชวยกันบริหารขอมูลจากภายนอกได ระบบคลัสเตอรแบบเปด คลัสเตอรจะตอกับเน็ทเวิรคภายนอกโดยตรงทําใหผูใชเขาถึงทุกโหนดในระบบไดโดยตรง ขอดี คือ สามารถชวยกันบริการขอมูลได เหมาะกับงานบริการขาวสารเปนจํานวนมาก เชน ในระบบเซิรฟเวอรสําหรับ www หรือ ftp ที่ขยายตัวได ขอเสีย คือ ความปลอดภัยต่ําลงมากเพราะตองคอยดูแลทุกเครื่องในระบบ และยังตองการหมายเลขอินเตอรเน็ทแอดเดรสจํานวนมาก

คอมพิวเตอรแตละเครื่องในระบบคลัสเตอรจะถูกเรียกวา “โหนด (Node)” อาจจะมีโหนดท่ีทําหนาท่ีควบคุมการทํางานของโหนดอ่ืน ๆ ในระบบอีกช้ัน เรียกวา “Front-end Node” สวนโหนดอ่ืนจะทําหนาท่ีประมวลผลเปนหลัก เรียกวา “Compute Node” แตละโหนดจะสรางระบบท่ีเสมือนเปนเคร่ืองเดียว โดยใชวิธีการตาง ๆ เชน การใชงานระบบ Network Information System (NIS) เพื่อใหผูใช (User) สามารถใชงานรวมกันไดทุกโหนด ทําใหผูใชสามารถล็อกอิน (Login) เพื่อใชงานในโหนดใด ๆ ภายใตระบบคลัสเตอรเดียวกัน นอกจากน้ันภายในระบบคลัสเตอรอาจจะมีการใชงานซอฟตแวรตาง ๆ เพื่อการติดตั้งใชงาน, การจัดลําดับงานท่ีทําในระบบ, การดูแลบริหารระบบ และซอฟตเพ่ือการประมวลผลแบบขนาน (Parallel Computing)

Page 16: 006 กรณีศึกษาการทำ Load Balance Web Server

8

2.2.2 การติดตั้งระบบคลัสเตอร (Installation Clustering System) เม่ือเตรียมอุปกรณท่ีจะนํามาทําคลัสเตอร (เคร่ืองคอมพิวเตอรสมรรถนะสูง, ระบบ

เครือขายความเร็วสงู) จากน้ันเตรียมซอฟแวรในระบบคลัสเตอร เชน ระบบปฏิบัติการ (Linux, Solaris, BSD) สวนใหญมักจะเลือกใชลินุกซ (Linux) โดยลินุกซนั้นมีหลาย Distribution เชน RedHat, Debian, Turbo Linux, Slackware เปนตน ระบบซอฟแวรที่ใชในระบบคลัสเตอรควรเปนโปรแกรมแบบขนาน การโปรแกรมแบบขนานบนระบบคลัสเตอรนั้นจะใชวิธีการที่เรียกวา การโปรแกรมแบบสงผานขอความ (Message Passing) การโปรแกรมในลักษณะนี้ทําไดโดย การกระจายงานขนาดใหญไปยังหลาย ๆ เครื่องใหทํางานพรอมกัน และใชการแลกเปลี่ยนขาวสารผานเครือขายในการติดตอระหวางกลุมของโปรแกรมที่ชวยกันทํางาน ระบบโปรแกรมแบบขนานท่ีใชงานเปนมาตรฐานมีอยูสองระบบคือ ระบบ PVM เปนระบบท่ีมีมากอน โดยเปนงานของ Oak Rige National Laboratory และ University of Tennessee at Knoxville และในราวป ค.ศ. 1994 ไดมีมาตรฐานใหมเกิดขึ้น คือ MPI ซ่ึงเปนท่ียอมรับกันอยางกวางขวาง และจะมาแทนท่ี PVM ดวย โปรแกรม Utility และ Library ตาง ๆ โปรแกรมเหลานี้บางก็ชวยใหบริหารระบบไดดีขึ้น เชน Library Math บางตัวที่ทํางานแบบขนานได เชน Scalapack, PetSc เปนตน หรือ โปรแกรมสําหรับ Graphic Rendering โปรแกรมน้ีมีท้ังในระบบลินุกซ และวินโดว ซึ่งสามารถทํางานแบบขนานไดโดยใชเครื่องคอมพิวเตอรจํานวนมากชวยกันเรนเดอร (Render) 2.2.3 ขอแตกตางของระบบ Cluster Computing เม่ือเปรียบเทียบกับระบบอ่ืน ๆ ระบบ Cluster Computing กับ ระบบ Lan (Local Area Networking)

ระบบ Cluster Computing มีสวนสําคัญ 3 อยางคือ เครือขายความเร็วสงู ระบบซอฟตแวรที่สนับสนุนระบบคลัสเตอร และโปรแกรมประยุกตที่ใชขีดความสามารถของการประมวลผลแบบขนานหรือแบบกระจาย สวนระบบ Lan เครื่องทุกเครื่องที่อยูบนระบบ LAN เปนอิสระตอกันไมมีระบบซอฟตแวรที่นําความสามารถของการประมวลผลแบบขนานและแบบกระจายมาใช แต ระบบ Cluster Computing กับ ระบบ Grid (Grid Computing)

ระบบ Cluster Computing เปนการเชื่อมตอเพื่อเพิ่มสมรรถนะของการประมวลผลดวยเครื่องคอมพิวเตอรที่มีแพลตฟอรม (Platform) เดียวกันอยูในพ้ืนท่ีจํากัด สวน Grid Computing นั้นจะเชื่อมตอไดทุกแพลตฟอรม ไมวาแตละแพลตฟอรมจะหางไกลกันเทาไร ระบบ Cluster Computing กับ ระบบ Load balancing

ระบบ Cluster Computing มีการจัดกลุมของคอมพิวเตอรหลายตัวเพื่อใหสามารถทํางานไดเหมือนกับเปนคอมพิวเตอรตัวเดียวกัน ดังนั้นไมวา ผูใชเขามาใชงานเครื่องใดภายในกลุมก็จะรูสึกเหมือนใชงานเครื่องเดียวกัน คุณสมบัติของการทํา Clustering คือการทํารีพลิเคท(Replication) โดยในแงของ Web Application คือการทํา Session Replication ซ่ึงตามปกติแลว Session ของผูใชเก็บใน Web Server เครื่องที่ผูใชใชงานอยูเทานั้นแตการทํา Clustering

Page 17: 006 กรณีศึกษาการทำ Load Balance Web Server

9

จะเปนการคัดลอก Replicate Session น้ันไปยัง Web Server อื่นภายในกลุมดวย ทําใหไมวาผูใชจะเขาไปใชงานใน Server เครื่องใดก็จะมี Session ของผูใชอยูดวยเสมอ สวน Load Balancing คือการจัดกลุมของคอมพิวเตอรหลายตัวเพื่อแบงงานกัน หรือกระจาย Load การใชงานของผูใชไปยังคอมพิวเตอรภายในกลุม เพ่ือใหสามารถรับจํานวนผูใชท่ีเขามาใชงานไดมากข้ึน หรือสามารถรับงานที่เขามาไดมากขึ้น นอกจากนั้นยังมีคุณสมบัติของ Fail Over คือหากมีคอมพิวเตอรใดภายในกลุมมีปญหาไมสามารถทํางานได ตัว Load Balancer ท่ีเปนตัวแจก Load ใหคอมพิวเตอรภายในกลุมก็จะสง Load ไปยังเคร่ืองอื่นแทน จนกวาเคร่ืองน้ันจะกลับมาใชงานไดดงัเดิม การทํา Cluster ไมจําเปนตองพึ่ง Feature ของ Server เปนหลัก แตสามารถ Develop ตัว Application ใหเปน Cluster ไดโดยไมตองพึ่ง Feature ของ Server เชน การใชหลักการของ File Sharing หรือ Database สามารถทํางานไดเหมือนกัน เชนเดียวกับการทํา Load Balance ไมตองหา Hardware หรือ Software พิเศษท่ีจะทําหนาท่ีเปน Load Balancer แตเขียน Application เพ่ือทําการกระจาย Traffic ไปยัง Server ไดเหมือนกัน โดยใชหลักการของ Redirection เปนตน

การประมวลผลแบบขนาน (Parallel Processing) คือ การแบงงานออกเปนชิ้นเล็กใหแตละงานแกตัวประมวลผลหลาย ๆ ตัวในเวลาพรอมกัน ประโยชนของการใชวิธีการน้ี คือ แกปญหาขนาดใหญได ในเวลาท่ีเร็วข้ึน ลดคาใชจาย ซึ่งสามารถใชเครื่องพีซี โดยเชื่อมตอกันเปนระบบคลัสเตอร แทนการใชเครื่องเมนเฟรม หรือ ซุปเปอรคอมพิวเตอร 2.2.4 สรุป

Custer Computing คือระบบคอมพิวเตอรที่ประกอบดวยคอมพิวเตอรมากกวา 1 เครื่องตอเชื่อมกัน และแตละเครื่องอาจมีมากกวา 1 หนวยประมวลผล (CPU) โดยสามารถจัดสรรใหใชกับ CPU, ROM, RAM รวมกันได ทําใหไดระบบท่ีมีประสิทธิภาพสูงและงายตอการขยาย เพื่อการใชทรัพยากรการคํานวณและเขาถึงขอมูล ท่ีอยูกระจัดกระจาย อยางมีประสิทธิภาพและรวดเร็วทันตอเหตกุารณ ปจจุบันมีการแขงขันเพ่ือนําเทคโนโลยีใหมเขาสูตลาดรุนแรงข้ึน เพื่อใหสินคาสามารถขายได จึงตองเพิ่มคุณสมบัติเขาไปในระบบของตนเพื่อความไดเปรียบ เชน การใส Feature การทํา Load Balance รวมเขากับการทํา Clustering เขาไปในสินคาของตัวเอง ทําใหเคร่ืองคอมพิวเตอรสวนบุคคล (Personal Computer : PC) มีความสามารถสูงข้ึนไมตางจากเคร่ืองซุปเปอรคอมพิวเตอร เม่ือเทียบระหวางราคากับประสิทธิภาพท่ีไดรับสงผลใหประสิทธิภาพสูงขึ้นมากในราคาท่ีเทาเดิม ดังน้ันการเช่ือมระบบพีซีเขาดวยกันเพ่ือทํางานเปนซุปเปอรคอมพิวเตอรจึงสามารถทําไดเรียกวา “Beowulf Cluster” ปญหาอีกอยางหน่ึงท่ีพบเม่ือใชระบบราคาแพง คือ คาบํารุงรักษาท่ีสูงมาก สวนระบบ PC เปนเทคโนโลยีที่คนสวนใหญคุนเคย ทําใหสามารถบํารุงรักษาระบบไดงายกวา นอกจากน้ัน เมื่อเทคโนโลยีน้ันเกา หรือ ชาไปแลว การหาทุนเพ่ิมระบบจะเปนไปไดยาก ในขณะท่ีในระบบ

Page 18: 006 กรณีศึกษาการทำ Load Balance Web Server

10

PC Cluster การเพิ่มความสามารถทําไดทีละนอยในราคาที่ถูกกวา นอกจากน้ันเคร่ืองท่ีนําออกจากระบบยังเอาไปใชตอได รวมถงึความกาวหนาของ Software เชน ลินุกซ (Linux) ท่ีเปนระบบปฏิบัติการฟรี (Open Source) ที่มีประสิทธิภาพสูง, ระบบโปแกรมแบบขนาน MPI (Message Passing Interface) และ PVM (Parallel Virtual Machine) ทําใหสามารถสรางและใชขีดความสามารถของระบบคลัสเตอรไดเพิ่มมากข้ึนดวย 2.3 World Wide Web : HTTP

เวิลด ไวด เว็บ (World Wide Web) หรือ เรียกสั้นๆวา เว็บ (Web) หรือ WWW เปน แอพพลิเคชันหนึ่งที่ทําใหอินเตอรเน็ตเปนที่นิยมมากในปจจุบัน WWW ใชโปรโตคอล HTTP (Hyper Text Transfer Protocol) ซึ่งเปนโปรโตคอลที่ใชรับสงไฟล HTML (Hyper Text Markup Language) โดย HTML เปนภาษาอธิบายการแสดงเว็บเพจนั้นเอง WWW เปนแอพพลิเคชันที่ทํางานแบบไคลเอนทเซิรฟเวอรกลาวคือ WWW น้ันจะมีโฮสตเคร่ืองหน่ึงท่ีทําหนาท่ีเปนเซิรฟเวอร เรียกวาเว็บเซิรฟเวอร (Web Server) ซึ่งทําหนาที่ใหบริการเอกสาร HTML สวนเคร่ืองไคลเอนทน้ันใชโปรแกรมเว็บบราวเซอร (Web Browser) เชน อินเทอรเน็ตเอก็ซพลอเรอร (IE) จะรองขอไฟลื HTML จากเว็บเซิรฟเวอรและแสดงผลใหผูใชดู

Internet

HTTP Response

HTTP Request

รูปที่ 2.4 การทํางานของโปรโตคอล HTTP

Page 19: 006 กรณีศึกษาการทำ Load Balance Web Server

11

2.3.1 กลไกการทํางานของ HTTP โปรโตคอล HTTP เปนโปรโตคอลที่อยูในชั้นแอพพลิเคชันของชุดโปรโตคอล

TCP/IP ซึ่งจะเปนตัวกําหนดรูปแบบการรองขอไฟลของไคลเอนท (เว็บบราวเซอร) จากเว็บเซิรฟเวอร และรูปแบบจากการถายโอนไฟลจากเว็บเซิรฟเวอรไปยังไคลเอนท โดยขั้นตอนในรูปที่ 2.1 ซ่ึงอธิบายไดดังน้ีคือ กระบวนการน้ันจะเร่ิมท่ีฝงไคลเอนท โดยผูใชคลิกที่ลิงคในเว็บเพจ หรือพิมพ URL (Uniform Resource Locator) ในชองที่อยู (Address) ของเว็บบราวเซอร หลงัจากน้ันเว็บบราวเซอรจะสงการรองขอ (HTTP Request) ผานเครือขายไปยังเว็บเซิรฟเวอร เมื่อเว็บเซิรฟเวอรไดรับการรองขอก็จะคนหาไฟลที่กําหนดใน URL ซึ่งถาพบก็จะตอบกลับ (HTTP Response) พรอมไฟลกลับไปยังฝงไคลเอนท เว็บบราวเซอรเมื่อไดรับการตอบกลับก็จะแสดงไฟลน้ันใหผูใชดู โปรโตคอล HTTP ไมไดแสดงรูปแบบการแสดงผลใหผูใชดู ซึ่งหนาที่น้ีเปนของเว็บบราวเซอร ดังน้ัน เว็บบราวเซอรที่ตางกันอาจจะแสดงเว็บเพจไมเหมือนกันก็ได

2.3.2 เมสเสจการรรองขอและตอบรับ (HTTP Message) มาตรฐานของโปรโตคอล HTTP ท่ีใชในปจจุบันคือ เวอรชัน 1.1 (HTTP/1.1) ซ่ึงไดกําหนดรูปแบบขอมูลท่ีรับสงระหวางไคลเอนทและเซิรฟเวอร โดยขอความท่ีแลกเปลี่ยนกันน้ีแบงออกเปนสงประเภทคือ ขอความการรองขอ (HTTP Request Messags) และขอความการตอบกลับ (HTTP Response Message) ซ่ึงจะไดอธิบายดานลาง

- HTTP Request Message ดานลางเปนตัวอยางขอความการรองขอไคลเอนท GET / somedir/page.html HTTP/1.0 Host : www.gitew.co.th Connection: close User-agent : Mazilla/4.0 (extra carriage return, line feed) จากขอความการรองขอน้ี เราจะสังเกตเห็นคุณสมบัติของขอความไดดังน้ีคือ ขอความคั่นจะมีรูปแบบเปน ASCll Text ซ่ึงสามารถอานได ขอความประกอบดวย 4 บรรทัด ซ่ึงแตละบรรทัดจะมีตัวอักษร CR/LF (Carriage Return and Line Feed) โดยบรรทัดสุดทายน้ันจะมี CR/LE เพิ่มอีกหนึ่งชุด บรรทัดแรกน้ันเปนบรรทัดการรองขอ สวนบรรทัดท่ีเหลือน้ันเปนแคขอมูลสวนหัว (Header) ท่ีเพิ่มเขามาเทาน้ัน โดยขอมูลสวนน้ีจะมีหรือไมก็ได หรืออาจจะมีมากกวาน้ีก็ได ขอความในบรรทัดแรกน้ันจะประกอบดวย 3 สวน สวนแรกคือ เมธอด (Method) สวนที่สองคือ URL และสวนสุดทายคือ เวอรชันของโปรโตคอล HTTP ฟลดเมธอดท่ีคาท่ีเปนไปไดไมกี่คา เชน GET เปนเมธอดท่ีบราวเซอรตองการไฟล ซึ่งกําหนดในสวน URL จากเซิรฟเวอรน่ันเอง สวนคาอื่นท่ีเปนไปไดคือ HEAD เปนเมธอดท่ีบอกใหเว็บเซิรฟเวอรสง

Page 20: 006 กรณีศึกษาการทำ Load Balance Web Server

12

ขอมูลเฉพาะสวนหัวของเอกสาร HTML กลับมาเทาน้ัน และอีกเมธอดหน่ึงคือ POST ซ่ึงเมธอดน้ีใชสําหรับการสงขอมูลไปท่ีทางฝงเซิรฟเวอรน่ันเอง เชน ในกรณีของการสงขอมูลท่ีผูใชกรอบในฟอรม เปนตน ขอความท่ีอยูบรรทัดอื่นเปนขอความสวนหัว เชน บรรทัด Host : www.gitex.co.th เปนการบอกใหรูวาไฟลท่ีระบุใน URL น้ันอยูในเซิรฟเวอรท่ีช่ือ www.gitex.co.th เปนตน สวนบรรทัด User Agent: Mozilla/4.0 จะบอกถึงเว็บบราวเซอรท่ีใช ซ่ึงในท่ีน้ีหมายถึงเน็ตสเคปนั่นเอง 2.3.3 HTTP Response Message ตัวอยางของขอความการตอบกลับจากเว็บเซิรฟเวอร HTTP/1.1 200 OK Connection : close Date : Thu, 06 Aug 2003 12:00:15 GMT Server : Apache/2.0.4 (Unix) Last-Modified: Mon , 22 Jun 2003 09:23:24 GMT Content-Length : 6821 Content-Type : text/html (data data data data data….) สําหรับขอความการตอบกลับจะประกอบดวย 3 สวนคือ บรรทัดแรกเปนบรรทัดแสดงสภาวะ (Status Line) อีก 6 บรรทัดตอมาเปนขอมูลสวนหัว และสวนสุดทายคือ ดาตา หรือสวนที่เปนไฟลรองขอไปนั่นเอง บรรทัดแรกน้ันประกอบดวย 3 สวน โดยสวนแรกเปนเวอรชันของ HTTP สวนที่สองเปนรหัสสภาวะ และสวนสุดทายเปนขอความสภาวะ จากตัวอยางขางตนนี้แปลความไดวา เซิรฟเวอรใชโปรโตคอล HTTP เวอรชัน 1.1 และทุกอยางโอเค หมายความวาไฟลท่ีรองขอไปน้ีมีอยูในเซิรฟเวอรและไดสงมาพรอมขอความน้ี 2.4 การสมดุลภาระงานแบบกระจาย 2.4.1 การกระจายภาระงานแบงไดเปน • Static Load Distribution คือ การกระจายการรองขอไปยังเซิรฟเวอรตาง ๆ โดยไมคํานึงถึงสภาพภาระงานในปจจุบันของเซิรฟเวอร เชน วิธีวนรอบ หรือ วิธีสุม • Dynamic Load Distribution คือ การกระจายการรองขอไปยังเซิรฟเวอรตาง ๆ โดยพิจารณาจากสภาพภาระงานของเซิรฟเวอร

• Adaptive Load Distribution คือ การกระจายการรองขอ ซ่ึงจะมีการ ปรับเปล่ียนนโยบายในการกระจายการรองขอโดยข้ึนอยูกับสภาพภาระงาน ของระบบในขณะน้ัน

Page 21: 006 กรณีศึกษาการทำ Load Balance Web Server

13

2.4.2 นโยบายท่ีใชในข้ันตอนวิธีกระจายภาระงาน • Location Policy คือ การเลือกวาควรจะโอนงานไปยังเซิรฟเวอรตัวใด หรือ รับงานจากเซิรฟเวอรตัวใด ซึ่งอาจจะใชวิธีสุม หรือเปน State Polling • Information Policy คือ การพิจารณาวาเมื่อไรควรจะมีการแลกเปลี่ยนขอมูล สภาพภาระงานของเซิรฟเวอร ซ่ึงอาจแลกเปลี่ยนขอมูลกันแบบทุกชวงเวลา

• Transfer Policy คือ การพจิารณาวาควรจะโอนงานใหเซิรฟเวอรอ่ืนหรือไมเม่ือไรควรจะโอนงาน 2.5 งานวิจัยท่ีเก่ียวของ 2.5.1 A Scalable HTTP Server: The NCSA Prototype

เสนอแนวทางในการกระจายการรองขอของไคลเอนตไปยังเซิรฟเวอรตาง ๆ โดยมีดีเอนเอสทําหนาท่ีในการกระจายการรองขอ โดยไคลเอนตจถามไปยังดีเอนเอสจากน้ันดีเอนเอสก็จะเปลี่ยนจากยูอารแอลเปนที่อยูไอพีของเซิรฟเวอรตัวหนึ่งในเซิรฟเวอรท้ังหมด โดยวิธีการเลือกที่อยูไอพีของเซิรฟเวอรนั้นจะใชวิธีวนรอบ (Round Robin) 2.5.2 Scalable Web Server Architectures

ในงานวิจัยชี้ใหเห็นวา การกําหนดใหเซิรฟเวอรแตละตัว เพื่อใหบริการขอมูลที่ตางกันน้ัน ทําใหเซิรฟเวอรแตละตัวใหบริการขอมูลปริมาณที่นอยลง จึงเสนอใหมีเซิรฟเวอรตัวกลางที่เก็บขอมูลวาแตละการรองขอน้ันจะสามารถใชบริการไดจากเซิรฟเวอรใด และเมื่อไคลเอนตตองการรองขอขอมูลก็จะตองสงการรองขอมายังเซิรฟเวอรตัวกลางกอน จากน้ันเซิรฟเวอรตัวกลางก็จะเลือกวาการรองขอน้ันจะสามารถใชบริการไดจากเซิรฟเวอรใด แลวจึงสงการรองขอน้ันไปยังเซิรฟเวอรน้ันโดยใช HTTP Redirect 2.5.3 Network Dispatcher: a Connection Router for Scalable Internet Services

ในงานวิจัยไดเสนอเน็ทเวิรกดิสแพทเชอร คือ เราเตอร (Router) จะคอยตรวจสอบสภาพภาระงานของแตละเซิรฟเวอร เมื่อมีการรองขอจากไคลเอนตเขามายังเน็ทเวิรกดิสแพทเชอรแลวเน็ทเวิรกดิสแพทเชอรก็จะเลือกเซิรฟเวอรที่มีสภาพภาระงานนอยที่สุดเพื่อเปนผูใหบริการจากน้ันก็จะสงการรองขอไปยังเซิรฟเวอรน้ันโดยใชวิธี IP Packet Forwarding 2.5.4 High Performance Web-Server Systems

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

Page 22: 006 กรณีศึกษาการทำ Load Balance Web Server

14

2.5.5 Redirection Algorithms for Load Sharing in Distributed Web-Server Systems

ในงานวิจัยไดเสนอสถาปตยกรรมเว็บเซิรฟเวอรดังนี้คือ ดีเอนเอสเก็บขอมูลการเขาถึงจากทุก ๆ เซิรฟเวอรในการกําหนดวาในแตละเครือขายของไคลเอนตควรจะใชบริการจากเซิรฟเวอรใด ซ่ึง ดีเอนเอสก็จะใชขอมูลนี้ในการกระจายการรองขอไปยังแตละเซิรฟเวอรนอกจากนี้ดีเอนเอสก็จะสงขอมูลนี้ใหแตละเซิรฟเวอร เพื่อกระจายตัดสินใจใหแตละเซิรฟเวอรตัดสินใจไดวาเซิรฟเวอรนั้นจะตองใหบริการการรองขอนั้นหรือควรจะสงการรองขอน้ันไปยังเซิรฟเวอรตัวอื่น 2.5.6 Dynamic Load Balancing on Web-Server Systems

ไดสรุปสถาปตยกรรมเว็บเซิรฟเวอรแบบกระจาย ซ่ึงจะแบงตามเอนทิตีที่ ทําหนาท่ีในการกระจายการรองขอไปยังเว็บเซิรฟเวอร คือ Client-based, DNS-based, Dispatcher-based, Server-based และยังไดประเมินถึงขอจํากัดของแตละวิธี 2.5.7 Load Balancing a Cluster of Web Servers Using Distributed Packet Rewriting

ไดเสนอใหมีดีเอนเอสทําหนาที่กระจายการรองขอของไคลเอนตโดยวิธวนรอบ เพื่อใหทุก ๆ เซิรฟเวอรสามารถรับการรองขอจากไคลเอนตไดโดยตรง และเม่ือไคลเอนตสงการรองขอเขามายังเซิรฟเวอรแลวเซิรฟเวอรนั้นอาจจะใหบริการเอง แตหากเซิรฟเวอรมีภาระงานก็จะสงการรองขอไปใหเซิรฟเวอรอื่นใหเปนผูบริการแทนโดยใชเทคนิค Distributed Packet Rewriting 2.5.8 Load Distribution via Static Scheduling and Client Redirection for Replicated Web Servers

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

Page 23: 006 กรณีศึกษาการทำ Load Balance Web Server

15

2.5.9 Locality-Aware Request Distribution in Web Server Clusters เสนอใหมี ฟรอนทเอนด (Front End) ทําหนาท่ีกระจายการรองขอไปยัง เซิรฟเวอรแต

ละตัว โดยการพิจารณาจากเน้ือหาของการรองขอและสภาพภาระงานของเซิรฟเวอร เพื่อเลือกเซิรฟเวอรที่จะใหบริการการรองขอนั้น โดยจะสงการรองขอที่มีเนื้อหาเหมือนกันไป ประมวลผลที่เซิรฟเวอรเดียวกัน ทําใหเซิรฟเวอรสามารถนําขอมูลในหนวยความจําหลักมาใชใน การตอบการรองขอของไคเอนตได แตการกระจายการรองขอโดยพิจารณาจากเน้ือหาของการ รองขอน้ันจะตองมีการสรางการเช่ือมตอกับฟรอนทเอนดกอน จึงจะสามารถรูไดวาเนื้อหาของการ รองขอนั้นคืออะไร จากน้ัน ฟรอนทเอนดจึงสงการรองขอน้ันไปยังเซิรฟเวอรท่ีจะเปนผูใหบรกิาร 2.5.10 Efficient Support for Content-based Routing in Web Server Clusters

ในงานวิจัยเสนอวาควรมีการกระจายการรองขอของไคลเอนตไปยังเซิรฟเวอรตาง ๆ โดยพิจารณาจากเน้ือหาของการรองขอ คือ เม่ือไคลเอนตสงการรองขอเขามาและสรางการ เชื่อมตอกับตัวกระจายแลว ตัวกระจายจะตัดสินใจเลือกเซิรฟเวอรที่จะใหบริการ โดยพจิารณาจากเน้ือหาของการรองขอและสภาพภาระงานของเซิรฟเวอร เพื่อสงการรองขอที่มีเนื้อหา เหมือนกันไปประมวลผลท่ีเซิรฟเวอรเดียวกัน นอกจากน้ีตัวกระจายยังมีความสามารถในการ กระจายการรองขอที่มีเนื้อหาพลวัต(Dynamic Content) ไปยังเซิรฟเวอรคนละตัวกับท่ีใหบริการ การรองขอที่มีเนื้อหาสถิต อีกทั้งยอมใหเซิรฟเวอรแตละตัวนั้นเก็บขอมูลที่ตางกันได 2.5.11 Scalable Content-aware Request Distribution in Cluster-based Network Servers

ในงานวิจัยไดเสนอสถาปตยกรรมที่ปรับขนาดได สําหรับการกระจายการรองขอโดย พิจารณาจากเน้ือหาของการรองขอ กลาวคือ เมื่อไคลเอนตสงการรองขอเขามา จะมี Layer 4 Switch ทําหนาท่ีในการรับการรองขอ และกระจายการรองขอไปยังเซิรฟเวอรแตละตวั จากน้ันแตละเซิรฟเวอรนั้นจะถามไปยังดิสแพทเชอร เพื่อใหตัดสินใจเลือกเซิรฟเวอรที่จะใหบริการการรองขอ โดยพิจารณาจากเน้ือหาของการรองขอ เมื่อดิสแพทเชอร ตอบกลับวาควรใชบริการจากเซิรฟเวอร ใด ก็จะสงการรองขอน้ันไปยังเซิรฟเวอรน้ัน 2.5.12 Summary Cache

เสนอวาควรจะมีการใชขอมูลการรองขอรวมกันระหวางพรอกซี โดยจะ เก็บและแลกเปลี่ยนขอมูลที่อยูในรูปของซัมมารีแคช (Summary Cache) ซึ่งก็คือ ขอมูลผลสรุป ของขอมูลการรองขอในแคชของแตละพรอกซี เพื่อใชในการตรวจสอบกอนวามีขอมูลที่ตองการอยูในแคชของพรอกซีน้ันหรือไมกอนท่ีจะรองขอขอมูลจากพรอกซีน้ัน ซึ่งซัมมารีแคชนี้จะมีการเปลี่ยนแปลงทุกชวงเวลาที่กําหนดเทานั้น นอกจากนี้ซัมมารีแคชยังมีขอดีคือ จัดเก็บเปนขอมูลขนาดเล็ก ซ่ึงจะชวยลดจํานวนขอมูลท่ีแลกเปล่ียนกันระหวางพรอกซี

Page 24: 006 กรณีศึกษาการทำ Load Balance Web Server

16

2.5.13 Cache Digests [1] เสนอการทําแคชไดเจสท (Cache Digests) สําหรับใชในเว็บแคช ซึ่งแตละ พรอกซีจะนําขอมูลท่ีมีอยูในแคชมาสรางเปนแคชไดเจสทท่ีมีขนาดเล็ก เพื่อใหพรอกซีตัวอื่นใชแคชไดเจสทในการตรวจสอบไดวาพรอกซีใดนาจะมีขอมูลของเอกสารที่ตองการ 2.5.14 An Adaptive Load Balancing Algorithm Using Simple Prediction

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

Page 25: 006 กรณีศึกษาการทำ Load Balance Web Server

บทที่ 3 การออกแบบโครางสรางของระบบ และการพัฒนา

3.1 การจําลองแบบโครางสรางของระบบ

Send

Reque

stSend Request

Send d

ataSend data

รูปที่ 3.1 แสดงลักษณะการทาํงานของระบบแบบภาพรวม

3.1.1 อธิบายโครงสรางการทํางานของระบบ

จาก เครื่อง Client ทําการรองขอไปยัง Web Server โดยมี Scrip Load Balance ทําการ redirect ไปยัง Server ที่มีการเขาใชบริการนอยท่ีสุด สามารถตรวจเช็คไดจาก Database ที่มีการเก็บขอมูลมาจาก Server 1, 2, n…แบบ Real Time

IP Count

192.168.1.2 1

192.168.1.3 2

192.168.1.4 2

Page 26: 006 กรณีศึกษาการทำ Load Balance Web Server

18

3.2 การออกแบบโครงสรางในคร้ังน้ี จะมีสวนประกอบ 3 สวน 3.2.1 สวนที่ 1 Scrip Load Balance ที่อยูบน Web Server Load Balance การทํางาน สามารถเช็คสถานการณเขาใชบริการจาก Database และทําการกระจายการรองขอของ Client ไปยัง Server ท่ีมีการใชบริการนอยท่ีสุด

Start

Client

Scrip Load Balance

Server 1(ip address 1)Database

Server N (ip address N)

รูปที่ 3.2 แสดง Flow Chart การทํางานของ Scrip Load Balance

Page 27: 006 กรณีศึกษาการทำ Load Balance Web Server

19

3.2.2 สวนที่ 2 Application Scan Streaming จะติดตั้งอยูบนกลุม Server 1, 2,.. ทุกตัว การทํางาน นับคาการเขาใชบริการของ Client โดยคําส่ังเรียกขอมูลจาก Net Stat –n และนําคาจาก Net Stat –n เฉพาะคา ip และ port ของเครื่อง Client มานับคาที่เขาใชบริการ หลังจากน้ันโปรแกรมจะสงคาไปเก็บยัง Database

Start

Get คา จาก netstat -n

นําคา ip address

และ port 80

ของ Client

Database

Count

รูปที่ 3.3 แสดง Flow Chart การทํางานของ Application Scan Streaming

Page 28: 006 กรณีศึกษาการทำ Load Balance Web Server

20

3.2.3 สวนที่ 3 Database การทํางาน เก็บคาการทํางาน 2 สวน เก็บคา ip ของกลุม Server 1, 2, n… และการนับการเขาใชบริการของ Client

รูปที่ 3.4 แสดง Flow Chart การทํางานของ Database

3.3 ลักษณะการทํางานรวมของระบบ การทํางานของระบบ Load Balance ที่ออกแบบจะมีการกระจายการรองขอไปยังกลุม Server ยอย 1,2,n … ในที่น้ีขอเรียกกลุม Server วา Private Server 1 และ Private Server 2 ตามลําดับขึ้นอยูกับการเพิ่มจํานวนของ Server ภายในกลุม การทํางานโดยภาพรวมน้ีไดนําทฤษฏี Round Robin DNS คือการใช Feature ของ DNS ทําการ Register ช่ือ Domain ช่ือหน่ึงสําหรับหลายๆ ip address เราสามารถเพ่ิมจํานวนกลุม Private Server ในฐานขอมูล เม่ือมีการรองขอจาก Client เชน Client รองขอไปยัง Web Server IP 192.168.1.1 จะเขาสูหนา Web Server และ Client คลิกที่ Index หนาจอหลัก หลังจากน้ัน Web server Load Balance ก็ทําการสงคาขอรองไปยังกลุม Private Server 1,2 ,n… โดยดูจากฐานขอมูลท่ีมีการสงคาเขาใชงานใน Private Server น้ันๆ

Page 29: 006 กรณีศึกษาการทำ Load Balance Web Server

21

3.4 ขั้นตอนการติดต้ังโปรแกรมที่เกี่ยวของกับโครงงาน ในการทําโครงงานในคร้ังน้ี จําเปนตองติดตั้งโปรแกรมที่เกี่ยวของเกี่ยวกับการทดสอบของ

การกระจายโหลดบาลานซเพือ่ใหการทดสอบในคร้ังน้ีเปนไปตามสภาวะแวดลอมใหเหมือนจริงที่สุด ในที่นี้มีขั้นตอนการติดตั้งโปรแกรมที่เกี่ยวของ 2 โปรแกรมดวยกัน คือ ติดตั้ง IIS Server ลงในวินโดว XP และโปรแกรม SQL Server 2005 ลงในเว็บเซิฟเวอรโหลดบาลานซ 3.4.1 ข้ันตอนการทําเว็บเซิฟเวอร

การติดตั้งเว็บเซิฟเวอรลงในวินโดว XP มีขั้นตอนการติดตั้งดังนี้ การติดต้ัง IIS 1. คลิกที่ Start > Settings > Control Panel 2. ดับเบิ้ลคลิกที่ Add or Remove Programs 3. คลิกที่ Add/Remove Windows Components

4. คลิกเลือกที ่Internet Information Services (IIS) กรณีตองการดูรายละเอียดเพิ่มเติมใหคลิกเลือกที่ Details...

Page 30: 006 กรณีศึกษาการทำ Load Balance Web Server

22

5. คลิกปุม Next> เพื่อเริ่มติดตั้ง 6. กรณีระบบถามหาตัวติดตั้ง Windows XP ใหคลิกปุม OK แลวทําการ Browse หาแผน CD ติดตั้ง Windows XP หอง i386

Page 31: 006 กรณีศึกษาการทำ Load Balance Web Server

23

Page 32: 006 กรณีศึกษาการทำ Load Balance Web Server

24

7. คลิกปุม Open, OK 8.ระบบบจะทําการติดตัง้ IIS ดังรูป

Page 33: 006 กรณีศึกษาการทำ Load Balance Web Server

25

9. คลิกปุม Finish

การปรับแตง IIS 1. ทําการคลิกขวาที่ไอคอน My Computer > Manage

Page 34: 006 กรณีศึกษาการทำ Load Balance Web Server

26

2. คลิกที่ Services and Applications > Internet Information Services > Web Sites > Default Web Site

3. เริ่มปรับแตงโดยการคลิกขวาที่ Default Web Site > Properties 4. แท็บ Web Site • Description : ระบุชื่อเว็บไซตที่ตองการเชน www.cmsthailand.com • IP Address : เลือก IP Address ที่ตองการใชเรียกเว็บไซต (หากตองการใหเรียกไดทุก IP ก็เลือกเปน All Unassigned) • TCP Port : พอรตในการเรียกใชเว็บไซต เลือกเปน 80 กรณีใช port 80 การเรียกเว็บไซตไมจําเปนตองอางอิงพอรต เชน http://192.168.1.5 (เบื้องหลังเปน http://192.168.1.5:80) กรณีตองการเปลี่ยนพอรตอาทิ เปล่ียนเปนพอรต 81 ตอนเรียกเว็บก็เรียกเปน http://192.168.1.5:81

Page 35: 006 กรณีศึกษาการทำ Load Balance Web Server

27

5. แท็บ Home Directory Local Path : พาทท่ีตองการเก็บเว็บไซต ปกติจะเปน <drive:\>Inetpub\wwwroot [ ] Script source access : ตองการใหมองเห็นสคริปตไฟล [ / ] Read : อานไฟลได [ ] Write : เขียนทับไฟลได [ ] Directory browsing : ตองการใหสามารถมองเห็นขอมูลในไดเร็กทอรีได [ / ] Log visits : มีการเก็บล็อกไฟลไว [ / ] Index this resource : มีการเรียกหาไฟล index

Page 36: 006 กรณีศึกษาการทำ Load Balance Web Server

28

กรณีตองการตรวสอบภาษาท่ีสามารถใชงานได ก็คลิกดูที่ ปุม Configuration...

Page 37: 006 กรณีศึกษาการทำ Load Balance Web Server

29

6. แท็บ Document เพิ่มไฟล Home Page หรือไฟลหนาแรกท่ีตองการเรียกใชงาน โดยการคลิกที่ปุม Add index.html > ภาษา HTML index.shtml > ภาษา SHTML index.asp > ภาษา ASP index.aspx > ภาษา ASP.NET ในการใชงานจริงๆ ใหเพ่ิมเฉพาะภาษาท่ีเราใชงานในระบบเทาน้ัน เชน กรณีใชภาษา ASP ก็ใหเพิ่ม index.html, index.asp

Page 38: 006 กรณีศึกษาการทำ Load Balance Web Server

30

7. เมื่อปรับทุกสวนเสร็จแลวใหคลิกที่ปุม OK 8. ทําการ Stop และ Start IIS 1 รอบ

9. เสร็จสิ้นการปรับแตง IIS

3.4.2 ข้ันตอนการติดต้ังโปรแกรมฐานขอมูล การติดตั้งโปรแกรม SQL Server 2005 มีขั้นตอนการติดตั้งดังนี้

1.ไปที่แผนโปรแกรม SQL Server 2005 เลือกไปที่ SQLEXPR_ADV เมื่อดับเบิ้ลคลิกเขาไป SQLEXPR_ADV โปรแกรมจะแตก ไฟลออกมา

Page 39: 006 กรณีศึกษาการทำ Load Balance Web Server

31

2.คลิก เพือ่ยอมรับเงื่อนไขและทําการติดตั้งตอไป > คลกิ Next เพื่อทํารายการตอไป

3.คลิก Install เพื่อทําการติดตั้ง

Page 40: 006 กรณีศึกษาการทำ Load Balance Web Server

32

4.คลิก Next เพื่อทํารายการตอไป

5.คลิก Next เพื่อทํารายการตอไป

Page 41: 006 กรณีศึกษาการทำ Load Balance Web Server

33

6.คลิก Next เพื่อทํารายการตอไป

7.คลิก check box ตรง Hide advanced configuration options ออก เพื่อที่จะตั้งคาตอไปดวยตัวเอง > คลิก Next เพื่อทํารายการตอไป

Page 42: 006 กรณีศึกษาการทำ Load Balance Web Server

34

8.คลิกเลือก Tool ที่เราตองการติดตั้งหรือคลิกเลือกทั้งหมดและสามารถเลือก Patch ท่ีเราตองการติดตั้ง Database ไดที่ Database Services

9.คลิก Next เพื่อทํารายการตอไป

Page 43: 006 กรณีศึกษาการทำ Load Balance Web Server

35

10.คลิกเลือก Named instance พิมพวา SQL2005 (สามารถเลือก Default instance หรือ Named instanceชื่ออะไรก็ได)

•Default instance คือ การ Default ชื่อเครื่อง Computer เชน เวลา Connect Database ท่ี Master ใสชื่อ Server Name = Master

•Named instance คือ ชื่อเครื่อง Computer\ แลวตามดวย ชื่อที่พิมพเขาไปตอนติดตั้ง เชน Server Name = Master\SQL2005 11.คลิก Next เพื่อทํารายการตอไป

Page 44: 006 กรณีศึกษาการทำ Load Balance Web Server

36

12.คลิกเลือก Use the bult-in System account > เปลี่ยน Network service เปน Local System > คลิก Next

13.คลิกเลือก Mixed Mode (Windows Autentication and SQL Server Authentication) > ใส Password ที่ชอง Enter password : (เปน password ของ sa ) Confirm password : (เปน password ของ sa ) 14.คลิก Next เพื่อทํารายการตอไป

Page 45: 006 กรณีศึกษาการทำ Load Balance Web Server

37

15.คลิก Next เพื่อทํารายการตอไป

16.คลิก Next เพื่อทําตอไป

Page 46: 006 กรณีศึกษาการทำ Load Balance Web Server

38

17.คลิก Next เพื่อทํารายการตอไป

18.คลิก Next เพื่อทํารายการตอไป

Page 47: 006 กรณีศึกษาการทำ Load Balance Web Server

39

19.คลิก Install

20.การติดตั้งขั้นตอนนี้จะคอนขางใชเวลานาน เมื่อติดตั้งเสร็จ คลิก Next เพื่อทํารายการตอไป

Page 48: 006 กรณีศึกษาการทำ Load Balance Web Server

40

21.คลิก Finish

22.คลิก OK ติดตั้งเสร็จสมบูรณ

Page 49: 006 กรณีศึกษาการทำ Load Balance Web Server

41

บทที่ 4

การทดสอบ และผลการทดสอบ

ในบทนี้จะกลาวถึงระบบจําลองท่ีใชในการการทดสอบและผลการทดสอบประสิทธิภาพของการกระจายการรองขอของ Web Server ใหสมดุล 4.1 การทดสอบ ขัน้ตอนการรันโปรแกรม

สวนที่ 1 Scrip Load Balance จะฝงอยูในหนา Web Server ตัวแรกท่ีทําหนาท่ีเปน DNS Register IP ท่ีมีการรองขอจากเคร่ือง Client ดังรูปที่ 4.1 และจะสงคาการรองขอไปยังฝง Private Server โดยการเขาใชบริการ Server ตัวใดท่ีมีคานอยท่ีสุด ก็จะทําการรองขอไปยัง Server ตัวนั้น และแบงกระจายตามความสมดุล พิจารณาฐานขอมูลท่ีไดจากฝง Private Server จากรูป 4.2 และ 4.3 แสดงฐานขอมูลการเก็บคาเขาใชบริการของฝง Private Server

รูปท่ี 4.1 แสดงหนาตาของโฮมเพจ

Page 50: 006 กรณีศึกษาการทำ Load Balance Web Server

42

รูปที่ 4.2 แสดงตารางเก็บคาในฐานขอมูลขณะยังไมมีการนับคา

รูปที่ 4.3 แสดงตารางเก็บคาในฐานขอมูลขณะมีการนบัคา

สวนที่ 2 โปรแกรม Scan Streaming จะอยูในฝง Private Server ทําหนาที่สแกน IP Address และ Port การเขาใชบริการท่ีมีการรองขอ

รูปท่ี 4.4 แสดงหนาตาของโปรแกรม Scan Streaming

2

3

4

1

5

6

Page 51: 006 กรณีศึกษาการทำ Load Balance Web Server

43

หมายเลขที่ 1 ชองสําหรับปอนคา IP Server ของ Server ท่ีต้ังคา IP Address ตามเคร่ืองนัน้ๆ หมายเลขที่ 2 ชองสําหรับปอนคาช่ือเคร่ืองของ Server หรือสามารถใสคา IP Address ท่ีมี

ฐานขอมูล หมายเลขที่ 3 ชองสําหรับปอนคาชื่อฐานขอมูล หมายเลขที่ 4 ชองสําหรับปอนคา Username ของฐานขอมูล หมายเลขที่ 5 ชองสําหรับปอนคา Password ของฐานขอมูล หมายเลขที่ 6 ชองสําหรับปอนคาเวลาที่ทําการสงขอมูลไปยังฐานขอมูล ปุม Save ทําหนาท่ีบันทึกขอมูล ปุม Start โปรแกรมจะเร่ิมทํางาน ปุม Change ทําหนาท่ีเปล่ียนแปลงขอมูลใหม

โปรแกรมเร่ิมทํางาน โดยการจับคา IP Address และ port 80 ท่ีมาเกาะบน Server โดยเรียกขอมลูจากคําส่ัง netstat –n จากรูปท่ี 4.5 จะเห็นไดวาเม่ือ Server IP 192.168.1.3 เปด port 80 IP 192.168.1.20 เขามาใชบริการ Server IP 192.168.1.3 ดังรูปที่ 4.6

รูปที่ 4.5 แสดงการเรียกใชคําสั่ง netstat -n

Page 52: 006 กรณีศึกษาการทำ Load Balance Web Server

44

รูปที่ 4.6 แสดงหนาของเว็บเพจ

4.2 ผลการทดลอบโปรแกรม การทดสอบการกระจาย ของ Load Balance ไดทําการทดสอบอยู 2 ลักษณะ คือ - เพิม่จํานวนการเขาใชบริการของ Client - เพิ่ม Private Server

Page 53: 006 กรณีศึกษาการทำ Load Balance Web Server

45

เคร่ืองหมาย / คือ เขาใชไดปกติ เคร่ืองหมาย × คือ เขาใชไมได ตารางที่ 4.1 เปรียบเทียบแสดงเขาใชไมพรอมกันตอการกระจาย Load Balance ท่ีมี Server 2 เคร่ือง

จํานวนการเขาใช (เคร่ือง) IP

Private Server

1 2 3 4 5 6 7 8 9 10

192.168.1.2 / / / / / / / / / / 192.168.1.3 / / / / / / / / / /

ตารางที่ 4.2 เปรียบเทียบ แสดงเขาใชไมพรอมกันตอการกระจาย Load Balance ที่มี Server 3 เคร่ือง

จํานวนการเขาใช (เคร่ือง) IP

Private Server

1 2 3 4 5 6 7 8 9 10

192.168.1.2 / / / / / / / / / / 192.168.1.3 / / / / / / / / / / 192.168.1.4 / / / / / / / / / /

Page 54: 006 กรณีศึกษาการทำ Load Balance Web Server

46

ตารางที่ 4.3 เปรียบเทียบแสดงเขาใชพรอมกนัตอการกระจาย Load Balance ทีมี่ Server 2 เคร่ือง

จํานวนการเขาใชบริการ (เคร่ือง)

IP

Private Server

2 3 4 5 6

192.168.1.2 / / / / / 192.168.1.3 x x x x x

ตารางที่ 4.4 เปรียบเทียบแสดงเขาใชพรอมกนัตอการกระจาย Load Balance ทีมี่ Server 2 เคร่ือง

จํานวนการเขาใชบริการ (เคร่ือง)

IP

Private Server

2 3 4 5 6

192.168.1.2 / x / / x

192.168.1.3 x / x x / 192.168.1.4 x x x x x

4.3 สรุปผลการทดสอบ จากตารางเปรียบเทียบ แสดงเขาใชบริการตอการกระจาย Load Balance ที่มีการเขาใชไมพรอมกัน จํานวน Client 20 เคร่ือง ตอ Private Server 2 เคร่ือง พบวาการกระจายของ Load Balance เปนไปอยางมีประสิทธิภาพ แตเมือ่มีผูเขาใชบริการพรอมกัน ประสิทธิภาพในการกระจายของ Load Balance มีการกระจายไมแนนอน

Page 55: 006 กรณีศึกษาการทำ Load Balance Web Server

บทท่ี 5 บทสรุป

5.1 สรุปผลการทดสอบ

จากทฤษฎี Round Robin DNS ท่ีไดนํามาประยุกตใชเพียงบางสวนของโปรแกรมรวมกับการนับ session ท่ีเกาะบนเว็บเซิฟเวอร ทําใหประสิทธิภาพของโปรแกรมในของระบบนั้น สามารถทําการกระจายจํานวนการเขาใชบริการไปยัง Private Server แตไมสามารถเช็คภาระการทํางาน เชน สถานะของ CPU และ RAM ใน Private Server ได สามารถวิเคราะหขอดี ขอเสีย ปญหาและอุปสรรค ไดดังนี้

ขอดี

1. สามารถทําการกระจายโหลดไดดี เมือ่มีผูเขาใชบริการมีจํานวนมากขึน้ 2. สามารถนับจํานวนการเขาใชบริการได 3. สามารถเพิม่จํานวน Private Server ได 4. ประหยัดคาใชจายในการลงทุนซื้ออุปกรณ Load Balance ท่ีมรีาคาแพง 5. โปรแกรมใชงาย สะดวกตอการติดตั้ง 6. สามารถพัฒนาระบบการทํางานของโปรแกรมไดในอนาคต

ขอเสีย

1. ไมสามารถเช็คภาระการทํางาน เชน สถานะของ CPU และ RAM ใน Private Server ได 2. เมือ่ผูเขาใชบริการทําการรองขอพรอมกัน จํานวนหลายเคร่ือง การกระจายโหลดอาจทําการ

ลาชา หรือไมสามารถเขาใชบริการไดทันที 3. การตัดสินใจในการกระจายเมื่อมีการเขาใชบริการพรอมกันยังไมแนนอน 4. บางครั้งโปรแกรมยังจดจําคาที่มีการรองขอไปที่ Private Server เดิม ถาไมมีการปด

Browser

Page 56: 006 กรณีศึกษาการทำ Load Balance Web Server

48

5.2 ปญหาและอุปสรรค การจําลอง Web Server ใน Windows XP บางเวอรชั่นไมสามารถรองรับการทํางานของ VB.net ได ทําใหยุงยากตอการเตรียมการ และไมเหมาะสมตอการจําลองระบบ Server ใน VMware เพราะความสามารถของเคร่ืองคอมพิวเตอรไมมีประสิทธิภาพพอตอการจําลองระบบ การใชอุปกรณจริง เชน Computer, Switch, LAN Card เปนตน จะมีความแนนอนกวา แตจะมีความยุงยากตอการเตรียมอุปกรณและเคล่ือนยายเม่ือมีการทดสอบระบบใหกับอาจารยท่ีปรึกษาและคณะกรรมการ เพือ่ใหไดรับการพิจารณา 5.3 ขอคดิเห็นและเสนอแนะ 5.2.1 โปรแกรมสามารถพัฒนาตอยอดเพื่อปรับปรุงใชจริงไดในอนาคต แตควรนําทฤษฎีอ่ืนๆมาเพ่ิมเติม เชน ในการเช็คสภาวะการทํางานของ CPU และ RAM ใน Server เปนตน 5.2.2 การศึกษา Load Balance จําแนกไดหลายวิธีข้ึนอยูกับการนําไปใชงานท่ีเหมาะสม เชน Web Server ที่ใหบริการอยาง Google หรือ Load Balance ที่ใชในการกระจายภาระของ Bandwidth ท่ีใชในราน Internet Café เปนตน 5.2.3 สามารถนําโปรแกรมมาประยุกตใชรวมกับอุปกรณ Load Balance แตอาจจะแยกการทํางานคนละสวนอยางมปีระสิทธิภาพ 5.2.4 จากการศึกษาทฤษฎี Load Balance ยังมีวิธีอ่ืนอีกมากมายท่ีสามารถทําการกระจาย Load หรือแบงจาย Load ไดอยางมีประสิทธิภาพมากกวา ท้ังนีข้ึ้นอยูกับการนําไปใชใหเหมาะสมกับวัตถุประสงคขององคกรนัน้ๆ 5.2.5 วิธีการทํา Load Balance ไมมขีอจํากัดวาจะทําในระบบปฏิบัติการใดๆ หรือ อุปกรณเนต็เวิรคตางๆ เชน Router, Switch Layer 3, Firewall ก็สามารถทํา Load Balance ไดเชนกัน

Page 57: 006 กรณีศึกษาการทำ Load Balance Web Server

49

เอกสารอางอิง [1] Alex Rousskov and Duane Wessels. Cache Digests. Proceedings of the 3rd

International WWW Caching Workshop, Manchester, England , June 1998. TERENA, Trans-European Research and Education Networking Association.

[2] Antoine Mourad and Huiqun Liu. Scalable Web Server Architectures. Proceedings of the IEEE Symposium on Computers and Communications (ISCC’97),Alexandria, Egypt, July 1997.

[3] Chu – Sing Yang and Mon–Yen Luo. Efficient Support for Content–Based Routing in Web Server Clusters. USENIX Symposium on Internet Technologies and Systems, Boulder, Colorado, USA, October 1999.

[4] Eric Dean Katz, Michelle Butler and Robert McGrath. A Scalable HTTP Server: The NCSA Prototype. Computer Networks and ISDN Systems, 1994.

[5] Gil-Haeng Lee, Wang-Don Woo and Byeong-Nam Yoon. An Adaptive Load Balancing Algorithm Using Simple Prediction Mechanism. Proceedings of the 9th International Database and Expert Systems Applications Workshop, 496-501, 1998.

[6] Guerney D.H. Hunt, German S. Goldszmidt, Richard P. King and Rajat Mukherjee. Network Dispatcher: a connection router for scalable Internet services. Proceedings of the 7th International World Wide Web Conference, Brisbane, Australia, April 1998.

[7] Li Fan, Pei Cao, Jussara Almeida and Andrei Z. Border. Summary Cache: A Scalable Wide-Area Web Cache Sharing Protocol. IEEE/ACM Transactions on Networking, 8(3):281-293, June 2000.

[8] Luis Aversa and Azer Bestavros. Load Balancing a Cluster of Web Servers Using Distributed Packet Rewriting. Proceedings of the IEEE International Performance, Computing, and Communications Conference, Phoenix, AZ USA, February 2000.

Page 58: 006 กรณีศึกษาการทำ Load Balance Web Server

50

[9] Mohit Aron et al, Darren Sanders, Peter Druschel and Willy Zwaenepoel. Scalable Content–Aware Request Distribution in Cluster–based Network Servers. Proceedings of the 2000 USENIX Annual Technical Conference, SanDiego, CA USA, June 2000.

[10] Valeria Cardellini, Michele Colajanni and Philip S. Yu. Dynamic Load Balancing on Web-Server Systems. IEEE Internet Computing, 3(3):28-39, May-June 1999.

[11] Valeria Cardellini, Michele Colajanni and Philip S. Yu. Redirection Algorithms for Load Sharing in Distributed Web-Server Systems. Proceedings of the 19thInternational Conference on Distributed Computing Systems, Austin, Texas, June 1999.

[12] Vivek S. Pai, Mohit Aron, Gauray Banga, Michael Svendsen, Peter Druschel, Willy Zwaenepoel and Erich Nahum. Locality–Aware Request Distribution in Cluster–based Network Servers. Proceedings of the 8th ACM Conference on Architectural Support for Programming Languages and Operating Systems, Sanjose, CA USA, October 1998.

[13] Valeria Cardellini, Michele Colajanni and Philip S. Yu. High Performance Web- server Systems. Proceedings of the 13th International Symposium on Computer and Information Sciences, Ankara, Turkey, October 1998.

[14] Wenting Tang and Matt W. Mutka. Load Distribution via Static Scheduling and client Redirection for Replicated Web Servers. Proceedings of the International Workshop on Scalable Web Services (in conjunction with ICPP’00), Toronto, Ontario, Canada, August 2000.

[15] Alteon Personal Content Director [Online]. Available from : http://www.westcon.uk/alteon/alteonprodinfoPCD.htm [2001, Sep 17]

[16] Network Simulation2 [Online]. Available from : http://www.isi.edu/nsnam/ns [2002, Jan 10]

[17] Yahoo [Online]. Available from : http://www.yahoo.com [2001, Aug 14]

Page 59: 006 กรณีศึกษาการทำ Load Balance Web Server

ภาคผนวก

Page 60: 006 กรณีศึกษาการทำ Load Balance Web Server

52

ภาคผนวก ก คําส่ังสคริปตและโคดของโปรแกรม

1. คําสัง่สคริปตในหนาโฮมเพจของเว็บเซิฟเวอรโหลดบาลานซ 1.1 Code ในสวน Connection database

Public Class clsManageSQL

Private conn As SqlConnectionPrivate comm As SqlCommandPrivate tr As SqlTransaction

Private strcon As String = "Data Source=" &ConfigurationManager.AppSettings("HOST") & ";User ID=" &ConfigurationManager.AppSettings("Username") & ";PWD=" &ConfigurationManager.AppSettings("Password") & ";initial catalog=" &ConfigurationManager.AppSettings("DatabaseName") & ";Max PoolSize=2000;Connect Timeout=600"

Public Function Open() As Boolean

Tryconn = New SqlConnectioncomm = New SqlCommandWith conn

If .State = ConnectionState.Open Then .Close().ConnectionString = strcon.Open()Return True

End WithCatch ex As Exception

Throw New Exception("{clsManageSQL.open}" & ex.Message & "" & Now)

Return FalseEnd Try

End Function

Public Sub Dispose()

conn.Close()conn.Dispose()comm.Dispose()

End Sub

Public Function ExecuteDataHaving(ByVal sql As String) As BooleanTry

Dim rd As SqlDataReadercomm.CommandType = CommandType.Textcomm.CommandText = sqlcomm.Connection = connrd = comm.ExecuteReader()

If rd.Read Then

Page 61: 006 กรณีศึกษาการทำ Load Balance Web Server

53

rd.Close()Return True

Elserd.Close()Return False

End If

Catch ex As ExceptionThrow New Exception("ExecuteDataHaving" & ex.Message)

FinallyEnd Try

End Function

Public Sub ExecuteNonQuery(ByVal sql As String)

Trycomm.Connection = conntr = conn.BeginTransactioncomm.Transaction = trcomm.CommandType = CommandType.Textcomm.CommandText = sqlcomm.ExecuteNonQuery()tr.Commit()

Catch ex As Exception' Throw New Exception("clsManageSql Error:

{ExecuteNonQuery}-" & ex.Message)tr.Rollback()

End Try

End Sub

Public Function ExecuteDataTable(ByVal sql As String) As DataTable

Dim da As SqlDataAdapterDim ds As New DataSetconn = New SqlConnectioncomm = New SqlCommandWith conn

If .State = ConnectionState.Open Then .Close().ConnectionString = strcon.Open()

End Withda = New SqlDataAdapter(sql, strcon)da.Fill(ds, "table")Return ds.Tables(0).Copy()

End Function

Public Function getMaxID(ByVal tableName As String, ByVal fdIdxNameAs String) As Integer

TryDim sql As StringOpen()

Dim rd As SqlDataReader

Page 62: 006 กรณีศึกษาการทำ Load Balance Web Server

54

sql = "select max(" & fdIdxName & ")as maxID from " &tableName

comm.CommandType = CommandType.Textcomm.CommandText = sqlcomm.Connection = connrd = comm.ExecuteReader()

If rd.Read ThenReturn CInt(rd("maxID")) + 1

ElseReturn 1

End If

Catch ex As ExceptionReturn 1

FinallyDispose()

End Try

End Function

End Class

1.2 Code ในสวนของหนาเว็บเพจใชในการ Redirect

Imports System.Data

Partial Class _DefaultInherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e AsSystem.EventArgs) Handles Me.Load

Redirect()

End Sub

Private Sub Redirect()

Dim conn As New clsManageSQLDim sql As StringDim dt As datatablesql = "SELECT TOP (1) ip "sql += "FROM tb_ip "sql += "WHERE count_total ="sql += " (SELECT MIN(count_total) AS tot"sql += " FROM tb_ip AS tb_ip_1)"conn.Open()dt = conn.ExecuteDataTable(sql)Dim ip As String = dt.Rows(0)("ip")

Response.Redirect("http://" & ip & "/index.aspx")conn.Dispose()

End Sub

Page 63: 006 กรณีศึกษาการทำ Load Balance Web Server

55

End Class

2. Code บางสวนในโปรแกรม ScanStreaming Public Class Form1

Dim timing As Integer = 0

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load

Me.tbIP_SERVER.Text = My.Settings.IP_SERVER

Me.tbDB_HOST.Text = My.Settings.DBHostMe.tb_DB_NAME.Text = My.Settings.DBNameMe.TB_USER.Text = My.Settings.DBUsernameMe.TB_PASS.Text = My.Settings.DBPasswordMe.tbTimer.Text = My.Settings.TIMER

End Sub

Private Function scan() As ArrayListTry

Dim output As StringDim line As StringDim proc As New Process()proc.StartInfo.CreateNoWindow = Trueproc.StartInfo.FileName = "netstat"proc.StartInfo.Arguments = "-n"proc.StartInfo.RedirectStandardOutput = Trueproc.StartInfo.UseShellExecute = False

proc.Start()output = proc.StandardOutput.ReadToEnd()

proc.WaitForExit()Dim arr As New ArrayListDim sr As New StringReader(output.ToString())' line = Nothing

Dim lineRead As StringDim str As String = ""

Do While (True)Dim strTmp As String

lineRead = sr.ReadLine

Page 64: 006 กรณีศึกษาการทำ Load Balance Web Server

56

Dim tmp As StringDim pos As Integerpos = InStr(lineRead, My.Settings.IP_SERVER & ":80")

If pos > 0 Then

tmp = Mid(lineRead, 32, 25)

Dim arrTmp1() As String

arrTmp1 = tmp.Split(":")

str = arrTmp1(0).Trim

If arr.Count > 0 ThenFor i As Integer = 0 To arr.Count - 1

If arr(i) = str.Trim ThenExit For

ElseIf i = arr.Count - 1 And arr(i) <>

str.Trim Thenarr.Add(str.Trim)

End IfEnd If

NextElse

arr.Add(str.Trim)End If

End If

If (lineRead Is Nothing) ThenReturn arrExit Do

End IfLoop

' MsgBox(str)'

Catch ex As ExceptionMsgBox(ex.Message)

End TryEnd Function

Private Sub Process()

Try

Dim arr As New ArrayList

Page 65: 006 กรณีศึกษาการทำ Load Balance Web Server

57

arr = scan()

If arr.Count > 0 ThenupdateDB(arr.Count)

ElseupdateDB(0)

End IfCatch ex As Exception

' MsgBox(ex.Message)End Try

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button1.Click

Me.Timer1.Enabled = True

End Sub

Private Sub updateDB(ByVal count As Integer)

TryDim conn As New clsManageSQLDim sql As String = "update tb_ip set count_total = " &

countsql += " where ip = '" & My.Settings.IP_SERVER & "'"conn.Open()conn.ExecuteNonQuery(sql)conn.Dispose()

Catch ex As ExceptionMsgBox(ex.Message)

End Try

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button2.Click

TryMy.Settings.IP_SERVER = Me.tbIP_SERVER.Text.Trim

My.Settings.DBHost = Me.tbDB_HOST.TextMy.Settings.DBName = Me.tb_DB_NAME.TextMy.Settings.DBUsername = Me.TB_USER.TextMy.Settings.DBPassword = Me.TB_PASS.TextMy.Settings.TIMER = Me.tbTimer.Text

My.Settings.Save()

Me.tbIP_SERVER.ReadOnly = True

Page 66: 006 กรณีศึกษาการทำ Load Balance Web Server

58

Me.tbDB_HOST.ReadOnly = TrueMe.tb_DB_NAME.ReadOnly = TrueMe.TB_USER.ReadOnly = TrueMe.TB_PASS.ReadOnly = TrueMe.tbTimer.ReadOnly = True

Catch ex As ExceptionMsgBox(ex.Message)

End Try

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Button3.Click

Try

Me.tbIP_SERVER.ReadOnly = False

Me.tbIP_SERVER.ReadOnly = FalseMe.tbDB_HOST.ReadOnly = FalseMe.tb_DB_NAME.ReadOnly = FalseMe.TB_USER.ReadOnly = FalseMe.TB_PASS.ReadOnly = FalseMe.tbTimer.ReadOnly = False

Catch ex As Exception

End Try

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Timer1.Tick

Try

If timing = My.Settings.TIMER ThenMe.lbStatus.Text = "Done."timing = 0Process()

ElseMe.lbStatus.Text = "Process"

timing += 1End If

Catch ex As ExceptionMsgBox(ex.Message)

End Try

Page 67: 006 กรณีศึกษาการทำ Load Balance Web Server

59

End SubEnd Class