One of Neuron ESB’s scalability features is the ability to install multiple instances of the Neuron ESB Runtime on a single server. Each runtime instance can be configured as either a 32 or 64-bit process, capable of running side by side. Each instance of the runtime can load an independent Neuron ESB Configuration store (solution). This allows organizations to easily partition business solutions to run on a single server and scale across multiple servers. Read more below about Port Sharing.
However, one of the configuration challenges has always been TCP port configuration at the solution level. Neuron ESB uses TCP ports to communicate between its internal subsystems e.g. Auditing, Control, Configuration, Master and TCP Publishing Services. Remote Neuron ESB Parties also use TCP to connect to the Neuron ESB Server; to retrieve their respective configuration, receive updates and to regularly send reporting information. The TCP Port configuration for a solution can be found on the Ports tab of the Enterprise Zone by navigating to Deployment->Settings->Zones within the Neuron Explorer.
Prior to CU4, if multiple instances were installed on a single server, users would need to ensure that the ports configured for each solution assigned to those instances were unique. For example, if the Bootstrap Service was configured in one solution (instance A) to run on port 50000, then the other solution (instance B) would need to be configured to use a different port. If they weren’t, then one of the solutions would fail to start, reporting a Port in use exception.
The unique port requirement made it more challenging, operationally, to manage the solutions as more runtime instances were installed on a single server. To resolve the need to change and manage port conflicts between solutions we are introducing Port Sharing in the 3.5 CU4 release. Port Sharing can significantly reduce the operational and management overhead when installing and running multiple instances of the Neuron ESB Runtime on the same machine.
Port Sharing is easily enabled by doing 2 things
- Enable and then set for automatic startup the “Net.TCP Port Sharing Service” in the service control manager. Start the service. For more information: https://msdn.microsoft.com/en-us/library/ms733925(v=vs.110).aspx
- Enable the new Port Sharing option located on the Port tab of the Enterprise Zone within the Neuron ESB Explorer as shown below:
Once the Port Sharing option is enabled, the solution must be saved and the runtime instance assigned to it restarted.Organizations using the Neuron ESB Party API directly in their .NET applications will be required to append the name of the runtime instance to the service address url. For example, previously the service address would look similar to following if the runtime instance name was “default64”:
<configuration> <appSettings> <add key="esbZone" value="Enterprise"/> <add key="esbServiceAddress" value="net.tcp://localhost:50000"/> <add key="esbServiceIdentity" value=""/> </appSettings> If Port Sharing is enabled, the service address would now look like this: <configuration> <appSettings> <add key="esbZone" value="Enterprise"/> <add key="esbServiceAddress" value="net.tcp://localhost:50000/default64"/> <add key="esbServiceIdentity" value=""/> </appSettings>
Lastly, the other implication to consider is performance tuning. When Port Sharing is disabled, performance tuning for the Neuron ESB internal subsystems is controlled by modifying the “Internal Service Binding Settings” located on the Server tab of the Enterprise Zone as shown below. These parameters are typically modified to reflect the number of CPUs/Cores balanced against the load being placed on the services.
However, when Port Sharing is enabled, the SMSvcHost.exe, (which hosts the Net.TCP Port Sharing Service) manages the TCP sockets on Neuron ESB’s behalf. This means that performance tuning will be controlled by the binding settings within the SMSvcHost.exe.config file. For more information regarding the configuration of tuning parameters and the creation of the config file: https://msdn.microsoft.com/en-us/library/aa702669(v=vs.110).aspx.
The new Port Sharing option will greatly simplify the creation, deployment and management of multiple Neuron ESB runtime instances and solutions on individual servers!