That’s the vibe we’re going for without being too opinionated. We have a long history of using and supporting Pacemaker at LINBIT. It’s a great project and still use and support it, but for simpler HA clusters or when users don’t have fencing devices but do have DRBD’s quorum available, DRBD Reactor is our preferred cluster resource manager.
If you’re trying to configure RDMA as the transport for DRBD’s replication, you would configure this on the LINSTOR resource-group
you’re using to create your NVMe-oF targets:
linstor resource-group drbd-options --transport rdma <resource-group-name>
IF you’re trying to configure RDMA as the transport for NVMe-oF initiators accessing the targets, then you’ll have to manually edit the DRBD Reactor configurations that LINSTOR Gateway creates, because I don’t think LINSTOR Gateway allows you to configure transport types (yet).
For example, you’ve created an NVMe-oF target named example
using LINSTOR Gateway, like this:
linstor-gateway nvme create linbit:nvme:example 192.168.222.19/24 2G
On the DRBD Reactor hosts, you will see TOML configurations that look like this:
[root@linstor-sat-1 ~]# cat /etc/drbd-reactor.d/linstor-gateway-nvmeof-example.toml
# Generated by LINSTOR Gateway at 2025-09-19 20:41:33.927884708 +0000 UTC m=+298.631107825
# DO NOT MODIFY!
[[promoter]]
[promoter.metadata]
linstor-gateway-schema-version = 1
[promoter.resources]
[promoter.resources.example]
on-drbd-demote-failure = "reboot-immediate"
runner = "systemd"
start = [
"ocf:heartbeat:portblock portblock action=block ip=192.168.222.19 portno=4420 protocol=tcp",
"ocf:heartbeat:Filesystem fs_cluster_private device=/dev/drbd/by-res/example/0 directory=/srv/ha/internal/example fstype=ext4 run_fsck=no",
"ocf:heartbeat:IPaddr2 service_ip cidr_netmask=24 ip=192.168.222.19",
"ocf:heartbeat:nvmet-subsystem subsys nqn=linbit:nvme:example serial=b407226372444776",
"ocf:heartbeat:nvmet-namespace ns_1 backing_path=/dev/drbd/by-res/example/1 namespace_id=1 nguid=eebdf3eb-546a-55a6-bb63-b24a7d5aabaa nqn=linbit:nvme:example uuid=eebdf3eb-546a-55a6-bb63-b24a7d5aabaa",
"ocf:heartbeat:nvmet-port port addr=192.168.222.19 nqns=linbit:nvme:example type=tcp",
"ocf:heartbeat:portblock portunblock action=unblock ip=192.168.222.19 portno=4420 protocol=tcp tickle_dir=/srv/ha/internal/example",
]
stop-services-on-exit = true
target-as = "Requires"
Editing those configuration files on the DRBD Reactor nodes - which may or may not be a great idea (I’ve not tried to edit a LINSTOR Gateway created DRBD Reactor configurations before) - so that the nvmet-port
resource uses type=rdma
and then the portblock
resources so they reference UDP/4791
(for RoCEv2), might work for you here.
Would be interesting to hear if you can get this stack working or if you’ll need to stand up an HA target using more manual configurations. Either way, a lot of the manual configurations you might need for the latter can be deduced from what you have configured with LINSTOR Gateway.