Hi Trav,
I am not sure I did understand clearly your question, but I think you can configure iptables post routing and masquerading rules to make your api cron requests from a single IP.
If you have a local network configured between the 3 servers on 10.10.10.0/24 range + a load balancer, then all servers can have a public IP (eth0) and a local IP (eth1). You just need to update the /etc/network/interfaces file to get the eth1 IP up with static IPs and set the new interfaces up.
Next, you can configure your load balancer in that network to masquerade requests thanks to an iptables rule of that kind :
/etc/network/interfaces
auto eth0
iface eth0 inet static
address PUBLIC_IP
netmask 255.255.255.0
gateway PUBLIC_GW
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eth0 -j MASQUERADE
auto eth1
iface eth1 inet static
address 10.10.10.5
The kernel route of the load balancer server keeps a route going through eth0, but can access the local network. The load balancing might be done using that local IP to reach backend IPs.
On the 3 other backend servers, you can configure the kernel routes to use eth1 device as default interface to go out of the network, using the load balancer local IP as gateway address.
/etc/network/interfaces
auto eth0
...
auto eth1
iface eth1 inet static
address 10.10.10.X
gateway 10.10.10.5 # the load balancer IP
post-up route add default gw 10.10.10.X dev eth1
post-down route del default gw 10.10.10.X dev eth1
In the situation each VM can ping the load balancer other through the local IP, and if the masquerading rule was set successfully, the the load balancer will make all requests directly to the external site using the public IP configured on the Load Balancer.
I believe this was the kind of configuration you were looking for. You should be able to use those informations to design your load balancing using masquerading for backend servers requests.
Hope this could help.
–
rustx