The real-server port check sits outside the virtual-server loop, so only the last virtual server is validated.
Location
src/conf_mode/high-availability.py:159-174
Problem
The for rs, rs_config in vs_config['real_server'] loop sits at the outer indentation, so only the last virtual server is validated.
Impact
keepalived receives real_server <ip> { with no port.