Installing FIXEdge RPM package on Linux (RHEL 7+)

Installing FIXEdge RPM package on Linux (RHEL 7+)

Introduction

FIXEdge can be installed using RPM packages on Red Hat Enterprise Linux 7 and newer and binary compatible distributions. RPM package features support for controlling FIXEdge via systemd and running under a constrained user account.

Installing FIXEdge

  1. Add the repository file

sudo tee -a /etc/yum.repos.d/fixedge.repo << EOF [fixedge] name=fixedge baseurl=https://USERNAME:PASSWORD@packages.b2bits.com/fixedge skip_if_unavailable=true deltarpm=0 sslverify=false gpgcheck=0 EOF

Replace the USERNAME and PASSWORD with ones received from B2BITS sales.

2. Clear the repository cache

sudo yum clean all

3. Install the package

sudo yum -y install fixedge fixicc-agent

If you need to install the latest version of the package that is in the repository, just specify the package name 'fixedge'. If you need to install an earlier version you must specify the version with the name of the package, e.g. 'fixedge-6.11.0-1664.el7.x86_64'. You can also use the 'yum provides fixedge' command to find out what package versions are in the repository.

$ yum provides fixedge Loaded plugins: fastestmirror Determining fastest mirrors * base: mirror.datacenter.by * extras: mirror.datacenter.by * updates: mirror.datacenter.by fixedge 8/8 fixedge-6.11.0-411.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge fixedge-6.11.2-440.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge fixedge-6.11.3-441.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge fixedge-6.11.4-450.el7.x86_64 : FIXEdge - smart FIX message router Repo : fixedge

4. Add a user to the 'fixedge' group

sudo usermod -aG fixedge $(whoami)

5. Copy engine.license to /etc/fixedge

sudo cp engine.license /etc/fixedge/

6. Start the 'fixedge' service

systemctl start fixedge

7. Check the status of the service

$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2021-05-01 01:04:24 UTC; 21min ago Main PID: 26149 (FIXEdge) Tasks: 13 Memory: 49.0M CGroup: /system.slice/fixedge.service └─26149 /usr/lib64/fixedge/6.11.0/FIXEdge /etc/fixedge/FIXEdge.properties

Installation is completed.

Running FIXEdge Service

The package provides the systemd units to control the FIXEdge and FIXICC Agent services.

The services runs as a dedicated fixedge user. The following commands can be used to control the service:

Action

Command

Allowed to

Action

Command

Allowed to

Start FIXEdge

systemctl start fixedge

members of the fixedge  group

Stop FIXEdge

systemctl stop fixedge

members of the fixedge  group

Restart FIXEdge

systemctl restart fixedge

members of the fixedge  group

View status of FIXEdge

systemctl status fixedge

members of the fixedge  group

Enable FIXEdge start at system boot

systemctl enable fixedge

members of the fixedge  group

Disable FIXEdge start at system boot

systemctl disable fixedge

members of the fixedge  group

Start FIXICC-Agent

systemctl start fixicc-agent

members of the fixedge  group

Stop FIXICC-Agent

systemctl stop fixicc-agent

members of the fixedge  group

Restart FIXICC-Agent

systemctl restart fixicc-agent

members of the fixedge  group

View status of FIXICC-Agent

systemctl status fixicc-agent

members of the fixedge  group

Enable FIXICC-Agent start at system boot

systemctl enable fixicc-agent

members of the fixedge  group

Disable FIXICC-Agent start at system boot

systemctl disable fixicc-agent

members of the fixedge  group

On RHEL systems, a member of the fixedge group can control the services, for example:

[max@localhost ~]$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/fixedge.service.d └─override.conf Active: inactive (dead) Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Class path contains multiple SLF4J bindings. Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Found binding in [jar:file:/usr/lib64/fixedge/6.11.6/jms-ta/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Found binding in [jar:file:/opt/apache-activemq/activemq-all-5.16.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. Dec 13 07:54:19 localhost.localdomain bash[588972]: SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] Dec 13 08:43:14 localhost.localdomain systemd[1]: Stopping FIXEdge - smart FIX message router... Dec 13 08:43:15 localhost.localdomain bash[588972]: The signal waiter has been started. Dec 13 08:43:15 localhost.localdomain bash[588972]: The signal 15 was detected. Dec 13 08:43:15 localhost.localdomain systemd[1]: fixedge.service: Succeeded. Dec 13 08:43:15 localhost.localdomain systemd[1]: Stopped FIXEdge - smart FIX message router. [max@localhost ~]$ systemctl start fixedge [max@localhost ~]$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/fixedge.service.d └─override.conf Active: active (running) since Wed 2021-12-15 04:30:02 EST; 1s ago Main PID: 916904 (FIXEdge) Tasks: 23 (limit: 48835) Memory: 62.5M CGroup: /system.slice/fixedge.service └─916904 /usr/lib64/fixedge/6.11.6/FIXEdge /etc/fixedge/FIXEdge.properties Dec 15 04:30:02 localhost.localdomain systemd[1]: Started FIXEdge - smart FIX message router. Dec 15 04:30:02 localhost.localdomain bash[916904]: FIXEdge 6.11.6.r463 (engine 2.28.0.r463) [max@localhost ~]$ systemctl stop fixedge [max@localhost ~]$ systemctl status fixedge ● fixedge.service - FIXEdge - smart FIX message router Loaded: loaded (/usr/lib/systemd/system/fixedge.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/fixedge.service.d └─override.conf Active: inactive (dead) Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Class path contains multiple SLF4J bindings. Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Found binding in [jar:file:/usr/lib64/fixedge/6.11.6/jms-ta/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Found binding in [jar:file:/opt/apache-activemq/activemq-all-5.16.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. Dec 15 04:30:05 localhost.localdomain bash[916904]: SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] Dec 15 04:30:14 localhost.localdomain systemd[1]: Stopping FIXEdge - smart FIX message router... Dec 15 04:30:16 localhost.localdomain bash[916904]: The signal waiter has been started. Dec 15 04:30:16 localhost.localdomain bash[916904]: The signal 15 was detected. Dec 15 04:30:16 localhost.localdomain systemd[1]: fixedge.service: Succeeded. Dec 15 04:30:16 localhost.localdomain systemd[1]: Stopped FIXEdge - smart FIX message router.

Upgrading FIXedge

If there is a newer version of the package in the repository, you can update using the following command:

sudo yum -y update fixedge fixicc-agent

You can update to a specific version if it is higher than the current one, e.g.:

$ rpm -qi fixedge | egrep '(Version|Release)' Version : 6.11.3 Release : 441.el7 $ yum provides fixedge | grep 450 fixedge-6.11.4-450.el7.x86_64 : FIXEdge - smart FIX message router $ sudo yum update fixedge-6.11.4-450.el7.x86_64

Downgrading FIXedge

You can also downgrade the package as needed by using the following command:

sudo yum -y downgrade fixedge-6.11.3-441.el7.x86_64

To find out which version you can downgrade a package to, use the yum provides command as described in the "Installing FIXEdge C++ section".

Removing FIXedge

To remove a package, you need the following: