Table of Contents |
---|
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
Expand title optional 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 language bash $ 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
Expand title Extra 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:
|
...
Unpack the FIXEdge-x.x.x.tar.gz archive:
Code Block | ||
---|---|---|
| ||
$ tar xvf downloads/FIXEdge-x.x.x.tar.gz -C /home/user/B2BITS |
...
Table of Contents |
---|
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
Expand title optional 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 language bash $ cp downloads/engine.license /home/user/B2BITS/FIXEdge/
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 language bash $ ./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
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.
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ ./B2BITS/FIXEdge/fixicc/bin/fixicc |
Code Block | ||||
---|---|---|---|---|
| ||||
\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.
...
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 | ||
---|---|---|
| ||
Perform these steps instead step #2 of Installation.
Continue Installation from step #3. |
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:
Code Block language bash 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.Code Block telnet <remote host> 8005
...
zip - this package is used for launching FIX Integrated Control Center on Windows PC
Expand title Extra 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:
|
Unpack the FIXEdge-x.x.x.tar.gz archive:
Code Block language bash $ tar xvf downloads/FIXEdge-x.x.x.tar.gz -C /home/user/B2BITS
Put the engine.license file into the FIXEdge's directory:
Code Block language bash $ cp downloads/engine.license /home/user/B2BITS/FIXEdge/
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 language bash $ ./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):
Code Block language bash title Linux $ ./B2BITS/FIXEdge/fixicc/bin/fixicc
Code Block language bash title Windows \fixicc\bin\fixicc.exe
Use option 'Add Server' to add FIXEdge server with the following parameters:
Expand title 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
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
Expand | ||
---|---|---|
| ||
Perform these steps instead step #2 of Installation.
Continue Installation from step #3. |
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.
- 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:
codeCheck if the following notes exist in the log:
Code Block language bash
$ 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:Code Block 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.Code Block telnet <remote host> 8005
FIXICC agent doesn't start
Go to the /home/user/B2BITS/FIXEdge/fixicc-agent/logs directory and open fixicc-agent.
./FIXEdge1/conf/engine.propertiesIf the note is absent find thelog 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 then contact the support team SupportFIXProducts@epam.com.
FIXEdge doesn't start
...
from FIXICC
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:
Code Block 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:
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)
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:
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
failed to map segment from shared object: Operation not permitted |
and a lot of exceptions after this:
Code Block | ||
---|---|---|
| ||
[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:
...
language | perl |
---|---|
title | wrapper.conf |
...
bin directory and run FIXEdge:
Code Block language bash $ 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:
Code Block [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:
Code Block 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:
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)
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:
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 | ||
---|---|---|
| ||
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 language bash 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)
Code Block language bash 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 | ||
---|---|---|
| ||
failed to map segment from shared object: Operation not permitted |
and a lot of exceptions after this:
Code Block | ||
---|---|---|
| ||
[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 | ||||
---|---|---|---|---|
| ||||
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:
Code Block language bash 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
Code Block title wrapper.conf wrapper.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
Code Block title wrapper.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).
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 title wrapper.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. install FIXICC-Agent daemon with superuser permissions:
Code Block language bash cd /home/user/B2BITS/FIXEdge/fixicc-agent/bin/ ./installDaemon.sh