Score:3

กำลังพยายามใช้ Keepalived สำหรับการเฟลโอเวอร์และการส่งต่อ แต่ได้รับ "Keepalived_healthcheckers[1706]: การผูกซ็อกเก็ต TCP ล้มเหลว การจัดกำหนดการใหม่"

ธง pk

เป้าหมายคือรับ 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 ส่งผลให้ล้มเหลวตามที่คาดไว้ ดังนั้นปัญหาจึงอยู่ที่การตั้งค่าเซิร์ฟเวอร์เสมือน/จริงของฉัน...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา