> > Also, I think libprocess should always bind to 0.0.0.0, rather than doing a > hostname lookup and bind to the IP found for the hostname. > LIBPROCESS_ADVERTISE_IP can be used to overwrite the ip address it wants to > advertise to peers. If that's not specified, it'll try to do a hostname > lookup to guess a routable ip. >
I'm +1 for this change. Here is one more argument. A master or agents always have a single unique UPID, which is tied to a specific IP, obtained either via a hostname lookup or set up manually. However, the way IP is obtained influences the way a master or agents binds to network interfaces: a single one in case LIBPROCESS_IP is set and *all* available interfaces otherwise. This leads to confusions like sometimes you can use any interface on the master machine to query a master endpoint, but sometimes not (e.g. if you set --ip master flag), while agents always communicate using one specific interface. Some related links to the code: https://github.com/apache/mesos/blob/c9b707aa86d55714ec419ad10190db22ec38108b/3rdparty/libprocess/src/process.cpp#L976 https://github.com/apache/mesos/blob/c9b707aa86d55714ec419ad10190db22ec38108b/3rdparty/libprocess/src/process.cpp#L899 https://github.com/apache/mesos/blob/c9b707aa86d55714ec419ad10190db22ec38108b/src/master/main.cpp#L233 https://github.com/apache/mesos/blob/c9b707aa86d55714ec419ad10190db22ec38108b/3rdparty/libprocess/src/process.cpp#L3282