FIXEdge Java 1.11.0 and Later with FIXICC H2: Deployment Guide
- 1 PostgreSQL installation and configuration
- 2 Consul installation and configuration
- 3 FIXICC-H2 installation and configuration
- 4 FEJ installation (rpm or deb package) and configuration
- 5 FEJ installation (zip) and configuration
- 6 Prometheus installation and configuration
- 7 FIXEye Agent installation and configuration
PostgreSQL installation and configuration
NOTE!
- in case you already have postgres setup in your network, you can skip this part
- installation should be performed under the root user.
To install PostgreSQL
On Centos: install postgresql-server from yum repository
yum install postgresql postgresql-serverThe initialize a new PostgreSQL installation
postgresql-setup initdbOn Ubuntu: install postgresql-server from apt repository
apt install postgresql postgresql-contrib
By default PostgreSQL server is only accessible via Unix Domain Sockets or loopback IP interface (127.0.0.1) to the local users, the users are authenticated by the operating system, i.e. the OS user postgres can connect as PostreSQL user postgres without any additional authentication from the PostgreSQL server side. To allow PgAdmin4 and FIXICC H2 to work we need to enable access via a network.
To enable network access to PostgreSQL server edit file /var/lib/pgsql/data/pg_hba.conf (on Centos) or /etc/postgresql/${PostgreSQLVersion}/main/pg_hba.conf (on Ubuntu, please replace ${PostgreSQLVersion} with actual version) and add the following lines:
host all all 0.0.0.0/0 md5 host all all ::0/0 md5It allows all users to connect from any host via TCP or SSL socket using hashed passwords.
Remove lines that enable ident connection to localhost:
# IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 identTo enable listening of all network interfaces edit file /var/lib/pgsql/data/postgresql.conf (on Centos) or /etc/postgresql/${PostgreSQLVersion}/main/postgresql.conf (on Ubuntu, please replace ${PostgreSQLVersion} with actual version), replace line:
# listen_addresses = 'localhost'with
listen_addresses = '*'enable and start postgresql server
systemctl enable --now postgresql systemctl status postgresql
Consul installation and configuration
To install Consul on Centos, apply the following actions:
- add HashiCorp repository:
yum install -y yum-utils yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo- install consul from yum repository
yum -y install consulIn order to install Consul on Ubuntu, follow the steps from https://learn.hashicorp.com/tutorials/consul/deployment-guide?in=consul/production-deploy#configure-consul-agents
generate Consul CA and server certificate and private key
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout consul.key -out consul.crt -subj '/C=RU/L=Saratov/O=EPAM/OU=BFIX/CN=fixicch2.consul'configure consul as follows (/etc/consul.d/consul.json)
{ "bind_addr": "{{GetInterfaceIP \"ens5\"}}", "bootstrap": true, "server": true, "addresses": { "https": "0.0.0.0" }, "ports": { "http": -1, "https": 8501 }, "auto_encrypt": { "allow_tls": true, "tls": true }, "client_addr": "0.0.0.0", "ui": true, "data_dir": "/var/lib/consul", "log_level": "INFO", "disable_update_check": true, "disable_anonymous_signature": true, "verify_server_hostname": false, "cert_file": "/etc/consul.d/consul.crt", "key_file": "/etc/consul.d/consul.key", "auto_encrypt": { "allow_tls": true } }remove or backup /etc/consul.d/consul.hcl
remove ConditionFileNotEmpty in /usr/lib/systemd/system/consul.service
ConditionFileNotEmpty=/etc/consul.d/consul.hclchange ownership and permissions for /var/lib/consul and /etc/consul.d directories
chown -R consul:consul /var/lib/consul chmod -R 775 /var/lib/consul chown -R consul:consul /etc/consul.denable and start consul server:
systemctl enable --now consul systemctl start consulconsul UI should be available on https://server_ip:8501/ui/
FIXICC-H2 installation and configuration
download latest package from https://clientspace.b2bits.com/product-58 (e.g., fixicc-h2-21Q4.1-84.el7.x86_64.rpm or fixicc-h2-21Q4.1-84.el7.x86_64.deb)
install rpm package fixicc-h2-21Q4.1-84.el7.x86_64.rpm on Centos
rpm -i fixicc-h2-21Q4.1-84.el7.x86_64.rpmor install deb package on Ubuntu
sudo dpkg -i fixicc-h2-21Q4.1-84.el7.x86_64.debcreate a user and a database for FIXICC H2 in postgresql
Postgres version <= 14
CREATE USER <DBUSER> WITH CREATEDB PASSWORD '<DBPASSWORD>'; CREATE DATABASE <DBNAME>; GRANT ALL PRIVILEGES ON DATABASE <DBNAME> TO <DBUSER>;Postgres version >= 15
CREATE USER <DBUSER> WITH CREATEDB PASSWORD '<DBPASSWORD>'; CREATE DATABASE <DBNAME>; GRANT ALL PRIVILEGES ON DATABASE <DBNAME> TO <DBUSER>; \connect <DBNAME> GRANT ALL ON SCHEMA public TO <DBUSER>;generate keystore for FIXICC-H2
cd /etc/fixicc-h2/ keytool -genkey -noprompt -alias jetty -keyalg RSA -dname 'CN=admin, OU=EPM-BFIX, O=EPAM Systems, L=Unknown, S=Unknown, C=Unknown' -keystore keystore.jks -storepass <STORE_PASSWORD> -keypass <KEY_PASSWORD> -ext 'SAN=IP:127.0.0.1'Edit /etc/fixicc-h2/local.app.properties and set properties as follows
cuba.rest.anonymousEnabled = true cuba.anonymousLogin = anonymous cuba.dbmsType = postgres cuba.dataSourceProvider = application cuba.dataSource.username = <DBUSERNAME> cuba.dataSource.password = <DBPASSWORD> cuba.dataSource.dbName = <DBNAME> cuba.dataSource.host = 127.0.0.1 cuba.dataSource.port = 5432 fixicch2.consul.encrypted_connection = true fixicch2.consul.host = 127.0.0.1 fixicch2.consul.port = 8501 fixicch2.consul.insecure_connection_enabled = true fixicch2.fixServerType = all fixicch2.consul.check.tls_skip_verify=true fixicch2.secure_http_port = 8443 fixicch2.key_store_path = keystore.jks fixicch2.trust_store_path = keystore.jks fixicch2.prometheus.host = 127.0.0.1edit /usr/lib/systemd/system/fixicc-h2.service as follows
[Unit] Description=FIXICC-H2 After=syslog.target network.target [Service] Type=simple User=<USER> Group=<GROUP> SuccessExitStatus=143 Environment=FIXICC_H2_KEY_STORE_PASSWORD=<PASSWORD> FIXICC_H2_KEY_MANAGER_PASSWORD=<PASSWORD> FIXICC_H2_TRUST_STORE_PASSWORD=<PASSWORD> ExecStart=/bin/bash -c '/usr/bin/java -Dapp.home=/etc/fixicc-h2/ -Dfixicch2.secure_http_port=8443 -Dfixicch2.key_store_path=/etc/fixicc-h2/keystore.jks -Dfixicch2.trust_store_path=/etc/fixicc-h2/keystore.jks -jar /usr/lib64/fixicc-h2/21Q4.1/app.jar' ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.targetenable and start fixicc-h2 server:
systemctl enable --now fixicc-h2 systemctl start fixicc-h2FIXICC-H2 UI should be available on https://server_ip:8443/app/