Data Codes through Eyeglasses

Keepalived เป็นโปรแกรมโอเพนซอร์สที่ทำหน้าที่เป็น Load Balancer และ Virtual Router Redundancy Protocol (VRRP) บน Linux, FreeBSD, OpenBSD และ NetBSD

Keepalived ทำงานโดยการตรวจสอบสถานะของเครื่อง Load Balancer เมื่อเครื่องใดเครื่องหนึ่งล้มเหลว Keepalived จะย้ายการรับส่งข้อมูลไปยังเครื่อง Load Balancer อีกเครื่องหนึ่งโดยอัตโนมัติ

Keepalived ยังสามารถใช้เพื่อจัดตั้ง VRRP ซึ่งช่วยให้เครือข่ายสามารถทำงานต่อไปได้หาก Router ตัวหลักล้มเหลว

คุณสมบัติของ Keepalived

Load Balancing: Keepalived สามารถกระจายการรับส่งข้อมูลไปยังหลาย ๆ อินสแตนซ์ของบริการ
VRRP: Keepalived สามารถจัดตั้ง VRRP เพื่อรักษาความพร้อมใช้งานของเครือข่าย
การตรวจสอบสถานะ: Keepalived สามารถตรวจสอบสถานะของเครื่อง Load Balancer
การกำหนดค่าแบบไดนามิก: Keepalived สามารถกำหนดค่าแบบไดนามิกตามเงื่อนไขต่างๆ
การใช้งาน Keepalived

Keepalived สามารถใช้เพื่อ:

กระจายการรับส่งข้อมูลไปยังหลาย ๆ อินสแตนซ์ของบริการ
รักษาความพร้อมใช้งานของเครือข่ายหาก Router ตัวหลักล้มเหลว
กำหนดเส้นทางการรับส่งข้อมูลตามเงื่อนไขต่างๆ
ตัวอย่างการใช้งาน Keepalived

ใช้ Keepalived เพื่อกระจายการรับส่งข้อมูลไปยังหลาย ๆ อินสแตนซ์ของบริการ Keepalived สามารถใช้ในการกระจายการรับส่งข้อมูลไปยังหลาย ๆ อินสแตนซ์ของบริการ เช่น Web Server หรือ Database Server
ใช้ Keepalived เพื่อรักษาความพร้อมใช้งานของเครือข่าย Keepalived สามารถใช้ในการจัดตั้ง VRRP เพื่อรักษาความพร้อมใช้งานของเครือข่ายหาก Router ตัวหลักล้มเหลว
ใช้ Keepalived เพื่อกำหนดเส้นทางการรับส่งข้อมูลตามเงื่อนไขต่างๆ Keepalived สามารถใช้ในการกำหนดเส้นทางการรับส่งข้อมูลตามเงื่อนไขต่างๆ เช่น ประเภทของ HTTP Request, ตำแหน่งทางภูมิศาสตร์ของผู้ใช้งาน และอื่นๆ
การติดตั้ง Keepalived

Keepalived สามารถติดตั้งบน Linux, FreeBSD, OpenBSD และ NetBSD โดยใช้คำสั่งต่อไปนี้

apt-get install keepalived
yum install keepalived
pkg install keepalived
pkgsrc install keepalived

การกำหนดค่า Keepalived

การกำหนดค่า Keepalived สามารถทำได้โดยใช้ไฟล์ /etc/keepalived/keepalived.conf

ไฟล์ /etc/keepalived/keepalived.conf มีการกำหนดค่าต่างๆ เช่น IP Address ของ Virtual Router, อินสแตนซ์ของ Load Balancer และเงื่อนไขการตรวจสอบสถานะ

ตัวอย่างการกำหนดค่า Keepalived

global_defs {
# กำหนดชื่อของ Virtual Router
router_id VR1

# กำหนดที่อยู่ IP ของ Virtual Router
virtual_router_id 1

# กำหนดเวลาในการส่ง Keepalive
vrrp_instance VR1 {
    state MASTER
    interface eth0
    virtual_ipaddress {
        192.168.1.1/24
    }

    # กำหนดเวลาในการส่ง Keepalive
    priority 100

    # กำหนดเงื่อนไขการตรวจสอบสถานะ
    track_interface {
        eth0
    }
}

# กำหนดอินสแตนซ์ของ Load Balancer
# อินสแตนซ์ 1
vrrp_instance VR2 {
    state BACKUP
    interface eth0
    virtual_ipaddress {
        192.168.1.2/24
    }

    # กำหนดเวลาในการส่ง Keepalive
    priority 90

    # กำหนดเงื่อนไขการตรวจสอบสถานะ
    track_interface {
        eth0
    }
}

}
ในตัวอย่างการกำหนดค่าข้างต้น กำหนดชื่อของ Virtual Router เป็น VR1 และ IP Address เป็น 192.168.1.1

กำหนดอินสแตนซ์ของ Load Balancer สองอินสแตนซ์ คือ 192.168.1.1 และ 192.168.1.2

อินสแตนซ์ 1 กำหนดสถานะเป็น MASTER และ priority เป็น 100

อินสแตนซ์ 2 กำหนดสถานะเป็น BACKUP และ priority เป็น 90

เงื่อนไขการตรวจสอบสถานะคือการตรวจสอบสถานะของอินเทอร์เฟซ eth0

เมื่ออินสแตนซ์ 1 ล้มเหลว Keepalived จะย้ายการรับส่งข้อมูลไปยังอินสแตนซ์ 2