When provisioning the EMS Appliance as a replacement for one or more EMS servers, much of the existing configuration details will need to be migrated. The configuration types that will typically need to be migrated are:
The EMS Appliance uses the JSON configuration style, the "Server JSON Editor" may be used to migrate existing configuration from a running EMS server to JSON format on the EMS Appliance.
To edit a server's JSON configuration select "Edit Server JSON Config..." from the Server menu.
Using the Server JSON Configuration EditorA pair of fault tolerant EMS Appliances includes two primary EMS instances, each primary instance should be configured separately. Each primary instance has a backup instance on it's pair, the primary and secondary share the same JSON configuration file. Note, it is not required to apply changes to the secondary instance, any changes will be replicated to the secondary automatically by the appliance.
For some configuration changes, it is necessary for the server to be restarted for the applied changes to take effect. To restart the EMS instance it is necessary to log on to the EMS Appliance CLI using the tibadm SSH user and issue the "services <instance> restart" command. Note; if the EMS instance fails to start due to a configuration error, it will be necessary to copy a valid backup JSON configuration to the appliance using the tibfile SFTP user, then import the copied configuration using the CLI before restarting. See EMS Appliance Installation Guide for details using the CLI commands.
Some EMS Appliance server properties are preconfigured and should not be changed. The JSON properties listed below are reserved and should not be changed unless instructed to do so by Tibco Support.
EMS Appliance Reserved JSON Properties: |
tibemsd.max_msg_memory |
tibemsd.processor_ids |
tibemsd.msg_swapping |
tibemsd.ft_heartbeat |
tibemsd.ft_activation |
tibemsd.logfile |
tibemsd.multicast |
tibemsd.tibrv_transports |
tibemsd.tibss_transports |
tibemsd.jre_library |
tibemsd.jre_options |
tibemsd.primary_listens[0].* |
tibemsd.secondary_listens[0].* |
stores[$meta.db].* |
stores[$sys.nonfailsafe].* |
stores[$sys.failsafe].* |
This feature will allow the EMS server and its clients to detect network connection failures quickly. When these parameters are absent this feature is disabled, and connections will only close upon the operating system notification, which can in some cases can take 15 minutes, or more, depending on what the operating system's TCP keep alive is set to. These four parameters must all be set, if not, EMS will report an error on startup.
These parameters should be configured for both EMS Appliance server instances. Values are specified in seconds, refer to the EMS User's Guide for more information.
Some example JSON parameters are shown below:
"tibemsd":{
...
"client_heartbeat_server":10,
"client_timeout_server_connection":35,
"server_heartbeat_client":10,
"server_timeout_client_connection":30,
...
},
Use the JSON Config Editor to set these heartbeat parameters; e.g. select "Set client_heartbeat_server..." from the "Set Property" menu.
The EMS Appliance pre-configures several data stores. In addition to the traditional "sys.meta, $sys.failsafe, $sys.unfailsafe stores the Standard Edition also creates three HDD stores for application use, whilst the High Performance Edition has three fusion stores (SSD) and one HDD store.
Ensure you do not change the standard $sys stores, the additional HDD and fusion stores are all set to sync mode for synchronous I/O, if asynchronous is required the mode may be changed to "async".
Additional stores may be created using the JSON Config Editor; select "New File Store..." from the Create menu. Note the following:
Consider the following when migrating several EMS servers to a single FT pair of EMS Appliances.
Firstly, a pair of FT appliances has two primary EMS instances. Ensure to distribute applications evenly fully utilising both instances.
Secondly, follow these guidelines to host several applications and provide segregation within the same EMS instance:
Use the JSON Config Editor to add any additional TCP listen ports; select "New Listen Port..." from the Create menu.
The JSON extract below shows example primary_listens and secondary_listens configuration with an additional listen port on 7223.
"tibemsd":{
...
"primary_listens": [{
"ft_active": true,
"url": "tcp://ems-A-cross.local:7222"
},
{
"url": "tcp://ems-A.local:7222"
},
{
"url": "tcp://ems-A.local:7223"
}],
"secondary_listens": [{
"ft_active": true,
"url": "tcp://ems-B-cross.local:7222"
},
{
"url": "tcp://ems-B.local:7222"
},
{
"url": "tcp://ems-B.local:7223"
}],
...
},
Note; when adding additional ports ensure not to use ports that are used by the appliance pair's other instance, otherwise in the failover case, when both instances are running on the same appliance, there will be a port clash and the EMS instance will fail to start.
It is not possible to directly copy datastore files on to the appliance, if it is necessary to migrate pending queue messages to the appliance use the message copier dialog; select "Copy All Messages.." from the Queues menu.