This element describes an IP address of an ApplicationInstance. Every ApplicationInstance element has one or more IP addresses. Virtual hosts have both private (internal) and public IP addresses, whereas bare metal hosts normally only have a public IP address, unless you have a custom networking setup.
|An IP address
|0: public IP address
1: private IP address
Public and private IP addresses
An ApplicationInstance will have at least one public IP address. An instance deployed onto a VM will additionally have at least one private IP address (RFC 1918). The reason for this is that a VM has no public IP address defined on the host level, but instead gets its public IP address via NAT. This means that the VM host itself only has knowledge of private IP addresses and not any public ones. The illustration below explains this further:
Our platform has knowledge about all IP addresses involved with a bare metal server or VM. As such it can populate an ApplicationInstance element with all public and private IP addresses related to the host it's deployed on.
IP address binding
If you must bind a specific IP address to your application's socket(s), care must be taken during configuration of your Application's properties.
When configuring an application, you can use platform variables in your application's startup parameters or configuration file(s). If you have a socket that must be bound to a specific IP address, note that you should use the platform variable VARIPV4BINDING or VARIPV6BINDING. These variables contain the correct IP addresses to use for socket binding, depending on whether your application is being deployed onto a bare metal (BM) server or a cloud VM. If it concerns a BM, a public IP address will be used. Otherwise, on a VM, its private IP address will be used, allowing your application to bind to the correct socket.
If you specifically need the public IP addresses of an ApplicationInstance during Application configuration, you can use the platform variable VARIPV4PUBLIC. See the chapter on platform variables for all available platform variables.