Hello everyone again.
I have another question regarding my setup.
I’m actively trying to grasp what could be the worst case scenario here and how could things go wrong (data corruption as an example) in order to understand it better and protect myself as much as possible.
First, here is a summary of my setup :
- 3 server in total → 2 PVE server + 1 PBS server as a Qdevice.
Each server has 1 LAN IPv4 address and 2 WAN IP address (1 IPV4 + 1 IPV6).
On the Proxmox cluster side
Given that the Qdevice can only use one IP address, I use the LAN IP for the PBS and for the 2 PVE nodes, I specified “just in case” 3 links for the pve-cluster :
- LAN IP → link 0
- WANv4 → link 1
- WANv6 → link 2
I don’t know if I’m already too paranoid as it could be extremely rare that the IPv4/IPv6 stack "of the WAN nic” goes down, but also if it’s going down, is it only for one NIC in particular or is it for the whole server ?
Question 1. I am not sure if it’s useful to specify both NICs (3 IPs) for the pve-cluster or if it could make things worse Proxmox-HA wise.
Couldn’t it be better to only use LAN NIC for the 2 PVE-nodes cluster as the PBS’s Qdevice can only use the LAN NIC ?
The way I understand it, is that by using this setup, if one node’s corosync don’t send packets to other nodes, it will make the server reboot itself after 2-3 minutes and the VM will obey to the HA settings. (For me, it’s by default, so “conditional”)
But with multiple net link (as “failover”) this won’t happend right ?
On the Linstor DRBD cluster side
I created the Linstor cluster by using each LAN IP address of the nodes, and after following the documentation, I did setup the linstor-controller HA resource (on the PVE-nodes) as the PBS is a Diskless TieBreaker.
I tested the shared storage by creating a test VM and it worked, the resource got created on all nodes and the PBS is Tiebreaking :
root@gx-srv1:~# linstor r l
╭─────────────────────────────────────────────────────────────────────────────────────────────╮
┊ ResourceName ┊ Node ┊ Layers ┊ Usage ┊ Conns ┊ State ┊ CreatedOn ┊
╞═════════════════════════════════════════════════════════════════════════════════════════════╡
┊ linstor_db ┊ gx-backup ┊ DRBD,STORAGE ┊ Unused ┊ Ok ┊ TieBreaker ┊ 2025-08-06 16:12:31 ┊
┊ linstor_db ┊ gx-srv1 ┊ DRBD,STORAGE ┊ InUse ┊ Ok ┊ UpToDate ┊ 2025-08-06 16:12:31 ┊
┊ linstor_db ┊ gx-srv2 ┊ DRBD,STORAGE ┊ Unused ┊ Ok ┊ UpToDate ┊ 2025-08-06 16:12:31 ┊
┊ pm-f99db4df ┊ gx-backup ┊ DRBD,STORAGE ┊ Unused ┊ Ok ┊ TieBreaker ┊ 2025-08-11 10:02:29 ┊
┊ pm-f99db4df ┊ gx-srv1 ┊ DRBD,STORAGE ┊ InUse ┊ Ok ┊ UpToDate ┊ 2025-08-11 10:02:28 ┊
┊ pm-f99db4df ┊ gx-srv2 ┊ DRBD,STORAGE ┊ Unused ┊ Ok ┊ UpToDate ┊ 2025-08-11 10:02:29 ┊
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
Linstor DRBD tests
Then I wanted to try and see what could happend if I simulate a failure by switching-off the LAN NIC on “srv1” node by using ip link set dev lanNIC down
.
I will try to explain the situation so there will most likely be misunderstandings about how it works, feel free to correct me so I will take advantage of this opportunity to learn.
After executing the command on srv1, the linstor-controller is now working on the srv2 node as intended.
Few minutes later, the PVE-gui shows that the VM is still on the “srv1” node :
The drbdstorage informations aren’t available from both nodes.
srv1 → it’s timing out, and it’s normal because the LAN NIC is down. (both pve-nodes LAN NIC ip address is specified in /etc/pve/storage.cfg
in the controller argument)
srv2 → Usage N/A.
Linstor DRBD wise, the nodes looks like this :
root@gx-srv2:~# linstor n l
╭────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ Node ┊ NodeType ┊ Addresses ┊ State ┊
╞════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ gx-backup ┊ COMBINED ┊ 172.16.0.1:3366 (PLAIN) ┊ Online ┊
┊ gx-srv1 ┊ COMBINED ┊ 172.16.0.2:3366 (PLAIN) ┊ OFFLINE (Auto-eviction: 2025-08-11 11:31:05) ┊
┊ gx-srv2 ┊ COMBINED ┊ 172.16.0.3:3366 (PLAIN) ┊ Online ┊
╰────────────────────────────────────────────────────────────────────────────────────────────────╯
This is normal because the srv1 node can’t communicate anymore with the others and vice-versa so it will be evicted automatically.
Now for the resources :
root@gx-srv2:~# linstor r l
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ ResourceName ┊ Node ┊ Layers ┊ Usage ┊ Conns ┊ State ┊ CreatedOn ┊
╞═══════════════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ linstor_db ┊ gx-backup ┊ DRBD,STORAGE ┊ Unused ┊ Connecting(gx-srv1) ┊ TieBreaker ┊ 2025-08-06 16:12:31 ┊
┊ linstor_db ┊ gx-srv1 ┊ DRBD,STORAGE ┊ ┊ ┊ Unknown ┊ 2025-08-06 16:12:31 ┊
┊ linstor_db ┊ gx-srv2 ┊ DRBD,STORAGE ┊ InUse ┊ Connecting(gx-srv1) ┊ UpToDate ┊ 2025-08-06 16:12:31 ┊
┊ pm-f99db4df ┊ gx-backup ┊ DRBD,STORAGE ┊ Unused ┊ Connecting(gx-srv1) ┊ TieBreaker ┊ 2025-08-11 10:02:29 ┊
┊ pm-f99db4df ┊ gx-srv1 ┊ DRBD,STORAGE ┊ ┊ ┊ Unknown ┊ 2025-08-11 10:02:28 ┊
┊ pm-f99db4df ┊ gx-srv2 ┊ DRBD,STORAGE ┊ Unused ┊ Connecting(gx-srv1) ┊ UpToDate ┊ 2025-08-11 10:02:29 ┊
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────╯
root@gx-srv2:~# linstor v l
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
┊ Resource ┊ Node ┊ StoragePool ┊ VolNr ┊ MinorNr ┊ DeviceName ┊ Allocated ┊ InUse ┊ State ┊ Repl ┊
╞═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡
┊ linstor_db ┊ gx-backup ┊ DfltDisklessStorPool ┊ 0 ┊ 1000 ┊ /dev/drbd1000 ┊ ┊ Unused ┊ TieBreaker ┊ Established(1) ┊
┊ linstor_db ┊ gx-srv1 ┊ pve-sp ┊ 0 ┊ 1000 ┊ None ┊ ┊ ┊ Unknown ┊ ┊
┊ linstor_db ┊ gx-srv2 ┊ pve-sp ┊ 0 ┊ 1000 ┊ /dev/drbd1000 ┊ 23.50 MiB ┊ InUse ┊ UpToDate ┊ Established(1) ┊
┊ pm-f99db4df ┊ gx-backup ┊ DfltDisklessStorPool ┊ 0 ┊ 1004 ┊ /dev/drbd1004 ┊ ┊ Unused ┊ TieBreaker ┊ Established(1) ┊
┊ pm-f99db4df ┊ gx-srv1 ┊ pve-sp ┊ 0 ┊ 1004 ┊ None ┊ ┊ ┊ Unknown ┊ ┊
┊ pm-f99db4df ┊ gx-srv2 ┊ pve-sp ┊ 0 ┊ 1004 ┊ /dev/drbd1004 ┊ 8.51 GiB ┊ Unused ┊ UpToDate ┊ Established(1) ┊
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
drbdadm status
from the 2 PVE-nodes :
root@gx-srv1:~# drbdadm status
linstor_db role:Secondary
disk:UpToDate quorum:no open:no
gx-backup connection:Connecting
gx-srv2 connection:Connecting
pm-f99db4df role:Primary
disk:UpToDate quorum:no open:yes
gx-backup connection:Connecting
gx-srv2 connection:Connecting
root@gx-srv2:~# drbdadm status
linstor_db role:Primary
disk:UpToDate open:yes
gx-backup role:Secondary
peer-disk:Diskless
gx-srv1 connection:Connecting
pm-f99db4df role:Secondary
disk:UpToDate open:no
gx-backup role:Secondary
peer-disk:Diskless
gx-srv1 connection:Connecting
As for now, the test VM is still functionnal on the srv1 node. It can’t be accessed from the internet because the VM gets its IP from the pve-host LAN NIC, that seems to not be a problem, it’s the way it works with our server provider.
Still, the VM is considered down from my point of view because for example, the websites aren’t accessible anymore.
Here is what I would like a big clarification :
As I understand it, the PVE HA doesn’t care if the VM has internet or not, it only cares about the VM
status (is it started, stopped…).
In this case, the VM is started, and the pve-cluster has quorum (not entirely offline because the WAN link is still working), srv1 is not “marked” as offline (probably because of the multiple net links), so it will not try to move the VM to the other node.
From the VM point of view, the drbdstorage is working.
From Linstor DRBD side, srv1’s storage, even if it can’t communicate with other nodes, will continue to work but the other node won’t receive new data because srv1’s LAN NIC is down.
Question 2. if srv1’s LAN NIC is down, srv1 cannot communicate/send new data blocks to the other node, will there be some data loss ? I think that yes. Because there is bound to be data that is still being written even if the VM is no longer accessible from the internet
Also, if srv1 suddenly stops after having the LAN NIC down, RAM will be cleared from the shutdown/reboot and all this data will probably be lost.
Finally, as long as srv1’s LAN NIC is not functional again or srv1 is not restarted/shut down in any way, will the VM never be moved to the other node ?
I hope that all of it is clear enough. Tell me if it’s not, I will try to clarify even more.
Thank you again for your help and advices.
Kind regards,
Edit : I read again and again about PVE’s fencing. From my tests, It seems that if the corosync.conf only has one net link per node and I shutdown the net link, the softdog/ha-manager will initiate a reboot of the node and the resource will be moved to the other node.
If I declare another net link (link0 and link1) and shutdown the link0 again, nothing will happend HA wise.
It seems that for my use case, it’s either the pve-cluster only uses 1 netlink, and Linstor DRBD will be setup the same, or I find a way to use multiple net links in the pve-cluster and multiple links in the linstor-cluster.
I hope that it will not add too much complexity and work well. I’ll take a look at https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-managing_network_interface_cards .