Configuration Options to Use Specific Ports and Network Interfaces

TIBCO ActiveSpaces leverages TIBCO FTL internally to aid in connecting the different TIBCO ActiveSpaces processes so that they can communicate over the network. In certain cases, it may be desirable to specify additional configuration information when initially setting up the data grid processes to help influence what ports and network interfaces should be chosen when the processes are started.

For example, a TIBCO ActiveSpaces client application may need to connect to a TIBCO ActiveSpaces tibdgproxy that is running on a server which has a firewall. In that case, a network administrator may need to open a specific port or ports in the firewall so that the TCP connections can be made to the tibdgproxy running behind the firewall. After the tibdgproxy is started, it reads from its data grid configuration what port it should bind to when listening for incoming TCP connections to ensure that traffic can pass through the firewall.

Configure Ports

Regarding ports, the configuration option proxy_client_listen_port can be specified when creating a grid or proxy. This is the port that a proxy binds to when listening for incoming TCP connections. When specified at the grid level, all proxies inherit this value and listen for clients on this port.

For example:
grid create copyset_size=1 proxy_client_listen_port=8890
proxy create p1

This will work as long as there is only one proxy running on each machine. If two proxies are started on the same machine and both try to bind to port 8890, the second proxy will fail to start due to an error. To avoid this, override the configuration option at the proxy level when creating a specific proxy to override the listen port specified at the grid level.

For example, in the following grid configuration, p1 will inherit and listen on port 8890, p2 will override its listen port with the specified port 8891, and both proxies will be able to run on the same machine:
proxy create proxy_client_listen_port=8891 p2

Configure Network Interfaces

Regarding network interfaces, a similar concept applies to the configuration option proxy_client_listen_subnet_mask. This can be specified at both the grid and proxy level to control which network interface the proxy binds to when listening for connections from clients. If a machine has multiple network interfaces, a specific subnet mask can be provided in a standard CIDR notation to control which interface should be selected. When specified at the grid level, all proxies inherit this value and attempt to use the specified subnet mask.

For example, in the following grid configuration, all proxies will attempt to use the subnet mask 10.0.1.0/24:
grid create copyset_size=1 proxy_client_listen_subnet_mask=10.0.1.0/24
proxy create p3

If there is a need to override this value for a specific proxy, it can also be specified at the proxy level. The options for proxy ports and proxy listen subnet masks can be combined at both the grid and proxy level.

For example:
proxy create proxy_client_listen_subnet_mask=10.0.2.0/24 p4
proxy create proxy_client_listen_subnet_mask=10.0.2.0/24 proxy_client_listen_port=8892 p5

Configure Internal Subnet Masks

For internal communication between the TIBCO ActiveSpaces server processes (tibdgproxy, tibdgnode, and tibdgkeeper), it may also be desirable to specify the subnet mask to be used for this internal communication between server processes by using the configuration option grid_internal_subnet_mask. This option is different than the other configuration options described because it does not influence the client to proxy communication. It also can only be specified at the grid level.

For example:
grid create copyset_size=1 grid_internal_subnet_mask=10.0.10.0/24

Setting this configuration option will cause all communication between proxy, node, and state keeper processes to occur on the specified interface. This option can also be combined with the two proxy configuration options proxy_client_listen_subnet_mask and proxy_client_listen_port.

The following is an example of specifying all 3 options at the grid level:
grid create copyset_size=1 proxy_client_listen_subnet_mask=10.0.1.0/24 proxy_client_listen_port=8890 grid_internal_subnet_mask=10.0.10.0/24