สถาปัตยกรรมความพร้อมใช้งานสูงบางอย่างจำเป็นต้องมีที่อยู่ IP ลอย ฟังก์ชั่นนี้มีอยู่ในแพลตฟอร์ม Vultr เมื่อเปิดใช้งานเครือข่ายส่วนตัวแล้ว Vultr เสนอช่วง IP ในแต่ละเครือข่ายส่วนตัว: "คุณสามารถใช้ IP ใดก็ได้ที่คุณชอบบนเครือข่ายส่วนตัวเรากำหนด IP หนึ่งเป็นค่าเริ่มต้น แต่คุณสามารถเพิกเฉยได้และใช้อีกอันถ้าคุณต้องการ" . ดังนั้นเราสามารถใช้ IP เสมือนใด ๆ ภายในช่วง IP ส่วนตัว ตัวอย่างนี้มีการตั้งค่าแบบพาสซีฟ / แอคทีฟ เซิร์ฟเวอร์หลักจะอ้างสิทธิ์ IP แบบลอยตัวยกเว้นว่าเซิร์ฟเวอร์ล่ม หากเซิร์ฟเวอร์หลักไม่ทำงาน IP สำรองจะถูกอ้างสิทธิ์โดยเซิร์ฟเวอร์สำรอง
ข้อกำหนดเบื้องต้น
- อินสแตนซ์ของเซิร์ฟเวอร์ Ubuntu 16.04 LTS x64 สองตัว (เซิร์ฟเวอร์ต้นแบบและเซิร์ฟเวอร์สำรอง)
- sudo (หรือบัญชี root) ของผู้ใช้
การเตรียมระบบ
เริ่มต้นด้วยการเปิดใช้งานเครือข่ายส่วนตัวในแต่ละ VPS คุณลักษณะนี้ได้รับการรับรองเป็นอย่างดี
ล็อกอินเข้าสู่ระบบแต่ละระบบในฐานะsudo
ผู้ใช้และอัพเดตระบบและแพ็คเกจ:
apt-get update && apt-get upgrade
เมื่อเสร็จแล้วเราก็พร้อมที่จะเริ่มต้นด้วยการติดตั้งและกำหนดค่า Keepalived
การติดตั้ง Keepalived
หลังจากที่แต่ละระบบทันสมัยและมี IP ส่วนตัวคุณสามารถติดตั้ง Keepalived บนทั้งสองระบบ
apt-get install keepalived
สิ่งนี้จะติดตั้งภูตความพร้อมใช้งานสูง Keepalived เป็นโปรแกรมที่มีความพร้อมใช้งานสูงและฟังก์ชั่นปรับสมดุลภาระบนพื้นฐานของ Virtual Router Redundancy Protocol (VRRP)
เซิร์ฟเวอร์หลัก
บนเซิร์ฟเวอร์หลักแก้ไขไฟล์คอนฟิกูเรชัน Keepalived
nano /etc/keepalived/keepalived.conf
นี่virtual_ipaddress
คือ IP ที่เราจะลอยระหว่างเซิร์ฟเวอร์ priority
กำหนดที่จะเป็นเจ้าของทรัพย์สินทางปัญญา 200
สำหรับต้นแบบที่เราจะใช้จัดลำดับความสำคัญของ เราจะใช้10.99.0.200
เป็น IP เสมือนของเราที่ลอยอยู่
vrrp_instance VI_1 {
state MASTER
interface ens7
virtual_router_id 51
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass thisismysupersecretpassword
}
virtual_ipaddress {
10.99.0.200
}
}
เซิร์ฟเวอร์สำรอง
บนเซิร์ฟเวอร์สำรองให้แก้ไขไฟล์กำหนดค่า Keepalived
nano /etc/keepalived/keepalived.conf
ที่นี่เราจะกำหนดvirtual_ipaddress
เช่นเดียวกับบนเซิร์ฟเวอร์หลัก ความแตกต่างที่นี่คือลำดับความสำคัญของเซิร์ฟเวอร์นี้จะต่ำกว่าดังนั้นมันจะเรียกร้อง IP เท่านั้นเมื่อต้นแบบไม่ได้ออนไลน์
vrrp_instance VI_1 {
state BACKUP
interface ens7
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass thisismysupersecretpassword
}
virtual_ipaddress {
10.99.0.200
}
}
การใช้งานและการทดสอบ
เมื่อกำหนดค่าบริการ Keepalived ทั้งสองแล้วให้เริ่มบริการแต่ละรายการและเปิดใช้งานเมื่อเริ่มระบบ
systemctl start keepalived
systemctl enable keepalived
บนเซิร์ฟเวอร์ตัวที่สาม (หรือบนเซิร์ฟเวอร์สำรอง) เริ่มต้นโดยส่ง Ping IP ที่ใช้ร่วมกันของเรา:
ping 10.99.0.200
ตอนนี้รีบูตเซิร์ฟเวอร์หลักและดู IP ย้ายไปยังเซิร์ฟเวอร์สำรอง โดยปกติแล้วจะมีการเพิ่ม ping latency เพิ่มขึ้นเล็กน้อย
64 bytes from 10.99.0.200: icmp_seq=80 ttl=64 time=0.384 ms
64 bytes from 10.99.0.200: icmp_seq=81 ttl=64 time=1.33 ms <<< failover has happened
64 bytes from 10.99.0.200: icmp_seq=82 ttl=64 time=0.388 ms
64 bytes from 10.99.0.200: icmp_seq=83 ttl=64 time=0.339 ms
64 bytes from 10.99.0.200: icmp_seq=84 ttl=64 time=0.570 ms
ข้อสรุป
ทำงานอย่างต่อเนื่องโดยไม่มีปัญหาเกี่ยวกับ Vultr และพร้อมสำหรับการออกแบบสถาปัตยกรรมความพร้อมใช้งานสูงทั้งหมดของคุณ