พอเว็บเริ่มมีคนเข้ามากขึ้น คำที่โผล่มาในบทความและในวงสนทนาแทบทุกครั้งคือ load balancer หลายคนเข้าใจคร่าว ๆ ว่ามันช่วยให้เว็บรับคนได้เยอะขึ้น แต่ไม่ค่อยมีใครอธิบายว่ามันทำงานยังไง และที่สำคัญกว่าคือเมื่อไหร่ที่ยังไม่ต้องใช้
บทความนี้อธิบายตั้งแต่ load balancer คืออะไร ทำงานยังไง วิธีกระจายภาระแต่ละแบบต่างกันตรงไหน ช่วยอะไรได้จริงบ้าง สิ่งที่ต้องคิดเพิ่มเมื่อระบบมีหลายเครื่อง และความต่างระหว่าง Load Balancing กับ High Availability ที่คนมักสับสนกัน
Load Balancer คืออะไร
Load Balancer คือตัวกลางที่ยืนอยู่หน้าสุดของระบบ คอยรับคำขอจากผู้ใช้ทุกคนแล้วส่งต่อไปยังเซิร์ฟเวอร์หลายเครื่องที่อยู่ข้างหลัง โดยพยายามกระจายภาระให้แต่ละเครื่องรับงานพอ ๆ กัน แทนที่จะให้ทุกคนกระจุกอยู่ที่เครื่องเดียว คำว่า load balancing ในภาษาไทยจึงมักเรียกกันว่าการทำโหลดบาลานซ์หรือการกระจายภาระ
เปรียบเทียบให้เห็นภาพ ลองนึกถึงเคาน์เตอร์เช็กอินที่สนามบิน ถ้าเปิดเคาน์เตอร์เดียวคนก็ต่อแถวยาวเหยียด แต่ถ้าเปิดสิบเคาน์เตอร์แล้วมีพนักงานยืนที่ปากทางคอยชี้ว่าใครควรไปช่องไหน แถวจะเดินเร็วขึ้นมาก load balancer ทำหน้าที่เหมือนพนักงานคนนั้น ส่วนเซิร์ฟเวอร์แต่ละเครื่องคือเคาน์เตอร์แต่ละช่อง
จากมุมของผู้ใช้ ทั้งหมดนี้มองไม่เห็นเลย พวกเขาพิมพ์ชื่อเว็บเดิม เห็นหน้าเว็บเดิม และไม่มีทางรู้ว่าคำขอของตัวเองถูกส่งไปเครื่องไหน สิ่งที่ผู้ใช้รู้สึกได้มีอย่างเดียวคือเว็บตอบสนองเร็วขึ้นในช่วงที่คนเยอะ เพราะไม่ได้ไปแย่งทรัพยากรกันอยู่ที่เครื่องเดียว
สิ่งสำคัญที่ต้องเข้าใจตั้งแต่ต้นคือ load balancer ไม่ได้ทำให้เว็บเร็วขึ้นด้วยตัวมันเอง มันไม่ได้เพิ่มพลังให้เครื่องที่มีอยู่ สิ่งที่มันทำคือทำให้คุณใช้เครื่องหลายเครื่องพร้อมกันได้ พลังที่เพิ่มขึ้นมาจากเครื่องที่คุณเพิ่มเข้าไปต่างหาก ไม่ได้มาจากตัวมัน
Load Balancer ทำงานยังไง
ขั้นตอนจริงเริ่มจากการชี้ชื่อโดเมนของเว็บไปที่ load balancer แทนที่จะชี้ไปที่เซิร์ฟเวอร์โดยตรง แปลว่าเมื่อผู้ใช้เปิดเว็บ คำขอทั้งหมดจะวิ่งมาถึงตัวมันก่อนเสมอ ส่วนเซิร์ฟเวอร์ที่ทำงานจริงจะอยู่ข้างหลังและไม่ได้รับทราฟฟิกจากอินเทอร์เน็ตโดยตรง
เมื่อคำขอเข้ามา load balancer จะเลือกว่าจะส่งไปเครื่องไหนตามกฎที่ตั้งไว้ แล้วส่งต่อคำขอนั้นไป พอเซิร์ฟเวอร์ตอบกลับมา มันก็ส่งคำตอบนั้นกลับไปหาผู้ใช้อีกที ทั้งหมดเกิดขึ้นภายในเสี้ยววินาทีและซ้ำแบบนี้กับทุกคำขอที่เข้ามา
สิ่งที่ทำให้ load balancer มีประโยชน์จริง ๆ ไม่ใช่แค่การแจกงาน แต่คือการตรวจสุขภาพเครื่องปลายทางอยู่ตลอด มันจะยิงคำขอเล็ก ๆ ไปถามเครื่องแต่ละตัวเป็นระยะว่ายังตอบได้ปกติไหม ถ้าเครื่องไหนไม่ตอบหรือตอบผิดพลาดติดกันหลายครั้ง มันจะเลิกส่งงานไปที่เครื่องนั้นชั่วคราว แล้วกระจายงานให้เครื่องที่เหลือแทน
พอเครื่องที่มีปัญหากลับมาตอบได้ปกติแล้ว มันจะค่อย ๆ ส่งงานกลับไปให้ใหม่โดยอัตโนมัติ กลไกนี้แหละที่ทำให้เว็บยังเปิดได้อยู่แม้เครื่องหนึ่งจะมีปัญหา ซึ่งเป็นประโยชน์ที่หลายคนให้ค่ามากกว่าเรื่องรับคนได้เยอะขึ้นเสียอีก
วิธีกระจายภาระแบบต่าง ๆ
กฎที่ใช้ตัดสินว่าคำขอไหนควรไปเครื่องไหนเรียกว่าอัลกอริทึมการกระจายภาระ ฟังดูซับซ้อนแต่จริง ๆ แล้วแบบที่ใช้จริงในชีวิตประจำวันมีอยู่ไม่กี่แบบ และแต่ละแบบเหมาะกับลักษณะงานที่ต่างกัน ตารางนี้สรุปสามแบบที่เจอบ่อยที่สุด
| วิธีกระจาย | ทำงานยังไง | เหมาะกับ |
|---|---|---|
| Round Robin | วนส่งไปทีละเครื่องตามลำดับ เครื่องที่หนึ่ง สอง สาม แล้ววนกลับมาที่หนึ่งใหม่ | งานที่แต่ละคำขอใช้เวลาพอ ๆ กัน และเครื่องทุกตัวสเปกเท่ากัน เป็นค่าเริ่มต้นที่ใช้กันมากที่สุด |
| Least Connections | ดูว่าตอนนี้เครื่องไหนกำลังคุยกับผู้ใช้อยู่น้อยที่สุด แล้วส่งคำขอใหม่ไปที่เครื่องนั้น | งานที่แต่ละคำขอใช้เวลาไม่เท่ากัน เช่นบางคำขอประมวลผลนาน จะช่วยไม่ให้เครื่องหนึ่งงานล้น |
| IP Hash | คำนวณจากหมายเลข IP ของผู้ใช้ ทำให้ผู้ใช้คนเดิมถูกส่งไปเครื่องเดิมเสมอ | ระบบที่ยังเก็บสถานะการเข้าสู่ระบบไว้บนเครื่อง จึงต้องให้ผู้ใช้กลับไปเครื่องเดิมทุกครั้ง |
| Weighted (ถ่วงน้ำหนัก) | กำหนดน้ำหนักให้แต่ละเครื่อง เครื่องที่แรงกว่าจะได้รับงานสัดส่วนมากกว่า | ระบบที่มีเครื่องสเปกไม่เท่ากัน หรือช่วงที่กำลังทยอยเพิ่มเครื่องใหม่เข้าระบบ |
Load Balancer ช่วยอะไรได้บ้าง
ประโยชน์หลักมีอยู่สองข้อ ข้อแรกคือรองรับคนได้มากขึ้น เมื่อเครื่องเดียวเริ่มรับไม่ไหวแม้จะปรับจูนเต็มที่แล้ว ทางออกคือเพิ่มเครื่องอีกตัวแล้วให้ load balancer แบ่งงานให้ทั้งคู่ ข้อดีของการขยายแนวนี้คือเพิ่มไปได้เรื่อย ๆ ต่างจากการอัปสเปกเครื่องเดียวที่สุดท้ายจะชนเพดานและราคาแพงขึ้นแบบไม่คุ้ม
ข้อสองคือเวลาเครื่องหนึ่งมีปัญหา ยังมีอีกเครื่องรับงานต่อได้ เพราะ load balancer ตรวจสุขภาพอยู่ตลอดและจะหยุดส่งงานไปเครื่องที่ไม่ตอบเอง ผู้ใช้ส่วนใหญ่จึงยังใช้งานต่อได้แม้เครื่องหนึ่งจะหลุดไป ซึ่งต่างจากระบบเครื่องเดียวที่พอเครื่องมีปัญหาก็คือจบทันที
ประโยชน์ที่ตามมาอีกอย่างซึ่งคนไม่ค่อยพูดถึงคือการอัปเดตโดยเว็บไม่ต้องปิด เพราะคุณสามารถถอนเครื่องหนึ่งออกจากการรับงานชั่วคราว อัปเดตให้เรียบร้อย ทดสอบว่าใช้ได้ แล้วค่อยใส่กลับเข้าไป จากนั้นทำแบบเดียวกันกับอีกเครื่อง ระหว่างนั้นผู้ใช้ยังใช้งานผ่านเครื่องที่เหลือได้ตามปกติ
- รับผู้ใช้พร้อมกันได้มากขึ้น โดยเพิ่มเครื่องแทนการอัปสเปกเครื่องเดียวจนชนเพดาน
- เครื่องหนึ่งมีปัญหาแล้วอีกเครื่องยังรับงานต่อได้ ผู้ใช้ส่วนใหญ่จึงไม่สะดุด
- อัปเดตระบบทีละเครื่องได้โดยไม่ต้องประกาศปิดเว็บ
- ปรับขนาดตามช่วงเวลาได้ เช่นเพิ่มเครื่องช่วงแคมเปญแล้วถอดออกเมื่อจบ
- แยกงานหนักออกจากงานเบาได้ เช่นให้บางเครื่องรับเฉพาะงานที่ประมวลผลนาน
- เป็นจุดเดียวสำหรับจัดการใบรับรอง HTTPS แทนที่จะต้องตั้งซ้ำทุกเครื่องข้างหลัง
เมื่อไหร่ที่ยังไม่จำเป็นต้องใช้
พูดกันตรง ๆ เว็บส่วนใหญ่ยังไม่จำเป็นต้องมี load balancer และหลายเว็บที่ติดตั้งไปแล้วก็ไม่ได้ประโยชน์จากมันจริง สิ่งที่ควรทำก่อนเสมอคือปรับจูนเครื่องเดียวที่มีอยู่ให้ดีที่สุดก่อน เพราะเว็บช้าส่วนใหญ่ไม่ได้ช้าเพราะเครื่องไม่พอ แต่ช้าเพราะยังไม่ได้ปรับอะไรเลย
ของที่ให้ผลมากกว่าการเพิ่มเครื่องมีอยู่หลายอย่าง เช่นเปิดแคชหน้าเว็บเพื่อไม่ให้ประมวลผลซ้ำทุกครั้ง ปรับคำสั่งฐานข้อมูลที่ช้าและใส่ดัชนีให้ถูกจุด บีบอัดและปรับขนาดรูปภาพ และวางไฟล์นิ่ง ๆ ไว้บนบริการกระจายเนื้อหา ของพวกนี้มักลดภาระเครื่องได้หลายเท่าโดยไม่เพิ่มค่าใช้จ่ายรายเดือนเลย
ที่ต้องพูดให้ชัดคือการเพิ่มเครื่องมาพร้อมต้นทุนจริงสองอย่าง อย่างแรกคือค่าใช้จ่ายที่เพิ่มขึ้นตามจำนวนเครื่อง อย่างที่สองซึ่งแพงกว่าคือความซับซ้อน เพราะทันทีที่มีมากกว่าหนึ่งเครื่อง คุณต้องจัดการเรื่องข้อมูลที่ต้องตรงกันทุกเครื่อง ต้องดูแลการอัปเดตให้ทั่วถึง และเวลาไล่หาปัญหาก็ต้องไล่หลายเครื่องแทนที่จะดูที่เดียว
สัญญาณที่บอกว่าถึงเวลาจริง ๆ คือคุณปรับจูนหมดแล้วแต่ทรัพยากรของเครื่องยังเต็มอยู่เกือบตลอดในช่วงปกติ ไม่ใช่แค่นาทีเดียวตอนมีแคมเปญ หรือธุรกิจของคุณยอมให้เว็บดับไม่ได้เลยจนต้องมีเครื่องสำรองพร้อมรับงานตลอดเวลา ถ้าเหตุผลยังไม่ใช่สองข้อนี้ การอยู่กับเครื่องเดียวที่ปรับจูนดี ๆ มักคุ้มกว่ามาก
ถ้าอยากเริ่มจากการปรับจูนเครื่องเดียวก่อน สองเรื่องที่ให้ผลชัดที่สุดคือการตั้งค่าเว็บเซิร์ฟเวอร์ให้ถูกต้อง อ่านได้ที่ Nginx คืออะไร และการทำแคชเพื่อลดงานซ้ำ ๆ ที่ Redis คืออะไร ลองไล่ตามรายการด้านล่างให้ครบก่อนตัดสินใจเพิ่มเครื่อง
- เปิดแคชหน้าเว็บและแคชผลลัพธ์ที่ใช้ซ้ำ เพื่อไม่ให้ประมวลผลเรื่องเดิมทุกครั้งที่มีคนเข้า
- หาคำสั่งฐานข้อมูลที่ช้าที่สุดแล้วแก้ให้เร็วขึ้น มักได้ผลมากกว่าการเพิ่มเครื่องหลายเท่า
- บีบอัดรูปภาพและปรับขนาดให้พอดีกับที่แสดงจริง เพราะรูปมักกินแบนด์วิดท์มากที่สุด
- ย้ายไฟล์นิ่ง เช่น รูป ไฟล์สคริปต์ และไฟล์สไตล์ ไปให้บริการกระจายเนื้อหาช่วยส่งแทน
- ดูจากสถิติจริงว่าคอขวดอยู่ที่ CPU แรม ดิสก์ หรือฐานข้อมูล อย่าเดาแล้วซื้อเพิ่มมั่ว ๆ
- ลองอัปสเปกเครื่องเดิมให้แรงขึ้นก่อน เพราะง่ายกว่าและถูกกว่าการดูแลหลายเครื่องมาก
สิ่งที่ต้องคิดเพิ่มเมื่อมีหลายเครื่อง
ทันทีที่คุณมีมากกว่าหนึ่งเครื่อง จะมีปัญหาชุดใหม่โผล่ขึ้นมาที่ระบบเครื่องเดียวไม่เคยเจอ ทั้งหมดมาจากรากเดียวกันคือของบางอย่างเคยอยู่ในเครื่องเดียวได้ แต่พอมีหลายเครื่องแล้วมันต้องถูกยกออกไปอยู่ตรงกลางที่ทุกเครื่องเห็นตรงกัน
เรื่องแรกคือสถานะการเข้าสู่ระบบ ระบบจำนวนมากเก็บข้อมูลว่าใครล็อกอินอยู่ไว้ในเครื่องนั้นเอง พอ load balancer ส่งผู้ใช้คนเดิมไปอีกเครื่องหนึ่ง เครื่องใหม่ไม่รู้จักเขา ผลคือผู้ใช้หลุดออกจากระบบเองแบบไม่มีสาเหตุ ทางแก้คือย้ายที่เก็บสถานะออกไปไว้ตรงกลางที่ทุกเครื่องอ่านได้ หรือไม่ก็ใช้วิธีกระจายแบบที่ส่งผู้ใช้คนเดิมกลับเครื่องเดิมเสมอ
เรื่องที่สองคือไฟล์ที่ผู้ใช้อัปโหลด ถ้าลูกค้าอัปโหลดรูปแล้วไฟล์ไปตกอยู่บนเครื่องที่หนึ่ง พอเขาโหลดหน้าใหม่แล้วถูกส่งไปเครื่องที่สอง รูปนั้นจะหายไปเฉย ๆ เพราะเครื่องที่สองไม่มีไฟล์นั้น ทางแก้คือให้ทุกเครื่องเขียนไฟล์ไปที่เดียวกัน ไม่ว่าจะเป็นพื้นที่จัดเก็บที่แชร์กันหรือบริการเก็บไฟล์ภายนอก
เรื่องที่สามคือฐานข้อมูล ซึ่งควรมีชุดกลางชุดเดียวที่ทุกเครื่องเชื่อมเข้ามา ไม่ใช่ต่างเครื่องต่างมีฐานข้อมูลของตัวเอง เพราะข้อมูลจะแยกกันเดินจนกลายเป็นคนละเว็บทันที และเมื่อฐานข้อมูลกลายเป็นจุดที่ทุกเครื่องพึ่งพา มันก็จะกลายเป็นคอขวดถัดไปที่ต้องดูแลเป็นพิเศษ
- ที่เก็บสถานะการเข้าสู่ระบบ ต้องอยู่ตรงกลางที่ทุกเครื่องอ่านได้ ไม่งั้นผู้ใช้จะหลุดออกจากระบบเอง
- ไฟล์ที่ผู้ใช้อัปโหลด ต้องไปอยู่ที่เดียวกันทุกเครื่อง ไม่ใช่ตกอยู่บนเครื่องที่รับคำขอนั้น
- ฐานข้อมูลกลาง ต้องมีชุดเดียวที่ทุกเครื่องต่อเข้ามา และจะกลายเป็นคอขวดถัดไปที่ต้องเฝ้าดู
- งานตั้งเวลา ต้องกำหนดให้รันแค่เครื่องเดียว ไม่งั้นงานเดิมจะถูกรันซ้ำหลายรอบพร้อมกัน
- ไฟล์บันทึกและสถิติ ควรรวมไว้ที่เดียว ไม่งั้นเวลาไล่หาปัญหาจะต้องเข้าไปดูทีละเครื่อง
- การอัปเดตโค้ดและไฟล์ตั้งค่า ต้องมั่นใจว่าทุกเครื่องได้เวอร์ชันเดียวกัน ไม่งั้นผู้ใช้จะเจอผลไม่เหมือนกัน
- ใบรับรอง HTTPS ต้องตัดสินใจว่าจะจบที่ load balancer หรือให้เครื่องข้างหลังจัดการเอง
High Availability ต่างจาก Load Balancing ยังไง
สองคำนี้มักถูกพูดพร้อมกันจนคนคิดว่าเป็นเรื่องเดียวกัน แต่จริง ๆ แล้วตอบคนละคำถาม Load Balancing ตอบคำถามว่า "จะรับงานปริมาณมากพร้อมกันยังไง" ส่วน High Availability ตอบคำถามว่า "จะทำยังไงให้ระบบยังใช้งานได้ต่อเมื่อบางส่วนพัง" เป้าหมายหนึ่งคือปริมาณ อีกหนึ่งคือความต่อเนื่อง
ในทางปฏิบัติทั้งสองมักมาด้วยกันเพราะใช้โครงสร้างเดียวกันได้ พอคุณมีหลายเครื่องอยู่แล้ว การกระจายงานไปทุกเครื่องก็ให้ทั้งปริมาณและความต่อเนื่องในคราวเดียว แต่ก็มีกรณีที่แยกกันชัดเจน เช่นระบบที่มีเครื่องสำรองนั่งรอเฉย ๆ ไม่รับงานเลย แล้วจะเข้ามาแทนที่เมื่อเครื่องหลักล้ม แบบนี้คือ High Availability ล้วน ๆ ไม่มีการกระจายภาระใด ๆ
สิ่งที่ต้องระวังที่สุดคือการมี load balancer แล้วเข้าใจว่าระบบทนทานต่อความพังโดยอัตโนมัติ ซึ่งไม่จริง เพราะถ้าตัว load balancer เองมีอยู่ตัวเดียว มันก็คือจุดพังจุดเดียวที่ทำให้ทั้งระบบดับได้ และถ้าฐานข้อมูลกลางมีชุดเดียว ต่อให้มีเว็บเซิร์ฟเวอร์สิบเครื่อง พอฐานข้อมูลล้มก็ดับพร้อมกันทั้งสิบเครื่องอยู่ดี
วิธีคิดที่ใช้ได้จริงคือไล่ดูทีละชั้นแล้วถามว่า "ถ้าชิ้นนี้พังตอนนี้ ระบบยังใช้งานได้ไหม" ตั้งแต่ชั้น load balancer ชั้นเว็บเซิร์ฟเวอร์ ชั้นฐานข้อมูล ไปจนถึงชั้นที่เก็บไฟล์ ทุกชั้นที่ตอบว่าไม่ได้ คือจุดที่ระบบยังไม่ทนทานจริง ไม่ว่าจะมีเครื่องหน้าบ้านกี่ตัวก็ตาม
| หัวข้อ | Load Balancing | High Availability |
|---|---|---|
| เป้าหมายหลัก | กระจายงานเพื่อรับผู้ใช้ได้มากขึ้น | ให้ระบบใช้งานต่อได้เมื่อบางส่วนพัง |
| คำถามที่ตอบ | ทำยังไงให้รับงานปริมาณมากไหว | ทำยังไงให้ไม่ดับเมื่อมีชิ้นส่วนล้ม |
| เครื่องสำรอง | ทุกเครื่องรับงานจริงพร้อมกันหมด | อาจมีเครื่องที่รอเฉย ๆ จนกว่าเครื่องหลักจะล้ม |
| สิ่งที่ต้องดูแลเพิ่ม | การกระจายภาระให้สมดุลและข้อมูลที่ต้องตรงกัน | ทุกชั้นต้องไม่มีจุดพังจุดเดียว รวมถึงตัวกระจายงานเอง |
| ความสัมพันธ์ | ได้ความต่อเนื่องมาเป็นผลพลอยได้ ถ้าเครื่องที่เหลือรับไหว | ไม่จำเป็นต้องกระจายภาระก็ทำได้ |
ถ้าจะลองทำเองบน VPS
บนเครื่องเช่าที่มีสิทธิ์ root เต็ม คุณตั้งระบบกระจายภาระเองได้ทั้งหมด รูปแบบที่ง่ายที่สุดคือเช่าเครื่องสามตัว ตัวหนึ่งทำหน้าที่รับทราฟฟิกและกระจายงาน อีกสองตัวรันเว็บจริง แล้วชี้โดเมนมาที่เครื่องแรก ซอฟต์แวร์ที่คนใช้ทำหน้าที่นี้บ่อยที่สุดคือ Nginx และ HAProxy ซึ่งทั้งคู่ตั้งค่าเป็นตัวกระจายภาระได้ในไฟล์ตั้งค่าไม่กี่บรรทัด
ข้อควรรู้คือเครื่องที่ทำหน้าที่กระจายงานไม่ต้องแรงเท่าเครื่องที่รันเว็บจริง เพราะงานหลักของมันคือรับและส่งต่อ ไม่ได้ประมวลผลเนื้อหาเอง สิ่งที่มันต้องการมากกว่าคือความเสถียรของเครือข่ายและการที่ตัวเองไม่ล่ม เพราะถ้ามันล่มก็คือจบทั้งระบบ
ก่อนจะไปถึงจุดนั้น ควรอ่าน Nginx คืออะไร ให้เข้าใจก่อน เพราะเป็นตัวเดียวกันกับที่ใช้ทำหน้าที่นี้ และควรวางแผน การสำรองข้อมูล ไว้ตั้งแต่ต้น เพราะการมีหลายเครื่องทำให้เรื่องนี้ซับซ้อนขึ้นกว่าเดิม ตารางด้านล่างคือแพ็กเกจ VPS ของ Plusweb ทุกตัวมี 1 Public IPv4 ในตัว ตัวเลขในวงเล็บคือราคาต่อเดือนเมื่อชำระรายปี
| แพ็กเกจ | CPU | RAM | SSD | ราคา/เดือน (รายปี) |
|---|---|---|---|---|
| VPS-00 | 1 vCore | 1 GB | 15 GB | 150฿ (120฿) |
| VPS-01 | 1 vCore | 3 GB | 30 GB | 250฿ (200฿) |
| VPS-02 | 2 vCores | 4 GB | 60 GB | 350฿ (280฿) |
| VPS-03 | 4 vCores | 8 GB | 100 GB | 600฿ (480฿) |
สรุป
Load Balancer คือตัวกลางที่รับผู้ใช้ทั้งหมดแล้วกระจายไปยังเซิร์ฟเวอร์หลายเครื่องข้างหลัง พร้อมคอยตรวจว่าเครื่องไหนยังตอบได้ปกติ ประโยชน์หลักคือรับคนได้มากขึ้นและยังเปิดเว็บได้เมื่อเครื่องหนึ่งมีปัญหา แต่มันไม่ได้เพิ่มพลังให้เครื่องที่มีอยู่ พลังที่ได้มาจากเครื่องที่คุณเพิ่มเข้าไปทั้งหมด
สิ่งที่อยากให้จำมากที่สุดคือลำดับก่อนหลัง ให้ปรับจูนเครื่องเดียวให้สุดก่อนเสมอ ทั้งแคช คำสั่งฐานข้อมูล และรูปภาพ เพราะสิ่งเหล่านี้มักลดภาระได้มากกว่าและถูกกว่า เมื่อทำครบแล้วยังไม่พอจริง ๆ ค่อยขยับไปหลายเครื่อง โดยรู้ตัวว่ากำลังแลกความเรียบง่ายกับความสามารถในการขยาย
ถ้ายังไม่เคยเช่าเซิร์ฟเวอร์ของตัวเองมาก่อน แนะนำเริ่มจาก VPS คืออะไร เพื่อเข้าใจภาพรวมก่อน แล้วค่อยไปดูวิธีปรับจูนที่ Nginx คืออะไร และ Redis คืออะไร ซึ่งเป็นสองเรื่องที่ให้ผลชัดที่สุดโดยยังใช้เครื่องเดียว
และไม่ว่าจะมีกี่เครื่อง เรื่องที่ห้ามข้ามคือการสำรองข้อมูล เพราะการกระจายภาระช่วยเรื่องเครื่องล่ม แต่ไม่ได้ช่วยเลยเมื่อข้อมูลถูกลบหรือเขียนทับ อ่านต่อได้ที่ คู่มือสำรองข้อมูลบน VPS
อยากลองวางระบบหลายเครื่องด้วยตัวเอง?
VPS ของ Plusweb ให้สิทธิ์ root เต็มและ Public IPv4 ในตัวทุกแพ็กเกจ ตั้งเครื่องกระจายภาระและเครื่องเว็บเองได้ เริ่มต้น 120฿/เดือน (รายปี)
คำถามที่พบบ่อย
Load Balancer คืออะไรแบบสั้นที่สุด?
Load Balancer คือตัวกลางที่อยู่หน้าสุดของระบบ คอยรับคำขอจากผู้ใช้ทุกคนแล้วกระจายต่อไปยังเซิร์ฟเวอร์หลายเครื่องที่อยู่ข้างหลัง เพื่อไม่ให้ภาระไปกระจุกอยู่ที่เครื่องเดียว พร้อมคอยตรวจสุขภาพเครื่องปลายทางและหยุดส่งงานไปยังเครื่องที่ไม่ตอบสนอง
Load Balancer ทำให้เว็บเร็วขึ้นไหม?
ไม่ได้ทำให้เร็วขึ้นด้วยตัวมันเอง มันไม่ได้เพิ่มพลังให้เครื่องที่มีอยู่ สิ่งที่มันทำคือทำให้ใช้เครื่องหลายเครื่องพร้อมกันได้ ผู้ใช้จึงรู้สึกว่าเร็วขึ้นเฉพาะช่วงที่คนเยอะจนเครื่องเดียวรับไม่ไหว แต่ถ้าเว็บช้าเพราะคำสั่งฐานข้อมูลช้าหรือรูปใหญ่เกินไป การเพิ่มเครื่องจะไม่ช่วยอะไรเลย
Round Robin กับ Least Connections ต่างกันยังไง?
Round Robin จะวนส่งคำขอไปทีละเครื่องตามลำดับโดยไม่สนใจว่าเครื่องไหนกำลังยุ่งอยู่ เหมาะกับงานที่แต่ละคำขอใช้เวลาพอ ๆ กัน ส่วน Least Connections จะดูก่อนว่าเครื่องไหนกำลังคุยกับผู้ใช้อยู่น้อยที่สุดแล้วส่งไปเครื่องนั้น เหมาะกับงานที่บางคำขอใช้เวลานานกว่าคำขออื่นมาก
เว็บของผมจำเป็นต้องใช้ Load Balancer ไหม?
เว็บส่วนใหญ่ยังไม่จำเป็น ให้ปรับจูนเครื่องเดียวให้สุดก่อน ทั้งการเปิดแคช แก้คำสั่งฐานข้อมูลที่ช้า และบีบอัดรูปภาพ ซึ่งมักลดภาระได้หลายเท่าโดยไม่มีค่าใช้จ่ายเพิ่ม จะเริ่มคิดถึงหลายเครื่องก็ต่อเมื่อปรับหมดแล้วทรัพยากรยังเต็มเกือบตลอดเวลา หรือธุรกิจยอมให้เว็บดับไม่ได้เลย
มี Load Balancer แล้วเว็บจะไม่ดับใช่ไหม?
ไม่ใช่ ถ้าตัว load balancer มีอยู่ตัวเดียว มันก็เป็นจุดพังจุดเดียวที่ทำให้ทั้งระบบดับได้ และถ้าฐานข้อมูลกลางมีชุดเดียว ต่อให้มีเว็บเซิร์ฟเวอร์หลายเครื่องก็ดับพร้อมกันหมดเมื่อฐานข้อมูลล้ม ความทนทานของระบบวัดกันที่ชั้นที่อ่อนแอที่สุด จึงต้องไล่ดูทุกชั้นว่ามีจุดพังจุดเดียวเหลืออยู่ตรงไหนบ้าง
ทำไมผู้ใช้ถึงหลุดออกจากระบบเองหลังมีหลายเครื่อง?
เพราะระบบเก็บสถานะการเข้าสู่ระบบไว้ในเครื่องที่รับคำขอครั้งแรก พอ load balancer ส่งผู้ใช้คนเดิมไปอีกเครื่อง เครื่องใหม่ไม่รู้จักเขาจึงให้ล็อกอินใหม่ ทางแก้คือย้ายที่เก็บสถานะออกไปไว้ตรงกลางที่ทุกเครื่องอ่านได้ หรือใช้วิธีกระจายแบบ IP Hash ที่ส่งผู้ใช้คนเดิมกลับไปเครื่องเดิมเสมอ
GUIDES
บทความที่เกี่ยวข้อง
อ่านต่อในหัวข้อใกล้เคียง
Nginx คืออะไร? เข้าใจเว็บเซิร์ฟเวอร์และ Reverse Proxy ในบทความเดียว
Nginx คือซอฟต์แวร์ที่ทำหน้าที่รับคำขอจากผู้ใช้แล้วตอบกลับ ทั้งในบทบาทเว็บเซิร์ฟเวอร์และ reverse proxy อ่านให้เข้าใจว่ามันทำอะไรได้บ้าง ต่างจาก Apache ยังไง และใช้บน VPS จริงยังไง
อ่านต่อVPS คืออะไร? ใช้ทำอะไรได้บ้าง ฉบับเข้าใจง่าย
สรุปครบเรื่อง VPS — VPS server คืออะไร ทำงานยังไง Cloud VPS ต่างจาก VPS ทั่วไปตรงไหน ใช้ทำอะไรได้บ้าง เทียบกับ Shared Hosting และ Dedicated ใครควรใช้ และเริ่มต้นยังไงในปี 2026
อ่านต่อBackup คืออะไร? คู่มือสำรองข้อมูลบน VPS ที่กู้คืนได้จริง
Backup คือสำเนาข้อมูลที่แยกออกไปอยู่คนละที่กับต้นฉบับ เพื่อให้ยังกู้กลับมาได้เมื่อของเดิมเสียหาย อ่านให้เข้าใจว่าทำไม RAID ไม่ใช่ backup หลัก 3-2-1 คืออะไร และข้อที่คนพลาดมากที่สุด
อ่านต่อ