ฉันกำลังพยายามกำหนดค่า Keepalived ในลักษณะที่หากแอปพลิเคชันหรือบริการใด ๆ ที่ทำงานบนโหนดหลักล้มเหลว Keepalived ควรพิจารณาว่าเป็นข้อบกพร่อง และโหนดสำรองควรทำหน้าที่เป็นมาสเตอร์และรับช่วง IP ลอยจากโหนดหลัก
ฉันได้เขียนสคริปต์เพื่อตรวจสอบว่าบริการ X บนเซิร์ฟเวอร์หลักหยุดทำงานหรือไม่ จากนั้นควรเปลี่ยนไปใช้โหนดสำรอง
คอนเฟิร์ม Keepalive ของฉันคือ:
global_defs {
enable_script_security
}
vrrp_script keepalived_check {
สคริปต์ "/root/new/check.sh"
ช่วงที่ 1
หมดเวลา 1
เพิ่มขึ้น 2
ฤดูใบไม้ร่วง 2
น้ำหนัก 0 ย้อนกลับ
}
vrrp_instance V1_11 {
รัฐ MASTER
อินเทอร์เฟซ ens3
virtual_router_id51
ลำดับความสำคัญ 101
advert_int 1
unicast_src_ip 192.168.10.129
unicast_peer {
192.168.10.130
}
การรับรองความถูกต้อง {
auth_type ผ่าน
รับรองความถูกต้อง 1122
}
virtual_ipaddress {
192.168.10.231/24
}
track_script {
keepalive_check
}
}
สคริปต์ที่ตรวจสอบสถานะบริการ:
#!/bin/bash
var="$(systemctl is-active myservice.service)"
ถ้า [ $var == "ใช้งานอยู่" ]
แล้ว
เสียงสะท้อน 0
อื่น
เสียงสะท้อน 5
ไฟ
ฉันหยุดใช้ "myservice" ด้วยตนเอง
systemctl หยุด myservice.service
ผลลัพธ์สำหรับสคริปต์คือ "5" ตามที่คาดไว้ แต่ด้วยการกำหนดค่าที่กล่าวถึงข้างต้น โหนดหลักยังคงเป็นโหนดหลักและจะไม่เปลี่ยนความเป็นเจ้าของไปยังโหนดสำรอง มีการกำหนดค่าใด ๆ ที่ฉันพลาดไปหรือไม่ โปรดช่วยฉันค้นหาสิ่งนั้นด้วย