Exivity can be easily deployed on any system running Windows Server 2016 or later.
In order to deploy a single node Exivity system, be aware of the following system architecture:
All components can be installed on a single node. However, even in a single node deployment, it might be desirable to run the PostgreSQL database and RabbitMQ system on a different system. Apart from installing PostgreSQL from the Exivity installer, the Exivity software is also compatible with any PostreSQL compatible database engine (PostgreSQL on Linux, Amazon RDS, CockroachDB, etc) in order to achieve High Availability or Load Balancing. The same goes for the RabbitMQ component.
After starting the Exivity installer and providing a valid license, ensure to have all components selected and click Next:
Then make sure to provide a valid path for the Exivity program files:
And select a folder for the Exivity home files:
It is recommended to configure a dedicated volume with SSD performance for the Exivity home folder location
Provide a custom administrator username and password, or leave the default:
Then provide the details for the PostgreSQL database. The installer will configure a local PostgreSQL database by default:
When installing PostgreSQL on a single node host, it is recommended to use a dedicated volume for the PostgreSQL database folder (refered to as 'PGDATA')
In case you prefer to use a remote PostgreSQL database system, ensure to deselect 'Install Local PSQL Engine' and provide your PSQL server credentials:
When using a PostgreSQL database on a remote host, the database and user must have been created beforehand. To create the database, ask your database administator to execute a database create statement similar to the one below:
CREATE DATABASE exdb WITH OWNER = exadmin TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;
When you are finished configuring your PostgreSQL database settings, click the Next button to configure RabbitMQ. To use a remote RabbitMQ instance, deselect the 'Install Local RabbitMQ Engine' and provide the appropriate hostname, username, password, vhost and TCP port. In case you require TLS/SSL towards your RabbitMQ instance, select that checkbox as well:
Once the installation is finished, ensure to check 'Start the Exivity Windows Services' to start the Exivity services after clicking Finish.
Follow the below steps to execute an unintended setup using the silent installer flags supported by the setup program.
The below example will silently install Exivity with mostly default settings, except having the Exivity program, home, and PGDATA in separate locations:
The below example will silently install Exivity while using a remote PostgreSQL database:
Exivity can be deployed on a single node, or on multiple nodes for HA and load balancing. This guide walks you through the steps to install some of the Exivity components on different nodes.
The following diagram outlines the various components that can be deployed on separate nodes:
For larger environments, it is recommended to deploy each component on separate virtual machine nodes. As displayed in the diagram above, a typical multi-node deployment will consist of the following elements:
Load Balancer (optional)
An optional but recommended 3rd party load balancer may be used to ensure high availability of the Exivity front end web application.
Exivity Web/UI node(s)
1 or more Exivity Web/UI nodes should be deployed to support the customer facing web application.
Exivity API/Backend node(s)
1 or more Exivity API/Backend nodes should be deployed to support the customer facing web application.
Storage
In multi-node environments, it is advisable to provide a shared storage device (i.e. SMB/NFS) that can be accessed by the backend nodes
PostgreSQL node or cluster
Exivity solution relies on a PostgreSQL version 10 (or higher) compliant database engine.
RabbitMQ node or cluster
Exivity relies on a RabbitMQ version 3.8 (or higher) message broker
The platform is designed in such a way that adding and removing Exivity nodes should be relatively straightforward, which compliments thr potential growth or shrinkage of data processing needs.
Exivity highly recommends deploying your own PostgreSQL database cluster on Linux (or use a managed PSQL service from Azure, AWS or other vendors). To achieve High Availability, any PostgreSQL compatible cluster manager software may be used. At Exivity we have good experiences with pg_auto_failover, which is an open source PostgreSQL on Linux cluster manager (backed by Microsoft) in case you prefer to self-manage the Exivity PostgreSQL database.
When using a PostgreSQL database on a remote host, the database and user must have been created beforehand. To create the database, ask your database administator to execute a database create statement similar to the one below:
CREATE DATABASE exdb WITH OWNER = exadmin TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;
In addtion, make sure to set the following minimal (or higher) PostgreSQL configuration parameters:
shared_buffers = 2GB
work_mem = 32MB
wal_buffers = 64MB
max_prepared_transactions = 16
In case you prefer to install PostgreSQL on Windows, Exivity recommends installingthe PostgreSQL role together with the API/Scheduler backend components during the installation wizard.
Exivity highly recommends deploying your own RabbitMQ instance on Linux (or use a managed RabbitMQ service from AWS, CloudAMQP, or other vendors).
In order to deploy a backend node, the following steps need to be executed manually or automatically thru the use of the silent installer CLI interface.
After starting the installer, click Next and provide a valid license key when asked. After clicking Next again, the component screen will be shown:
Ensure to deselect the Web Service . The API Service component can also be excluded, although in some cases it is recommended to have the API and Backend Services running on the same system. Please consult with Exivity support in case you are not certain what to select.
Click Next to continue. Then provide a folder for the Exivity program files, and afterward select a folder for the Exivity home files.
Provide a custom administrator username and password, or leave the default:
Now specify a remote PostgreSQL database instance, or select to install the PostgreSQL database locally on the API/backend node:
When using a PostgreSQL database on a remote host, the database and user must have been created beforehand. To create the database, ask your database administator to execute a database create statement similar to the one below:
CREATE DATABASE exdb WITH OWNER = exadmin TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;
When you are finished configuring your PostgreSQL database settings, click the Next button to configure RabbitMQ. To use a remote RabbitMQ instance, deselect the 'Install Local RabbitMQ Engine' and provide the appropriate hostname, username, password, vhost and TCP port. In case you require TLS/SSL towards your RabbitMQ instance, select that checkbox as well:
Once the installation is finished, ensure to check 'Start the Exivity Windows Services' to start the Exivity services after clicking Finish.
In order to achieve High Availability for the Exivity API/backend node, it is advisable to leverage the HA capabilities of your hypervisor (i.e. vSphere HA). In case you want to achieve OS level HA, you may consider implementing a Windows Failover Cluster. Please reach out to support@exivity.com / support.exivity.com to learn more about this kind of configuration.
The below example will silently install an Exivity API/Backend node while using a remote PostgreSQL database instance as well as a remote RabbitMQ instance using SSL:
In order to deploy a Web/UI only node (with optional API), the following steps need to be executed manually or automatically thru the use of the silent installer CLI interface.
After starting the installer, click Next and provide a valid license key when asked. After clicking Next again, the component screen will be shown:
Select the Web Service and optionally also the API Service. In some cases, the API can also be deployed on the front-end node, but if you are not certain, install only the Web Service on the front-end node, and the API Service on the backend node.
Click Next to continue. Then choose a folder for the Exivity program files, and afterward select a folder for the Exivity home files.
In the following screen, it will be required to specify the remote host and port of your Exivity API node:
Ensure that the Exivity API host is active and accepting connections. After clicking the Next button, the installer will issue a connection attempt to the Exivity API host
Once the installation is finished, ensure to check 'Start the Exivity Windows Services' to start the Exivity services after clicking Finish.
The below example will silently install an Exivity Web/UI node:
Exivity can be installed in your on-premises data center using the provided installer. You can automatically deploy it using the silent installation command-line options or execute it as an interactive installer.
To install Exivity, you'll need the following:
A system that complies with the Exivity minimal system requirements
The Exivity software installation executable
A valid Exivity license key
If you need help meeting one or more of the above requirements, please get in contact with our support department.
To install Exivity interactively, execute the provided setup executable. Then follow the instructions depending on your intended architecture:
Silent installation is only recommended for experienced users requiring automated deployments
To execute a silent installation the following command line parameters are supported:
<setup>.exe /S
<setup>.exe /S /EXIVITY_PROGRAM_PATH="C:\Program Files\Exivity\program" /EXIVITY_HOME_PATH=D:\Exivity\home /ADMIN_USER=master /ADMIN_PASSWORD=P@ssword
Updating your installation of Exivity to a more recent minor and/or bugfix release (i.e. 3.x.x --> 3.x.x) is straightforward and may be done by installing the new version over the top of the old.
Execute the setup executable. It will detect the installed version of Exivity, and will automatically upgrade when you click Next
When executing <setup>.exe /S
, your existing installation will be automatically upgraded.
When upgrading to a more recent major version (i.e. 2.10.2 --> 3.x.x) consult first the release notes to verify any breaking changes that may apply to your installation.
Exivity comes as standard with an untrusted self-signed SSL certificate. It is therefore highly recommended to replace the default certificate with an official one, signed by your Certificate Authority. To install a signed certificate, follow this procedure:
Download the 32 bit version of openssl.exe from https://slproweb.com/products/Win32OpenSSL.html, and install this tool on the Exivity server
Use the openssl.exe executable to generate a valid key file on the Exivity server by executing the following command:
Run the following command to create a certificate signing request file:
Replace example.com
in the command above with the FQDN of the Exivity server.
You will be asked to enter general information like company name, city, etc. It is important to include the FQDN of the Exivity server when asked for Common Name (e.g. server FQDN or YOUR name) []:
NOTE: when asked, it is required to not provide a password (leave this field empty and press return), otherwise the Exivity application will not be able to use your certificate.
The generated CSR file should be sent to your Certificate Authority. After processing by your CA, you should receive back a .crt file. Rename this file to webcertificate.crt and rename your exivity.key to webcertificate.key and copy it to the directory %EXIVITY_PROGRAM_PATH%\server\nginx\conf
. This should overwrite the existing .key and .crt files.
Restart the Exivity Web Service
Windows service to activate your signed certificate.
In some environments it may be desirable to separate the webserver from the backend components. This can be achieved by installing two separate Exivity instances. One instance could be placed in a DMZ and the second instance would then typically be deployed within a local network as shown in the following diagram:
To achieve this, first install Exivity on the backend node using the standard procedure described here. Afterwards install the Exivity software on the system that should become the User Portal and only install the Web Component. When asked, specify the API Backend hostname and port to finalize the installation.
Make sure to replace HOSTNAME_BACKEND_PORTAL
with the actual hostname or IP address of the system that serves as your Exivity Backend Portal.
When using SAML2 as an authentication mechanism for Single Sign On, and users also connect to a User Portal, take special attention to theX-Forwarded-Host
and X-Forwarded-Port
in the Nginx webproxy.conf. These are required when the User Portal is served on a different port (i.e. 443) compared to the backend portal API (i.e. 8002). When this is the case, the forwarded port needs to match the port number of the user portal.
After completing your installation, you should now be able to access your Exivity User Portal.
In cases where Exivity instance requires internet connectivity (i.e. to obtain Azure or AWS consumption data), and your network infrastructure requires use of a proxy server, it is necessary to configure a system environment variable.
Right click on This PC in an Explorer Window and click on Properties:
Then go to Advanced System Settings, then click the Environment Variables button:
Now add a new System Variable with the name ALL_PROXY and fill in the address of your proxy server as the value for this variable:
In case you do not want to use the proxy for certain address or domains, it is also possible to add an additional variable NO_PROXY:
If the name in the noproxy list has a leading period, it is a domain match against the provided host name. This way ".example.com" will switch off proxy use for both "www.example.com" as well as for "foo.example.com".
After confirming the change, make sure to restart both the Exivity Windows Services.
By default, Exivity API has a limit of 2048kb for filesize uploading, should you require to increase it, please modify the file located in %EXIVITY_PROGRAM_PATH%\server\php\php.ini
Adjust the variables post_max_size and upload_max_filesize to your desired value.
In order to generate PDF documents through the Exivity API, the Chrome browser needs to be installed and the directory where chrome.exe
can be found should be made available in the systems Path
environmental variable. Read how to add a directory to the Path environmental variable.
Depending on your installation method chrome.exe
should be installed in one of those directories:
C:\Program Files\Google\Chrome\Application
C:\Users\{username}\AppData\Local\Google\Chrome\Application
To prevent server overload, generating PDF reports through the API is limited to take 1 minute. Very large reports (e.g. consolidated reports with instance details) may take more time and result in an API error. If that's the case, try generating reports for single accounts or without instance details.
Restart the Exivity API service after making these changes.
Parameter
Description
Default
/EXIVITY_PROGRAM_PATH
Path to Exivity program files
C:\Exivity\program
/EXIVITY_HOME_PATH
Path to Exivity home files
C:\Exiivty\home
/ADMIN_USER
Exivity admin user
admin
/ADMIN_PASSWORD
Exivity admin password
exivity
/PGUSER
PostgreSQL user
postgres
/PGPASSWORD
PostgreSQL password
randomized
/PGHOST
Hostname for PostgreSQL server
localhost
/PGPORT
Port of PostgreSQL server
5432
/PGSSLMODE
Disable or require PostgreSQL SSL communication
disable
/PGDATABASE
Exivity database on PostgreSQL server
exdb
/PGDATA
Location of PostgreSQL data files (only used when installing local database instance)
<exivity_home>\system\pgdata
/PSQL_INSTALLED
1 (install locally) or 0 (do not install)
1
/PROXIMITYHOST
Remote API hostname (required when installing Web component only)
localhost
/PROXIMITYPORT
Remote API port (required when installing Web component only)
8002
/API_INSTALLED
1 (install locally) or 0 (do not install)
1
/SCHEDULER_INSTALLED
1 (install locally) or 0 (do not install)
1
/BACKEND_INSTALLED
1 (install locally) or 0 (do not install)
1
/JOBMAN_INSTALLED
1 (install locally) or 0 (do not install)
1
/MQ_INSTALLED
1 (install locally) or 0 (do not install)
1
/MQHOST
RabbitMQ hostname
localhost
/MQPORT
RabbitMQ port number
5672
/MQSSL
MQ SSL/TLS enabled (1) or disabled (0)
0
/MQUSER
RabbitMQ user account
guest
/MQPASSWORD
RabbitMQ password
guest
/MQVHOST
RabbitMQ virtual host
/