Am following up with our JDBC person to see if we can specify the source address for requests.
It's one of those things where, assuming we can, the hard part is deciding how to expose that in the properties file without making things more complicated than they need to be. :)
Thanks for thr revert.
I agree. It will add a lot of complexity for e.g. if the SOURCE is set to VIP and that node is not the master, then what will EFM do? However, a clear mentioning, that for all requests from the master, the SOURCE is always the $HOSTNAME will be very helpful.
Meanwhile, at this point, does it really use the VIP as SOURCE for all requests OR is it a mix of VIP & $HOSTNAME or something else?
$HOSTNAME will typically translate to the HOST (physical) IP on the interface/NIC on which the VIP will get plumbed as a virtual IP.
If someone set the source address to something that doesn't exist on the machine (doesn't matter if it's the VIP or not), then I'd imagine EFM should fail to start. Probably, to be safe, EFM should check to see if the address specified is the VIP and also fail to start since the VIP is designed to move around. Or, we could simply not expose an address prop and use the bind.address all the time. Would have to see if there's a use case people want for specifying it as something else.
To your other question, I don't know how Java is picking the source address when run, but I bet it's not random. Arbitrary like interfaces by alphabetical order or something, but I imagine it's repeatable at least.
Am filing something in the EFM backlog now about it so we get a fix at some point.
It would be good to know which is used when. So including it in the documentation will be helpful.
Scenario: Need to specify the IPs that need to be opened in the firewall between the master and the standby.