The agent part is less documented, but its designed similar to L3 and DHCP agents. The agent polls LB plugin via RPC and retrieves the full configuration. If there are changes (new objects in PENDING_CREATE state, or updated in PENDING_UPDATE) they are applied to HAProxy. Every pool/vip results in 1 haproxy process running on the same host as agent. Haproxy is executed in separate IP namespace, thus all load balancers isolated from each other from OS and network perspectives. There is exactly 1 haproxy per pool/vip.