DRBD8 พร้อมกับ Systemd-Networkd (Netplan)


1

นี่เป็นครั้งแรกที่ฉันกำหนดค่า DRBD (drbd-utils 8.9.10-2) บน Ubuntu 18.04 ด้วย systemd-networkd (ใช้ netplan)

โดยทั่วไปการตั้งค่าดูเหมือนจะประสบความสำเร็จ ฉันมีทรัพยากรหนึ่งรายการที่ถูกซิงค์ผ่านโฮสต์สองแห่งผ่านอินเทอร์เฟซเฉพาะ NIC ของ node1 และ node2 เชื่อมต่อโดยตรง (ไม่มีสวิตช์) NIC อื่นใช้สำหรับทรัพยากร Hearbeat และ ressources เช่นเว็บเซิร์ฟเวอร์

ตอนนี้เป็นส่วนที่ใช้งานไม่ได้:
เมื่อฉันถอดสายเคเบิลของการเชื่อมต่อเครือข่าย drdb โดยเฉพาะโหนดจะเข้าสู่โหมด StandAlone แทนที่จะเป็น WFConnection บันทึกแสดงว่าพยายามเข้าสู่ WFConnection แต่ล้มเหลวและหลังจากนั้นกลับเข้าสู่ StandAlone:

Apr 17 09:08:01 gts-test-node2 systemd-networkd[284]: ens192: Flags change: -UP -LOWER_UP -RUNNING
Apr 17 09:08:01 gts-test-node2 systemd-networkd[284]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_33 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=21 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Apr 17 09:08:01 gts-test-node2 systemd-networkd[284]: LLDP: Stopping LLDP client
Apr 17 09:08:01 gts-test-node2 systemd-networkd[284]: ens192: Stopped LLDP.
Apr 17 09:08:01 gts-test-node2 systemd-networkd[284]: ens192: Lost carrier
Apr 17 09:08:01 gts-test-node2 systemd-networkd[284]: ens192: State is configured, dropping config
Apr 17 09:08:01 gts-test-node2 systemd-networkd[284]: ens192: Removing address: 192.168.0.2/24 (valid forever)
Apr 17 09:08:01 gts-test-node2 systemd-timesyncd[388]: Network configuration changed, trying to establish connection.
Apr 17 09:08:01 gts-test-node2 systemd-timesyncd[388]: Synchronized to time server 91.189.94.4:123 (ntp.ubuntu.com).
Apr 17 09:08:02 gts-test-node2 corosync[480]: Apr 17 09:08:02 warning [TOTEM ] Incrementing problem counter for seqid 7082 iface 192.168.0.2 to [1 of 10]
Apr 17 09:08:02 gts-test-node2 corosync[480]:   [TOTEM ] Incrementing problem counter for seqid 7082 iface 192.168.0.2 to [1 of 10]
Apr 17 09:08:02 gts-test-node2 corosync[480]: Apr 17 09:08:02 warning [TOTEM ] Incrementing problem counter for seqid 7084 iface 192.168.0.2 to [2 of 10]
Apr 17 09:08:02 gts-test-node2 corosync[480]:   [TOTEM ] Incrementing problem counter for seqid 7084 iface 192.168.0.2 to [2 of 10]
Apr 17 09:08:02 gts-test-node2 kernel: drbd storage1: PingAck did not arrive in time.
Apr 17 09:08:02 gts-test-node2 kernel: drbd storage1: peer( Primary -> Unknown ) conn( Connected -> NetworkFailure ) pdsk( UpToDate -> DUnknown )
Apr 17 09:08:02 gts-test-node2 kernel: drbd storage1: ack_receiver terminated
Apr 17 09:08:02 gts-test-node2 kernel: drbd storage1: Terminating drbd_a_storage1
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: Connection closed
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: conn( NetworkFailure -> Unconnected )
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: receiver terminated
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: Restarting receiver thread
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: receiver (re)started
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: conn( Unconnected -> WFConnection )
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: bind before listen failed, err = -99
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: conn( WFConnection -> Disconnecting )
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: Connection closed
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: conn( Disconnecting -> StandAlone )
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: State change failed: Need a connection to start verify or resync
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1:  mask = 0x1f0 val = 0x80
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1:  old_conn:StandAlone wanted_conn:WFConnection
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: receiver terminated
Apr 17 09:08:03 gts-test-node2 kernel: drbd storage1: Terminating drbd_r_storage1

ข้อผิดพลาดนี้เป็นเรื่องใหม่สำหรับฉันและไม่เคยเกิดขึ้นกับ Ubuntu 16.04 ซึ่งifupdownใช้แทนsystemd-networkd:

การผูกก่อนการฟังล้มเหลว err = -99

หากฉันsystemctl stop systemd-networkdก่อนที่จะถอดสายเคเบิลพฤติกรรมนั้นถูกต้อง -> ยังคงอยู่ใน WFConnection แต่ฉันต้องการใช้ systemd-networkd และไม่กำหนดค่าทุกอย่างให้กลับไปที่ "วิธีเก่า"

การตัดการเชื่อมต่อสายเคเบิลได้รับการจำลองในสองวิธีที่แตกต่างกันด้วยผลลัพธ์เดียวกัน:

ip link set ens190 down

หรือยกเลิกการเชื่อมต่ออินเตอร์เฟส

ไม่มีใครมีความคิดว่ากระบวนการของsystemd-networkd(หรืออาจnetworkd-dispatcherหรืออื่น ๆ ?) ทำให้เกิดพฤติกรรมไม่เหมาะสมนี้? ฉันไม่พบสิ่งใดบนอินเทอร์เน็ตที่เกี่ยวข้องกับหัวข้อนี้

ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก

คำตอบ:


0

ฉันก็ประสบปัญหานี้เช่นกัน การใช้ networkd-dispatch เพื่อบันทึกสถานะอินเตอร์เฟสฉันเห็นว่าเมื่อไม่มีผู้ให้บริการอินเทอร์เฟซถูกปล้นของการกำหนดค่า IP ทำให้ drbd ทำให้ทรัพยากรทั้งหมดเป็นแบบสแตนด์อโลน พฤติกรรม systemd นี้ดูเหมือนว่าจะช่วยพลิกความคิดที่สร้างไว้แล้วทั้งหมดเกี่ยวกับสิ่งที่ควรเกิดขึ้นในกรณีนี้

https://github.com/systemd/systemd/commit/a9cc0189aa69a5fa1bcbacbdc69740fa3e5353dbได้ถูกเพิ่ม แต่นี่ไม่รวมอยู่ในแพ็คเกจ bionic systemd ตัวเลือกอาจจะต้องได้รับการเปิดเผยผ่าน netplan ดังนั้นหน่วยที่สร้างขึ้นจะตั้งค่าพฤติกรรมที่ต้องการ

วิธีแก้ไขที่เป็นไปได้:

  • กำหนด drbd IP ให้กับบริดจ์เครือข่ายและเพิ่มอินเตอร์เฟสการจำลองแบบของคุณไปยังบริดจ์
  • ใช้ networkd-dispatcher drbdadm connect allเป็นระยะที่เหมาะสม

(ฉันคิดว่าพฤติกรรม systemd ผิดปกติเมื่อเป็นไปได้ที่จะทำให้แอปพลิเคชันผูกกับที่อยู่เฉพาะฉันไม่ต้องการให้ที่อยู่นั้นหายไปเพราะอุปกรณ์เครือข่ายเพียร์ถูกรีสตาร์ท, ถอดสายเคเบิล ฯลฯ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.