เป้าหมายคือรับ CentOS 7 VM ที่แตกต่างกันสองเครื่องที่ติดตั้ง Keepalived เพื่อดำเนินการเฟลโอเวอร์ด้วย VIP 192.168.1.11 และส่งต่อทราฟฟิก http (กลายเป็น https หลังจากใช้งานได้ไม่นาน) ไปยังเซิร์ฟเวอร์ http ที่เกี่ยวข้อง
192.168.1.11 vm1 (MASTER) -> fwd http ถึง 192.168.1.71
192.168.1.11 vm2 (สำรอง) -> fwd http ถึง 192.168.1.72
ฉันมีส่วนที่ล้มเหลวของสิ่งนี้ (ด้วย keepalived) ก่อนหน้านี้ทำงาน แต่ด้วย haproxy (ในแต่ละ vm) จัดการการส่งต่อแทน ตอนนี้ฉันพยายาม Keepalived เพื่อส่งต่อ (หรือในกรณีนี้โหมดที่ฉันพยายามใช้คือการกำหนดเส้นทางโดยตรงฉันเชื่อว่า) ฉันได้รับข้อผิดพลาดในการผูกซ็อกเก็ตในเอาต์พุตสถานะและเฟลโอเวอร์ไม่ทำงาน
นี่คือ vm1 keepalived.conf:
global_defs {
รากของ script_user
}
vrrp_instance VIP01 {
รัฐ MASTER
อินเทอร์เฟซ eth0
virtual_router_id 101
ลำดับความสำคัญ 101
advert_int 1
การรับรองความถูกต้อง {
auth_type ผ่าน
auth_pass [สนิป]
}
virtual_ipaddress {
192.168.1.11/24
}
}
virtual_server 192.168.1.11 8080 {
ดีเลย์_ลูป10
โปรโตคอล TCP
lb_algo rr
lb_kind ดร
การคงอยู่_หมดเวลา 7200
เซิร์ฟเวอร์จริง 192.168.1.71 8080 {
น้ำหนัก 1
TCP_CHECK {
connect_timeout5
connect_พอร์ต 8080
}
}
}
และ vm2:
global_defs {
รากของ script_user
}
vrrp_instance VIP01 {
รัฐสำรอง
อินเทอร์เฟซ eth0
virtual_router_id 101
ลำดับความสำคัญ 100
advert_int 1
การรับรองความถูกต้อง {
auth_type ผ่าน
auth_pass [สนิป]
}
virtual_ipaddress {
192.168.1.11/24
}
}
virtual_server 192.168.1.11 80 {
ดีเลย์_ลูป10
โปรโตคอล TCP
lb_algo rr
lb_kind ดร
การคงอยู่_หมดเวลา 7200
เซิร์ฟเวอร์จริง 192.168.1.72 8080 {
น้ำหนัก 1
TCP_CHECK {
connect_timeout5
connect_พอร์ต 8080
}
}
}
ผลลัพธ์จาก สถานะ systemctl ยังคงอยู่
(บน vms ทั้งสอง):
...
20 กรกฎาคม 07:52:16 [ชื่อโฮสต์] Keepalived_healthcheckers[1738]: การผูกซ็อกเก็ต TCP ล้มเหลว กำหนดการใหม่
20 กรกฎาคม 07:52:26 [ชื่อโฮสต์] Keepalived_healthcheckers[1738]: การผูกซ็อกเก็ต TCP ล้มเหลว กำหนดการใหม่
20 กรกฎาคม 07:52:36 [ชื่อโฮสต์] Keepalived_healthcheckers[1738]: การผูกซ็อกเก็ต TCP ล้มเหลว กำหนดการใหม่
ฉันยังลองเพิ่มสิ่งต่อไปนี้ใน /etc/sysctl.conf
:
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
และยืนยันว่าพวกเขาทำโดยการสอบถามหลังจากรีบูต
ฉันรู้ว่าการใช้ load balancing กับ round robin กับเซิร์ฟเวอร์เดียวในรายการนั้นไม่ใช่ load balancing จริงๆ แต่ฉันเห็นว่ามันเป็นวิธีการส่งต่อ หากมีวิธีที่รัดกุม/ดีกว่านี้ ฉันสนใจ
แก้ไข:
ถ้าฉันแสดงความคิดเห็นในการตรวจสอบ TCP ดูเหมือนว่าความล้มเหลวในการผูกข้อความจะหายไป ฉันได้ตรวจสอบ IP/พอร์ตปลายทางแล้วโดยไปที่ http://192.168.1.71:8080 ในเบราว์เซอร์และทำงานได้ตามที่คาดไว้ แต่ใช้งานไม่ได้เมื่อผ่าน VIP .11 ดูเหมือนว่าควรเป็นการตรวจสอบ HTTP_GET อยู่ดี
ฉันสามารถม้วนหน้าจาก ขด http://192.168.1.71:8080
จากบรรทัด cmd ของ vm1 ดังนั้นฉันจึงรู้ว่ามีการเข้าถึงเซิร์ฟเวอร์ http ของ. 71
การนำทางในเบราว์เซอร์ไปที่ http://192.168.1.11:8080
ยังคงส่งผลให้เกิดการหมดเวลา สถานะไม่แสดงสัญญาณของปัญหา จะดูตัวเลือกบันทึกที่มีรายละเอียดมากกว่านี้...
นี่คือที่ที่ฉันได้รวบรวมสิ่งที่ฉันมีมากที่สุด ...
ตาม นี้ (ล่างหน้า 6) โอกาสที่จะคงอยู่คือการลบเซิร์ฟเวอร์จริงออกจากรายการ ดูเหมือนว่าอาจมีบางสิ่งที่ขัดขวางไม่ให้บริการ Keepalived ไม่สามารถเข้าสู่เซิร์ฟเวอร์จริงด้วยการตรวจสอบ TCP หรือ HTTP Get อาจจะเป็นนโยบาย selinux?
/var/log/audit/audit.log
เต็มไปด้วยสิ่งที่เก็บรักษาไว้ทั้งหมด ...
พบ นี้ และพยายามตั้งค่าอนุญาตการเชื่อมต่อบูลีนใด ๆ ซึ่งไม่ได้เปลี่ยนผลลัพธ์ของฉัน
ได้ลองใช้ด้วย การตรวจสอบ2อนุญาต
เพื่อสร้างกฎแล้วนำไปใช้ และแม้ว่าบันทึกการตรวจสอบดูเหมือนจะหยุดการบันทึกปฏิเสธข้อความ แต่การส่งต่อจาก 11 ถึง 71 ก็ยังใช้งานไม่ได้
ยังไม่เห็นสิ่งที่บ่งบอกถึงข้อผิดพลาด:
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived[1951]: เริ่มต้น Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
20 กรกฎาคม 12:46:59 [ชื่อโฮสต์] Keepalived[1951]: กำลังเปิดไฟล์ '/etc/keepalived/keepalived.conf'
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived[1952]: กำลังเริ่มกระบวนการลูก Healthcheck, pid=1953
20 กรกฎาคม 12:46:59 [ชื่อโฮสต์] Keepalived[1952]: กำลังเริ่มกระบวนการลูก VRRP, pid=1954
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived_healthcheckers[1953]: กำลังเปิดไฟล์ '/etc/keepalived/keepalived.conf'
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived_healthcheckers[1953]: เปิดใช้งานตัวตรวจสอบสุขภาพสำหรับบริการ [192.168.1.11]:8080
20 กรกฎาคม 12:46:59 [ชื่อโฮสต์] systemd: เริ่มการตรวจสอบความพร้อมใช้งานสูง LVS และ VRRP
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: การลงทะเบียนตัวสะท้อน netlink เคอร์เนล
20 กรกฎาคม 12:46:59 [ชื่อโฮสต์] Keepalived_vrrp[1954]: การลงทะเบียนช่องคำสั่งเคอร์เนล netlink
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: การลงทะเบียนช่องแชร์ ARP ฟรี
20 กรกฎาคม 12:46:59 [ชื่อโฮสต์] Keepalived_vrrp[1954]: กำลังเปิดไฟล์ '/etc/keepalived/keepalived.conf'
20 กรกฎาคม 12:46:59 [ชื่อโฮสต์] Keepalived_vrrp[1954]: ตัดทอน auth_pass เป็น 8 ตัวอักษร
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) ลบโปรโตคอล VIP
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: การใช้ตัวสะท้อน netlink เคอร์เนล LinkWatch ...
20 ก.ค. 12:46:59 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
20 ก.ค. 12:47:00 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) เปลี่ยนเป็น MASTER STATE
20 กรกฎาคม 12:47:01 [ชื่อโฮสต์] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) เข้าสู่ MASTER STATE
20 กรกฎาคม 12:47:01 [ชื่อโฮสต์] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) การตั้งค่าโปรโตคอลวีไอพี
20 กรกฎาคม 12:47:01 [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 ก.ค. 12:47:01 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) กำลังส่ง/จัดคิว ARPs ฟรีบน eth0 สำหรับ 192.168.1.11
20 กรกฎาคม 12:47:01 [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 กรกฎาคม 12:47:01 [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 กรกฎาคม 12:47:01 [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 กรกฎาคม 12:47:01 [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 ก.ค. 12:47:06 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 ก.ค. 12:47:06 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: VRRP_Instance(VIP01) กำลังส่ง/จัดคิว ARPs ฟรีบน eth0 สำหรับ 192.168.1.11
20 ก.ค. 12:47:06 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 ก.ค. 12:47:06 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 ก.ค. 12:47:06 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
20 ก.ค. 12:47:06 น. [ชื่อโฮสต์] Keepalived_vrrp[1954]: ส่ง ARP ฟรีบน eth0 สำหรับ 192.168.1.11
นอกจากนี้ยังควรกล่าวถึงก่อนหน้านี้ฉันปิดใช้งานไฟร์วอลล์เพื่อแยกแยะ ...
ส่ง Ping 192.168.1.11 และดึงการเชื่อมต่อเครือข่ายไปยัง vm1 ส่งผลให้ล้มเหลวตามที่คาดไว้ ดังนั้นปัญหาจึงอยู่ที่การตั้งค่าเซิร์ฟเวอร์เสมือน/จริงของฉัน...