Если не требуется, чтобы один и тот же пользователей попадал на одну и ту же виртуалку, то для RDP вполне достаточно балансировки на уровне TCP-соединения. Например, в 3proxy
auth iponly
allow *
parent 333 tcp 1.1.1.2 3389
parent 333 tcp 1.1.1.3 3389
parent 334 tcp 1.1.1.4 3389
tcppm -i1.1.1.1 3389 2.2.2.2 3389
будет раскидывать соединения, приходящие на 1.1.1.1:3389 по 3м хостам с вероятностью 1/3 (порт 3389 на 1.1.1.1 должен быть свободен, если не свободен можно использовать любой альтернативный порт в tcppm).