Linux High Availability Pacemaker AI

Linux High Availability Pacemaker

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Linux High Availability Pacemaker โดย อ.บอม SiamCafe.net

Linux High Availability Pacemaker คืออะไร / ทำไมถึงสำคัญ

น้องๆ เคยเจอไหม เว็บไซต์ล่มตอนตีสอง ทั้งๆ ที่เรานอนหลับสบายอยู่? สมัยผมทำร้านเน็ต SiamCafe (ตั้งแต่ปี 2540 นะ) เจอบ่อย! ลูกค้าโวยวาย เกมเล่นไม่ได้... นั่นแหละครับ คือเหตุผลที่เราต้องมี High Availability (HA) หรือระบบที่มัน "พร้อมใช้งานเสมอ"

Pacemaker คือพระเอกของเราในโลก Linux ครับ มันเป็น Cluster Resource Manager (CRM) ที่คอยดูแลว่า service ต่างๆ ของเรา (เช่น web server, database) ยังทำงานอยู่ดีไหม ถ้าตัวนึงตายไป มันจะรีบยก service นั้นไปรันบนอีกเครื่องทันที แทบจะไม่รู้สึกเลยว่ามีอะไรเกิดขึ้น

คิดง่ายๆ เหมือนมี "พี่เลี้ยง" คอยเฝ้า service ของเราตลอด 24 ชั่วโมง ถ้า service งอแง พี่เลี้ยงก็จะรีบแก้ปัญหาให้ทันที โดยที่เราไม่ต้องตื่นมาทำเอง

พื้นฐานที่ต้องรู้

Clustering คืออะไร

Clustering คือการเอาระบบหลายๆ เครื่องมารวมกัน ทำงานร่วมกัน เหมือนเป็นเครื่องเดียวใหญ่ๆ ถ้าเครื่องนึงเสีย อีกเครื่องก็ยังทำงานต่อได้ ไม่มี downtime (ช่วงเวลาที่ระบบหยุดทำงาน) นั่นเอง

สมัยก่อน ตอนเริ่มทำร้านเน็ตใหม่ๆ ผมยังไม่รู้จัก Clustering หรอกครับ พอ server ตัวเดียวพังที ลูกค้าหายหมด! เจ็บปวดมาก... แต่พอเริ่มใช้ Clustering ชีวิตดีขึ้นเยอะเลยครับ

Resource คืออะไร

Resource คือสิ่งที่เราต้องการให้มัน HA ครับ อาจจะเป็น web server (เช่น Apache, Nginx), database (เช่น MySQL, PostgreSQL), หรือแม้แต่ IP address ที่เราใช้

Pacemaker จะคอย monitor resource เหล่านี้ ถ้า resource ตัวไหนมีปัญหา มันก็จะจัดการให้ resource ตัวนั้นกลับมาทำงานโดยเร็วที่สุด

Fencing/STONITH คืออะไร

อันนี้สำคัญมาก! STONITH ย่อมาจาก "Shoot The Other Node In The Head" ฟังดูโหดร้ายใช่ไหมครับ? แต่จริงๆ แล้วมันคือกลไกที่ใช้จัดการกับเครื่องที่ "งอแง" หรือ "ค้าง" จนไม่สามารถบอกได้ว่าตัวเองยังทำงานอยู่หรือเปล่า

ถ้า Pacemaker ตรวจพบว่าเครื่องไหนมีปัญหา มันจะพยายาม "ปิด" เครื่องนั้นทิ้ง (เช่น ปิดไฟ, รีเซ็ต) เพื่อป้องกันไม่ให้เครื่องนั้นสร้างปัญหาให้กับระบบโดยรวม

สมัยก่อนผมเคยเจอเคสที่ server ค้างแล้วทำข้อมูลเสีย พอรู้เรื่อง STONITH นี่ เหมือนเจอทางสว่างเลยครับ

วิธีใช้งาน / เริ่มต้นยังไง

Pacemaker ค่อนข้างซับซ้อนครับ แต่ไม่ต้องกลัว! ผมจะพยายามอธิบายให้เข้าใจง่ายที่สุด

ขั้นตอนปฏิบัติจริง

ติดตั้ง Pacemaker และ Corosync

Corosync คือ communication layer ที่ Pacemaker ใช้สื่อสารกับเครื่องอื่นๆ ใน cluster ครับ เราต้องติดตั้งทั้งสองอย่างบนทุกเครื่องใน cluster

บน CentOS/RHEL:


sudo yum install pacemaker pcs
sudo systemctl start pcsd
sudo systemctl enable pcsd

บน Ubuntu/Debian:


sudo apt-get install pacemaker corosync pcs
sudo systemctl start pcsd
sudo systemctl enable pcsd

Configuring Authentication

Pcsd ต้องมีการ authentication เพื่อความปลอดภัย


sudo pcs cluster auth ชื่อเครื่อง1 ชื่อเครื่อง2 ชื่อเครื่อง3...

สร้าง Cluster

หลังจากติดตั้งแล้ว เราก็สร้าง cluster ได้เลย


sudo pcs cluster setup --name ชื่อCluster ชื่อเครื่อง1 ชื่อเครื่อง2 ชื่อเครื่อง3...
sudo pcs cluster enable --all
sudo pcs cluster start --all

Configuring Resources

ตัวอย่างการสร้าง IP Address resource:


sudo pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s

ตัวอย่างการสร้าง Apache Web Server resource:


sudo pcs resource create WebServer ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s

เปรียบเทียบกับทางเลือกอื่น

Pacemaker ไม่ใช่ทางเลือกเดียวในการทำ HA ครับ ยังมีตัวเลือกอื่นๆ อีก เช่น Keepalived, HAProxy แต่ละตัวก็มีข้อดีข้อเสียต่างกัน

Solution ข้อดี ข้อเสีย เหมาะกับ
Pacemaker ยืดหยุ่นสูง, รองรับ resource หลากหลาย, เหมาะกับ environment ที่ซับซ้อน config ค่อนข้างยาก, learning curve สูง database cluster, application server cluster
Keepalived config ง่าย, เน้นทำ load balancing และ failover สำหรับ web server จำกัด resource, ไม่เหมาะกับ environment ที่ซับซ้อน load balancing, web server failover
HAProxy ประสิทธิภาพสูง, รองรับ load balancing หลากหลายรูปแบบ ไม่เน้น HA โดยตรง, ต้อง config เพิ่มเติม load balancing, proxy server

เลือกใช้ตัวไหน ขึ้นอยู่กับความต้องการและความถนัดของแต่ละคนครับ ลองศึกษาดู SiamCafe Blog อาจจะมีบทความที่ช่วยในการตัดสินใจได้นะครับ

สมัยผมเริ่มทำร้านเน็ตใหม่ๆ ก็ลองผิดลองถูกไปเรื่อยครับ อย่ากลัวที่จะลอง! แล้วจะเก่งเอง

สนใจเรื่อง Linux เพิ่มเติม ลองดู SiamCafe Blog นะครับ

Best Practices / เคล็ดลับจากประสบการณ์

สมัยผมทำร้านเน็ต SiamCafe เนี่ย เรื่องระบบล่มนี่เป็นอะไรที่ปวดหัวสุดๆ ยิ่งช่วงเกมออนไลน์บูมๆ นี่ไม่ต้องพูดถึง ลูกค้าหายหมด! Pacemaker เนี่ยช่วยได้เยอะ แต่ต้องเซ็ตให้ดีนะ ไม่ใช่ว่าลงๆ ไปแล้วจะเวิร์คเลย ต้องมีเทคนิคกันหน่อย

3-4 เทคนิคที่ใช้ได้จริง

1. Test Failover บ่อยๆ: อย่ารอให้ระบบล่มจริงแล้วค่อยมาแก้! สมัยก่อนผมจะตั้งเวลาให้มัน Failover เองเลย อาทิตย์ละครั้ง หรือเดือนละครั้ง แล้วดูว่ามันสลับไปเครื่องสำรองได้ราบรื่นไหม ถ้าไม่ ก็ต้องมานั่งไล่ดู Log แก้กันไป

# ตัวอย่างคำสั่ง Pacemaker สำหรับ Test Failover
crm resource migrate web_server server2  # ย้าย web_server ไปที่ server2
sleep 60  # รอ 1 นาที
crm resource unmigrate web_server  # ย้ายกลับมาที่เดิม

2. Monitor ให้ละเอียด: แค่ Ping อย่างเดียวไม่พอ! ต้องดู Service ที่สำคัญๆ ด้วย เช่น Web Server, Database เคยเจอเคส Database ค้าง แต่ Ping ยังได้ ทำให้ Pacemaker ไม่รู้ว่ามีปัญหา ต้องใช้ Script เช็คละเอียดกว่านั้น

# ตัวอย่าง Script เช็ค HTTP Status Code
#!/bin/bash
STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://localhost)
if [ "$STATUS" -ne "200" ]; then
  echo "HTTP Status Code: $STATUS"
  exit 1  # Return error code
else
  exit 0  # Everything is OK
fi

3. Quorum สำคัญมาก: ถ้า Node ใน Cluster หายไปเกินครึ่ง ระบบจะหยุดทำงานเพื่อป้องกัน Split-Brain ต้องออกแบบ Quorum ให้ดี เช่น ถ้ามี 3 Node ให้ใช้ Diskless Quorum หรือ Tiebreaker ถ้ามี 2 Node อย่าใช้ Pacemaker เลย ไปใช้ Keepalived ง่ายกว่าเยอะ

4. Resource Agent ต้องดี: Resource Agent คือ Script ที่ Pacemaker ใช้ Start, Stop, Monitor Service ถ้า Agent ทำงานไม่ถูกต้อง Pacemaker ก็ทำงานผิดพลาดได้ ต้องเขียน Agent ให้รัดกุม Handle Error ให้ดี อย่าลืม Test Agent ด้วยนะ

FAQ คำถามที่พบบ่อย

Pacemaker เหมาะกับงานแบบไหน?

Pacemaker เหมาะกับงานที่ต้องการ High Availability จริงๆ คือต้อง Online ตลอดเวลา เช่น Web Server, Database, Load Balancer ถ้าเป็นงานที่ Downtime ได้บ้าง อาจจะใช้ Docker Swarm หรือ Kubernetes ง่ายกว่า

Pacemaker ซับซ้อนไปไหม?

ใช่ครับ Pacemaker ซับซ้อนจริง แต่ถ้าเซ็ตเป็นแล้ว มันคุ้มค่ามากๆ สมัยก่อนผมต้องมานั่งแก้ระบบล่มเองทั้งคืน พอมี Pacemaker ชีวิตง่ายขึ้นเยอะ

Pacemaker ฟรีจริงเหรอ?

Pacemaker เป็น Open Source Software ฟรีครับ แต่ถ้าใช้ใน Production อาจจะต้องซื้อ Support จาก Red Hat หรือ SUSE

ใช้ Pacemaker กับ Docker ได้ไหม?

ได้ครับ แต่ต้อง Config เยอะหน่อย ต้องใช้ Resource Agent ที่รองรับ Docker หรือใช้ Kubernetes ง่ายกว่า

สรุป

Pacemaker เป็นเครื่องมือ High Availability ที่ทรงพลัง แต่ต้องใช้เวลาศึกษาและทดลอง ถ้าเข้าใจหลักการทำงานและ Best Practices แล้ว จะช่วยให้ระบบของคุณมีความเสถียรมากยิ่งขึ้น อย่าลืม Test Failover บ่อยๆ และ Monitor ให้ละเอียดนะครับ

สำหรับใครที่สนใจเรื่อง Forex ลองแวะไปดูที่ iCafeForex ได้นะครับ เผื่อจะได้ไอเดียใหม่ๆ

และอย่าลืมติดตามบทความอื่นๆ ได้ที่ SiamCafe Blog นะครับ