Score:0

Keepalive จะแยกสมองเมื่อ Firewalld กำลังทำงาน

ธง pl

ฉันใช้ Keepalived เพื่อมอบความพร้อมใช้งานระหว่างเซิร์ฟเวอร์ Alma 8 Nginx สองเครื่อง (โฮสต์บน VMWare หากมีความเกี่ยวข้องใดๆ) เมื่อเปิดใช้งาน firewalld แม้ว่าจะมีการตั้งค่ากฎมากมายสำหรับ VRRP เมื่อฉันเปิด firewalld ทั้งสองโฮสต์จะเริ่มตอบสนองบน IP เสมือน:

root@dca-nfs01:~# arping 172.31.5.233
60 ไบต์จาก 00:50:56:84:ac:d0 (172.31.5.233): index=39 เวลา=1.960 usec
60 ไบต์จาก 00:50:56:84:ac:d0 (172.31.5.233): index=40 เวลา=20.660 usec
60 ไบต์จาก 00:50:56:84:52:ed (172.31.5.233): index=41 เวลา=24.930 usec
60 ไบต์จาก 00:50:56:84:ac:d0 (172.31.5.233): index=42 เวลา=534.616 msec
60 ไบต์จาก 00:50:56:84:52:ed (172.31.5.233): index=43 เวลา=534.646 msec

การกำหนดค่า Keepalive ของฉันนำมาจากเทมเพลตการสอนมาตรฐานและมีลักษณะดังนี้:

[root@dca-ngx01-al ~]# แมว /etc/keepalived/keepalived.conf
global_defs {
  # ตัวระบุกระบวนการ Keepalived
  router_id nginx
}

# สคริปต์เพื่อตรวจสอบว่า Nginx ทำงานหรือไม่
vrrp_script check_nginx {
  สคริปต์ "/sbin/pidof nginx"
  ช่วงที่ 2
  น้ำหนัก 50
}

# อินเทอร์เฟซเสมือน - ลำดับความสำคัญระบุลำดับที่อินเทอร์เฟซที่กำหนดให้รับช่วงต่อเมื่อเกิดข้อผิดพลาด
vrrp_instance VI_01 {
  รัฐ MASTER
  อินเทอร์เฟซ ens192
  virtual_router_id 151
  ลำดับความสำคัญ 110

  # ที่อยู่ IP เสมือนที่ใช้ร่วมกันระหว่างสองเว็บเซิร์ฟเวอร์ NGINX ซึ่งจะลอย
  virtual_ipaddress {
    172.31.5.233
  }
  track_script {
    check_nginx
  }
  การรับรองความถูกต้อง {
    auth_type AH
    ความลับ auth_pass
  }
}

ทั้งสองกล่องมีไฟร์วอลล์หนึ่งโซนที่เรียบง่าย และฉันได้เพิ่มกฎที่สมบูรณ์เพื่ออนุญาตการสื่อสาร VRRP ระหว่างสองโฮสต์:

[root@dca-ngx01-al ~]# firewall-cmd --list-all
สาธารณะ (ใช้งานอยู่)
  เป้าหมาย: ค่าเริ่มต้น
  icmp-block-inversion: ไม่
  อินเทอร์เฟซ: ens192
  แหล่งที่มา:
  บริการ: dhcpv6-client http https ssh
  พอร์ต: 10050/tcp
  โปรโตคอล:
  ไปข้างหน้า: ไม่
  สวมหน้ากาก: ไม่
  พอร์ตไปข้างหน้า:
  พอร์ตต้นทาง:
  icmp บล็อก:
  กฎมากมาย:
        ค่าโปรโตคอลกฎ = "vrrp" ยอมรับ

ฉันได้ตั้งด้วย net.ipv4.ip_forward = 1 ใน /etc/sysctl.conf.

เมื่อไฟร์วอลล์หยุดทำงานบนกล่องทั้งสอง Keepalived จะทำงานอย่างถูกต้อง แต่เมื่อเปิดใช้งานดูเหมือนว่าทั้งสองฝ่ายขาดการติดต่อกัน และส่งแพ็กเก็ต ARP เปล่าๆ ซ้ำๆ ออกไป:

â keepalived.service - LVS และ VRRP High Availability Monitor
   โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/keepalived.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: ปิดใช้งาน)
   ใช้งานอยู่: เปิดใช้งาน (ทำงาน) ตั้งแต่วันศุกร์ 2022-03-25 12:48:25 GMT; 2 ชั่วโมง 35 นาทีที่แล้ว
  กระบวนการ: 7140 ExecReload=/bin/kill -HUP $MAINPID (รหัส=ออก, สถานะ=0/สำเร็จ)
  กระบวนการ: 12966 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (รหัส=ออกแล้ว สถานะ=0/สำเร็จ)
 PID หลัก: 12967 (เก็บไว้)
    งาน: 2 (จำกัด: 11406)
   หน่วยความจำ: 1.8M
   CGroup: /system.slice/keepalived.service
           ââ12967 /usr/sbin/keepalived -D
           ââ12968 /usr/sbin/keepalived -D

25 มีนาคม 15:08:15 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มีนาคม 15:08:15 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มีนาคม 15:08:15 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มีนาคม 15:08:15 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มี.ค. 15:08:18 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: (VI_01) กำลังส่ง/จัดคิว ARP ฟรีบน ens192 เป็นเวลา 1>
25 มีนาคม 15:08:18 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มีนาคม 15:08:18 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มีนาคม 15:08:18 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มีนาคม 15:08:18 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233
25 มีนาคม 15:08:18 น. dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: กำลังส่ง ARP ฟรีบน ens192 สำหรับ 172.31.5.233

อย่างไรก็ตาม ฉันเห็นได้จากการใช้ TCPDump ว่าแพ็กเก็ต VRRP ปกติจากโฮสต์อื่นอย่างน้อยจะชนกับอินเทอร์เฟซเครือข่ายเมื่อไฟร์วอลล์ทำงาน:

tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v หรือ -vv สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟัง ens192, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการจับภาพ 262144 ไบต์
15:25:21.532300 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3160): VRRPv2, โฆษณา, vrid 151, prio 150, authtype ah, intvl 1s, ความยาว 20
15:25:22.532419 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3161): VRRPv2, โฆษณา, vrid 151, prio 150, authtype ah, intvl 1s, ความยาว 20
15:25:23.532476 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3162): VRRPv2, โฆษณา, vrid 151, prio 150, authtype ah, intvl 1s, ความยาว 20
15:25:24.532544 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3163): VRRPv2, โฆษณา, vrid 151, prio 150, authtype ah, intvl 1s, ความยาว 20

ไม่มีใครมีความคิดใด ๆ เกี่ยวกับวิธีที่ฉันจะแก้ไขปัญหานี้เพิ่มเติมได้อย่างไร

ขอบคุณล่วงหน้า.

Score:0
ธง pl

เมื่อเช้านี้ฉันได้ทราบแล้วว่าสาเหตุของปัญหาคืออะไร เผื่อว่าสิ่งนี้จะช่วยใครซักคนในอนาคต ฉันเปิดใช้งาน LogDenied=ทั้งหมด ใน /etc/firewalld/firewalld.confและสามารถระบุได้ว่าแพ็กเก็ตใดยังคงถูกทิ้งโดยไฟร์วอลล์โดยใช้ --get-log-ปฏิเสธ สวิตซ์:

[root@dca-ngx02-al keepalived]# firewall-cmd --get-log-denied
28 มี.ค. 08:40:04 dca-ngx01-al.REDACTED.local เคอร์เนล: FINAL_REJECT: IN=ens192 OUT= MAC=01:00:5e:00:00:12:00:50:56:84:ac:d0 :08:00 SRC=172.31.5.229 DST=224.0.0.18 LEN=64 TOS=0x00 PREC=0xC0 TTL=255 ID=79 PROTO=AH SPI=0xac1f05e5
28 มี.ค. 08:40:05 dca-ngx01-al.REDACTED.local เคอร์เนล: FINAL_REJECT: IN=ens192 OUT= MAC=01:00:5e:00:00:12:00:50:56:84:ac:d0 :08:00 SRC=172.31.5.229 DST=224.0.0.18 LEN=64 TOS=0x00 PREC=0xC0 TTL=255 ID=80 PROTO=AH SPI=0xac1f05e5

ฉันแก้ไขปัญหาด้วยการเพิ่มกฎไฟร์วอลล์สำหรับแพ็กเก็ตมัลติคาสต์ AH

firewall-cmd --add-rich-rule='ค่าโปรโตคอลกฎ = "ah" ยอมรับ' --permanent

โพสต์คำตอบ

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