Prerequisites and System Requirements
- Supported operating systems:
- Linux RHEL/CentOS 7
- The list of packages that should be installed before FIXEdge's installation:
- unzip
libtool-ltdl
To install them use the following commands with superuser permissions:
$ sudo yum install unzip $ sudo yum install libtool-ltdl
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
Steps to Install
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:
$ cd /home/user/ $ mkdir B2BITS
Unpack the FIXEdge-x.x.x.tar.gz archive:
$ tar xvf downloads/FIXEdge-x.x.x.tar.gz -C /home/user/B2BITS
Put the engine.license file into the FIXEdge's directory:
$ cp downloads/engine.license /home/user/B2BITS/FIXEdge/
Install FIXICC Agent daemon with sudo user rights:
$ cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/ # ./installDaemon.sh
Start FIXICC Agent daemon:
$ ./startDaemonNoPriv.sh
It can take up to several minutes to start at the first time:
Launch FIXICC on local (Linux) machine or on Windows PC (use the fixicc-x.x.x.zip package):
Linux$ ./B2BITS/FIXEdge/fixicc/bin/fixicc
Windows\fixicc\bin\fixicc.exe
Use option 'Add Server' to add FIXEdge server with the following parameters:
Type: B2BITS FIX Edge Host: localhost (or host of the machine with FIXEdge) Port: 8005 Username: admin Password: admin
Select 'Connect' option in the context menu of the created server.
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
Troubleshooting
FIXICC doesn't connect to FIXICC agent
Go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.log with any text editor.
Check if the following notes exist in the log:
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
- If the notes are absent then go to the 'FIXICC agent doesn't start' section.
- Select the 'Edit Server' option in the context menu of the FIXEdge server in FIXICC.
- 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.
Make sure that all ports from the 'Prerequisites and system requirements' section are opened and reachable by
telnet
from the remote host.telnet <remote host> 8005
FIXICC agent doesn't start
Go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.log with any text editor.
- 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
Go to the B2BITS/FIXEdge/bin directory and run FIXEdge:
$ cd /home/user/B2BITS/FIXEdge/bin $ ./FixEdge1.run.sh
- 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).
Check if the following note exists in the log and make sure that the path presented below lead to the existing engine.properties file:
[UtilProperties] Properties load successful: /home/user/B2BITS/FIXEdge/fixicc-agent/../FIXEdge1/conf/engine.properties
- 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
- Go to the B2BITS/FIXEdge/FIXEdge1/log directory and open FixEdge.log with any text editor.
- 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
Go to the B2BITS/FIXEdge/FIXEdge1/log directory and open FixEdge.log with any text editor.
Request a new license file from the sales team sales@btobits.com if the FixEdge.log file contains the following error:
ERROR [Engine] 140410078865152 License is expired - components will be stopped! Please contact us at SupportFIXAntenna@epam.com for further assistance.
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:
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)
Restart FIXEdge after updating the license to apply the changes.
Binary files and shell scripts have no "executable" permissions
Set the permissions for the needed files with the following command:
$ 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.
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.
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.To verify the changes run the following command (superuser permissions are required)
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:
failed to map segment from shared object: Operation not permitted
and a lot of exceptions after this:
[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:
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.
Uninstall FIXICC-Agent daemon with superuser permissions:
cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/ ./uninstallDaemon.sh
Uncomment or adjust runlevels init.d directory for RH7 and Ubuntu distros to /etc/rcX.d in FIXEdge/fixicc-agent/conf/wrapper.conf
wrapper.confwrapper.daemon.run_level_dir=/etc/rcX.d
Uncomment and enable default runlevels for automatic startup and stop of the daemon in FIXEdge/fixicc-agent/conf/wrapper.conf
wrapper.confwrapper.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).
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
wrapper.confwrapper.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
If the property is not set FIXICC-agent and FIXEdge will be run under the root user.install FIXICC-Agent daemon with superuser permissions:
cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/ ./installDaemon.sh
Useful links