One idea discussed before is integration with Linstor, which is basically a manager for DRBD-over-LVM.
Although the management engine is in Java, the I/O path is a kernel module so is very fast; it’s basically RAID1 mirroring over the network. It requires DRBD9, but that does mean that each volume can be replicated up to 32 ways.