• Seth Hoenig's avatar
    consul/connect: fix bug causing high cpu with multiple connect sidecars in group · ee7d32fb
    Seth Hoenig authored
    This PR fixes a bug where the underlying Envoy process of a Connect gateway
    would consume a full core of CPU if there is more than one sidecar or gateway
    in a group. The utilization was being caused by Consul injecting an envoy_ready_listener
    on 127.0.0.1:8443, of which only one of the Envoys would be able to bind to.
    The others would spin in a hot loop trying to bind the listener.
    
    As a workaround, we now specify -address during the Envoy bootstrap config
    step, which is how Consul maps this ready listener. Because there is already
    the envoy_admin_listener, and we need to continue supporting running gateways
    in host networking mode, and in those case we want to use the same port
    value coming from the service.port field, we now bind the admin listener to
    the 127.0.0.2 loop-back interface, and the ready listener takes 127.0.0.1.
    
    This shouldn't make a difference in the 99.999% use case where envoy is
    being run in its official d...
    ee7d32fb