<div dir="ltr">I'm on the fence here, I see a number of advantages to each:<div><br></div><div>Single HAProxy process per listener:</div><div><ul><li>Failure isolation</li><li>TLS Performance -- for non TLS services HAProxy is IO bound, and there is no reason to run it across multiple CPU cores, but with HAProxy terminating TLS there is an increased potential of a DoS with a large number of incoming TLS handshakes.</li>
<li>Reduced impact of reconfiguration -- while there is very little impact when reloading the configuration since HAProxy hands off the listener sockets to the new instance and the old instance continues to handle those connections, with a more complex configuration it is more likely to affect services on other listeners.</li>
</ul></div><div>Multiple listeners on a single HAProxy instance:</div><div><ul><li>Enables sharing pools between listeners -- this would reduce keep health monitor traffic, and pipe-lining requests from multiple listeners is possible</li>
<li>Reduced resource usage -- we should preform the benchmarks and quantify this</li><li>Simplified stats/log aggregation</li><li>Simplified Octavia instances -- I think each Octavia instance only running a single HAProxy process is a win, its easier to monitor and upstart/systemd/init only needs to start a single process.</li>
</ul><div><br></div></div><div>Dustin Lundquist</div></div>