Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Prerequisites and System Requirements

  1. Supported operating systems:
    • Linux RHEL/CentOS 7
  2. The list of packages that should be installed before FIXEdge's installation: 
    • unzip
    • libtool-ltdl

      Expand
      titleoptional since v. 5.11.0

      java-1.7.0-openjdk

      Code Block
      $ sudo yum install java-1.7.0-openjdk

    To install them use the following commands with superuser permissions:

    Code Block
    languagebash
    $ sudo yum install unzip
    $ sudo yum install libtool-ltdl
    
  3. The list of ports that should be opened:

    • TCP: 8005, 8901, 8902, 8905.
    • UDP: 1234

Deployment of FIXEdge

FIXEdge Components

  • FIXEdge-x.x.x.tar.gz - FIXEdge package
  • engine.license - FIXEdge license file

  • fixicc-x.x.x.zip - this package is used for launching FIX Integrated Control Center on Windows PC

  • Expand
    titleExtra components for FIXEdge prior v. 5.11.3

    fixicc-linux-x.x.x.zip - fixicc-agent for linux

    fixaj2-license.bin - fixicc-agent license

Steps to Install

Info

Expected packages are located in /home/user/downloads.

The installation assumes that FIXEdge will be installed in /home/user/B2BITS under user's home directory.

Create B2BITS directory:

Code Block
languagebash
$ cd /home/user/
$ mkdir B2BITS

...

Unpack the FIXEdge-x.x.x.tar.gz archive:

Code Block
languagebash
$ tar xvf downloads/FIXEdge-x.x.x.tar.gz -C /home/user/B2BITS

...

Table of Contents

Prerequisites and System Requirements

  1. Supported operating systems:
    • Linux RHEL/CentOS 7
  2. The list of packages that should be installed before FIXEdge's installation: 
    • unzip
    • libtool-ltdl

      Expand
      titleoptional since v. 5.11.0

      java-1.7.0-openjdk

      Code Block
      $ sudo yum install java-1.7.0-openjdk

    To install them use the following commands with superuser permissions:

    Code Block
    languagebash
    $ cp downloads/engine.license /home/user/B2BITS/FIXEdge/
  3. Install FIXICC Agent daemon with sudo user rights:

    Code Block
    $ cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/
    # ./installDaemon.sh

    Start FIXICC Agent daemon:

    Code Block
    languagebash
    $ ./startDaemonNoPriv.sh

    It can take up to several minutes to start at the first time:

    Image RemovedImage Removed

  4. Launch FIXICC on local (Linux) machine or on Windows PC (use the
    sudo yum install unzip
    $ sudo yum install libtool-ltdl
    
  5. The list of ports that should be opened:

    • TCP: 8005, 8901, 8902, 8905.
    • UDP: 1234

Deployment of FIXEdge

FIXEdge Components

  • FIXEdge-x.x.x.tar.gz - FIXEdge package
  • engine.license - FIXEdge license file

  • fixicc-x.x.x.

...

Code Block
languagebash
titleLinux
$ ./B2BITS/FIXEdge/fixicc/bin/fixicc
Code Block
languagebash
titleWindows
\fixicc\bin\fixicc.exe

Use option 'Add Server' to add FIXEdge server with the following parameters:

...

Select 'Connect' option in the context menu of the created server.
Image Removed

...

Select 'Start Server' option in the context menu of the created server. 

Please refer to FIXICC User Guide for detailed instructions.

Installation complete

See also:

How to setup secure SSL/TLS connесtion between FIXEdge, FIXICC-agent and FIXICC

How to change FIXICC Agent password

Expand
titleAdditional Installation steps of FIXEdge (prior v.5.8.0.65487)

Perform these steps instead step #2 of Installation.

  1. Put license file (engine.license) into FIXEdge's root dir:
    $ cp downloads/engine.license /home/user/B2BITS/FixEdge/v.5.8.0.x
  2. Unpack fixicc-agent-2.x.x.zip into FIXEdge's root dir:
    $ unzip downloads/fixicc-agent-2.x.x.zip -d /home/user/B2BITS/FixEdge/v.5.8.0.x
  3. Put license file (fixaj2-license.bin) into FIXICC Agent conf dir (fixicc-agent/conf):
    $ cp downloads/fixaj2-license.bin /home/user/B2BITS/FixEdge/v.5.8.0.x/fixicc-agent/conf
  4. Configure paths to FIXEdge files in B2BITS/FixEdge/v.5.8.0.x/fixicc-agent/conf/agent.properties:
    • ServerHome = ..
    • StartFile = bin/FixEdge1.run.sh
    • StopFile = bin/FixEdge1.stop.sh
    • LogUrl = ../FixEdge1/log

Continue Installation from step #3.

Troubleshooting

FIXICC doesn't connect to FIXICC agent

  1. Go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.log with any text editor.

    1. Check if the following notes exist in the log:

      Code Block
      languagebash
      INFO|13743/0|Service FIXICC - Agent Server|14-06-19 20:39:15|Agent is started successfully
      INFO|13743/0|Service FIXICC - Agent Server|14-06-19 20:39:15|Agent started on port: 8005
    2. If the notes are absent then go to the 'FIXICC agent doesn't start' section.
  2. Select the 'Edit Server' option in the context menu of the FIXEdge server in FIXICC. 
  3. Make sure that the value of the 'Port' and 'Host' in the 'Basic Settings' corresponds to the FIXICC Agent port and the host of the FIXEdge machine.
  4. Make sure that all ports from the 'Prerequisites and system requirements' section are opened and reachable by telnet from the remote host.

    Code Block
    telnet <remote host> 8005

...

  • zip - this package is used for launching FIX Integrated Control Center on Windows PC

  • Expand
    titleExtra components for FIXEdge prior v. 5.11.3

...

Import the fixaj2-license.bin license in FIXICC GUI:
Help -> Import license...

Code Block
Type: B2BITS FIX Edge
Host: localhost (or host of the machine with FIXEdge)
Port: 8005
Username: admin
Password: admin
  • fixicc-linux-x.x.x.zip - fixicc-agent for linux

    fixaj2-license.bin - fixicc-agent license

Steps to Install

Info

Expected packages are located in /home/user/downloads.

The installation assumes that FIXEdge will be installed in /home/user/B2BITS under user's home directory.

Create B2BITS directory:

Code Block
languagebash
$ cd /home/user/
$ mkdir B2BITS
  1. Unpack the FIXEdge-x.x.x.tar.gz archive:

    Code Block
    languagebash
    $ tar xvf downloads/FIXEdge-x.x.x.tar.gz -C /home/user/B2BITS
  2. Put the engine.license file into the FIXEdge's directory:

    Code Block
    languagebash
    $ cp downloads/engine.license /home/user/B2BITS/FIXEdge/
  3. Install FIXICC Agent daemon with sudo user rights:

    Code Block
    $ cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/
    # ./installDaemon.sh

    Start FIXICC Agent daemon:

    Code Block
    languagebash
    $ ./startDaemonNoPriv.sh

    It can take up to several minutes to start at the first time:

    Image AddedImage Added

  4. Launch FIXICC on local (Linux) machine or on Windows PC (use the fixicc-x.x.x.zip package):

    Code Block
    languagebash
    titleLinux
    $ ./B2BITS/FIXEdge/fixicc/bin/fixicc
    Code Block
    languagebash
    titleWindows
    \fixicc\bin\fixicc.exe
  5. Use option 'Add Server' to add FIXEdge server with the following parameters:

    Expand
    titleFIXEdge prior v. 5.11.3

    Import the fixaj2-license.bin license in FIXICC GUI:
    Help -> Import license...

    Code Block
    Type: B2BITS FIX Edge
    Host: localhost (or host of the machine with FIXEdge)
    Port: 8005
    Username: admin
    Password: admin
  6. Select 'Connect' option in the context menu of the created server.
    Image Added

  7. Select 'Start Server' option in the context menu of the created server. 

Please refer to FIXICC User Guide for detailed instructions.

Installation complete

See also:

How to setup secure SSL/TLS connесtion between FIXEdge, FIXICC-agent and FIXICC

How to change FIXICC Agent password

Expand
titleAdditional Installation steps of FIXEdge (prior v.5.8.0.65487)

Perform these steps instead step #2 of Installation.

  1. Put license file (engine.license) into FIXEdge's root dir:
    $ cp downloads/engine.license /home/user/B2BITS/FixEdge/v.5.8.0.x
  2. Unpack fixicc-agent-2.x.x.zip into FIXEdge's root dir:
    $ unzip downloads/fixicc-agent-2.x.x.zip -d /home/user/B2BITS/FixEdge/v.5.8.0.x
  3. Put license file (fixaj2-license.bin) into FIXICC Agent conf dir (fixicc-agent/conf):
    $ cp downloads/fixaj2-license.bin /home/user/B2BITS/FixEdge/v.5.8.0.x/fixicc-agent/conf
  4. Configure paths to FIXEdge files in B2BITS/FixEdge/v.5.8.0.x/fixicc-agent/conf/agent.properties:
    • ServerHome = ..
    • StartFile = bin/FixEdge1.run.sh
    • StopFile = bin/FixEdge1.stop.sh
    • LogUrl = ../FixEdge1/log

Continue Installation from step #3.

Troubleshooting

FIXICC doesn't connect to FIXICC agent

  1. Go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.log with any text editor.

  2. Find the messages with [ERROR] and [FATAL] level. These messages are able to help with the understanding of the possible issues. If there is a requirement for technical assistance then contact the support team SupportFIXProducts@epam.com

FIXEdge doesn't start from FIXICC

  1. Go to the B2BITS/FIXEdge/bin directory and run FIXEdge:

    code
    1. Check if the following notes exist in the log:

      Code Block
      languagebash
    $ cd /home/user/B2BITS/FIXEdge/bin
    $ ./FixEdge1.run.sh
  2. If the script was executed successfully then go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.log with any text editor (otherwise go to the 'FIXEdge doesn't start with 'FixEdge1.run.sh' script' section).
  3. Check if the following note exists in the log and make sure that the path presented below lead to the existing engine.properties file:

    Code Block[UtilProperties] Properties load successful:
    1. INFO|13743/0|Service FIXICC - Agent Server|14-06-19 20:39:15|Agent is started successfully
      INFO|13743/0|Service FIXICC - Agent Server|14-06-19 20:39:15|Agent started on port: 8005
    2. If the notes are absent then go to the 'FIXICC agent doesn't start' section.
  4. Select the 'Edit Server' option in the context menu of the FIXEdge server in FIXICC. 
  5. Make sure that the value of the 'Port' and 'Host' in the 'Basic Settings' corresponds to the FIXICC Agent port and the host of the FIXEdge machine.
  6. Make sure that all ports from the 'Prerequisites and system requirements' section are opened and reachable by telnet from the remote host.

    Code Block
    telnet <remote host> 8005

FIXICC agent doesn't start

  1. Go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.

    ./FIXEdge1/conf/engine.propertiesIf the note is absent find the

    log with any text editor.

  2. Find the messages with [ERROR] and [FATAL] level. These messages are able to help with the understanding of the possible issues. If there is a requirement for technical assistance then contact then contact the support team SupportFIXProducts@epam.com. 

FIXEdge doesn't start

...

from FIXICC

  1. Go to the B2BITS/FIXEdge/

    FIXEdge1/log directory and open FixEdge.log with any text editor.
  2. Find the messages with [ERROR] or [FATAL] level. These messages are able to help with understanding of the possible issues. If there is a requirement for technical assistance then contact the support team SupportFIXProducts@epam.com

FIXEdge cannot start with an incorrect or expired license

  1.  Go to the B2BITS/FIXEdge/FIXEdge1/log directory and open FixEdge.log with any text editor.

    1. Request a new license file from the sales team sales@btobits.com if the FixEdge.log file contains the following error:

      Code Block
      ERROR   [Engine]  140410078865152  License is expired - components will be stopped! Please contact us at SupportFIXAntenna@epam.com for further assistance.
    2. Make sure that the license file has a correct 'engine.license' name and placed in the root directory of FIXEdge if the FixEdge.log file contains the following error:

      Code Block
      ERROR   [FL_FixEngine]  140029176809248  Unable to initialize EngineAdaptor. Reason: Please check the FIX Engine's settings: Cannot open the file "/home/user/B2BITS/FIXEdge/bin/../engine.license" (the "LicenseFile" property). No such file or directory. (Error code = 2)
  2. Restart FIXEdge after updating the license to apply the changes.

Binary files and shell scripts have no "executable" permissions

  1.  Set the permissions for the needed files with the following command:

    Code Block
    $ chmod 755 /home/user/B2BITS/FIXEdge/fixicc-agent/bin/*

How to see if a specific port is used

To ensure that port 8005 is not used, using the netstat or the ss command.

Code Block
languagebash
netstat -na | grep :8005
ss -na | grep :8005
lsof -i:8005

If the output is blank, then the port is not currently used.

Open FIXEdge ports using firewalld

In RHEL 7 the tool firewall-cmd is used for updating firewall rules. 

The following commands open ports 8005, 8901, 8902, 8905, 1234. The superuser permissions are required in order to change the system settings.

Code Block
languagebash
sudo firewall-cmd --add-port=8005/tcp --permanent
sudo firewall-cmd --add-port=8901/tcp --permanent
sudo firewall-cmd --add-port=8902/tcp --permanent
sudo firewall-cmd --add-port=8905/tcp --permanent
sudo firewall-cmd --add-port=1234/udp --permanent
sudo firewall-cmd --reload

...

To verify the changes run the following command (superuser permissions are required)

Code Block
languagebash
sudo firewall-cmd --list-ports

FIXICC-agent can't start properly with errors "failed to map segment from shared object: Operation not permitted"

FIXICC doesn't show the current FIXEdge server state. After the fixicc-agent start, there is an issue in the fixicc-agent.log:

Code Block
titlefixicc-agent.log
failed to map segment from shared object: Operation not permitted 

and a lot of exceptions after this:

Code Block
titlefixicc-agent.log
[2021-06-05 21:19:42.620] [ERROR] [pool-3-thread-1] [StatusMonitor] Unexpected error: Could not initialize class com.sun.jna.Memory
java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.Memory
	at oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:119)
	at com.epam.fixicc.agent.utils.monitoring.StatusMonitor$MonitorPIDTask.isProcessExistAndRun(StatusMonitor.java:439)
	at com.epam.fixicc.agent.utils.monitoring.StatusMonitor$MonitorPIDTask.run(StatusMonitor.java:406)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

The root cause:

There are restrictions in the system preventing using /tmp directory set as default for saving java application JNA metadata.

This can happen due to security policies implemented in Linux OS by system administrators.

Solution:

Configure a different path for the JNA temp directory in the wrapper.conf.

For example, the configuration below specifies the fixicc-agent installation dir (<FIXEdge installation dir>/fixicc-agent/tmp) as one for saving temp data: 

...

languageperl
titlewrapper.conf

...

  1. bin directory and run FIXEdge:

    Code Block
    languagebash
    $ cd /home/user/B2BITS/FIXEdge/bin
    $ ./FixEdge1.run.sh
  2. If the script was executed successfully then go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.log with any text editor (otherwise go to the 'FIXEdge doesn't start with 'FixEdge1.run.sh' script' section).
  3. Check if the following note exists in the log and make sure that the path presented below lead to the existing engine.properties file:

    Code Block
    [UtilProperties] Properties load successful: /home/user/B2BITS/FIXEdge/fixicc-agent/../FIXEdge1/conf/engine.properties
  4. If the note is absent find the messages with [ERROR] and [FATAL] level. These messages are able to help with understanding of the possible issues. If there is a requirement for technical assistance then contact the support team SupportFIXProducts@epam.com. 

FIXEdge doesn't start with 'FixEdge1.run.sh' script

  1. Go to the B2BITS/FIXEdge/FIXEdge1/log directory and open FixEdge.log with any text editor.
  2. Find the messages with [ERROR] or [FATAL] level. These messages are able to help with understanding of the possible issues. If there is a requirement for technical assistance then contact the support team SupportFIXProducts@epam.com

FIXEdge cannot start with an incorrect or expired license

  1.  Go to the B2BITS/FIXEdge/FIXEdge1/log directory and open FixEdge.log with any text editor.

    1. Request a new license file from the sales team sales@btobits.com if the FixEdge.log file contains the following error:

      Code Block
      ERROR   [Engine]  140410078865152  License is expired - components will be stopped! Please contact us at SupportFIXAntenna@epam.com for further assistance.
    2. Make sure that the license file has a correct 'engine.license' name and placed in the root directory of FIXEdge if the FixEdge.log file contains the following error:

      Code Block
      ERROR   [FL_FixEngine]  140029176809248  Unable to initialize EngineAdaptor. Reason: Please check the FIX Engine's settings: Cannot open the file "/home/user/B2BITS/FIXEdge/bin/../engine.license" (the "LicenseFile" property). No such file or directory. (Error code = 2)
  2. Restart FIXEdge after updating the license to apply the changes.

Binary files and shell scripts have no "executable" permissions

  1.  Set the permissions for the needed files with the following command:

    Code Block
    $ chmod 755 /home/user/B2BITS/FIXEdge/fixicc-agent/bin/*

How to see if a specific port is used

To ensure that port 8005 is not used, using the netstat or the ss command.

Code Block
languagebash
netstat -na | grep :8005
ss -na | grep :8005
lsof -i:8005

If the output is blank, then the port is not currently used.

Open FIXEdge ports using firewalld

In RHEL 7 the tool firewall-cmd is used for updating firewall rules. 

  1. The following commands open ports 8005, 8901, 8902, 8905, 1234. The superuser permissions are required in order to change the system settings.

    Code Block
    languagebash
    sudo firewall-cmd --add-port=8005/tcp --permanent
    sudo firewall-cmd --add-port=8901/tcp --permanent
    sudo firewall-cmd --add-port=8902/tcp --permanent
    sudo firewall-cmd --add-port=8905/tcp --permanent
    sudo firewall-cmd --add-port=1234/udp --permanent
    sudo firewall-cmd --reload


    The flag  --permanent is used to keep changes after the host reboot.
  2. To verify the changes run the following command (superuser permissions are required)

    Code Block
    languagebash
    sudo firewall-cmd --list-ports

FIXICC-agent can't start properly with errors "failed to map segment from shared object: Operation not permitted"

FIXICC doesn't show the current FIXEdge server state. After the fixicc-agent start, there is an issue in the fixicc-agent.log:

Code Block
titlefixicc-agent.log
failed to map segment from shared object: Operation not permitted 

and a lot of exceptions after this:

Code Block
titlefixicc-agent.log
[2021-06-05 21:19:42.620] [ERROR] [pool-3-thread-1] [StatusMonitor] Unexpected error: Could not initialize class com.sun.jna.Memory
java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.Memory
	at oshi.software.os.linux.LinuxOperatingSystem.getProcess(LinuxOperatingSystem.java:119)
	at com.epam.fixicc.agent.utils.monitoring.StatusMonitor$MonitorPIDTask.isProcessExistAndRun(StatusMonitor.java:439)
	at com.epam.fixicc.agent.utils.monitoring.StatusMonitor$MonitorPIDTask.run(StatusMonitor.java:406)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

The root cause:

There are restrictions in the system preventing using /tmp directory set as default for saving java application JNA metadata.

This can happen due to security policies implemented in Linux OS by system administrators.

Solution:

Configure a different path for the JNA temp directory in the wrapper.conf.

For example, the configuration below specifies the fixicc-agent installation dir (<FIXEdge installation dir>/fixicc-agent/tmp) as one for saving temp data: 

Code Block
languageperl
titlewrapper.conf
wrapper.java.additional.3 = -Djna.tmpdir=${wrapper_home}/tmp

FIXICC-agent doesn't start after reboot

After hosts reboot, there are no running java processes related to FIXICC-agent so FIXICC can't connect to a remote host with installed FIXEdge.

The root cause:

Adding fixicc-agent to Linux startup scripts is disabled by default.

Solution:

Configure boot properties and re-install fixicc-agent according to the following steps.

  1. Uninstall FIXICC-Agent daemon with superuser permissions:

    Code Block
    languagebash
    cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/
    ./uninstallDaemon.sh
  2. Uncomment or adjust runlevels init.d directory for RH7 and Ubuntu distros to /etc/rcX.d in FIXEdge/fixicc-agent/conf/wrapper.conf

    Code Block
    titlewrapper.conf
    wrapper.daemon.run_level_dir=/etc/rcX.d
  3. Uncomment and enable default runlevels for automatic startup and stop of the daemon in FIXEdge/fixicc-agent/conf/wrapper.conf

    Code Block
    titlewrapper.conf
    wrapper.daemon.update_rc = start 20 2 3 4 . start 30 5 . stop 80 0 1 6

    The syntax is similar to the update-rc.d (for Debian distributions) or chkconfig (for other distributions such as Red Hat).

  4. If it is required to run FIXEdge and fixicc-agent application under a specific user then uncomment and specify properties wrapper.app.account in FIXEdge/fixicc-agent/conf/wrapper.conf

    Code Block
    titlewrapper.conf
    wrapper.app.account=<user>

    Where <user> is a Linux user for running FIXEdge applications. Sometimes, it is required to set a user's password with the property wrapper.app.password

    Info
    If the property is not set FIXICC-agent and FIXEdge will be run under the root user.
  5. install FIXICC-Agent daemon with superuser permissions:

    Code Block
    languagebash
    cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/
    ./installDaemon.sh