Enable HA using a load balancer.
To ensure high availability for applications, a load balancer can be configured between different infrastructure components, including multiple instances of SKSO web applications and SKSO and FIDO servers. The load balancer determines which target server is available to receive application connections, and distributes application requests to the appropriate one.
SKSO has been tested with the open-source HAProxy load balancer, part of the standard Linux distribution. It is conceivable that SKSO will work with other load balancers; please contact StrongKey to discuss any requirements.
StrongKey, in particular, has tested this HA proxy configuration with the following Linux distrbutions:
INSTALLATION
To install and configure HAProxy for use with the SKSO cluster, follow the steps below:
shell> yum install haproxy
shell> openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/skso.key -out /etc/pki/tls/certs/skso.crt -subj "/CN=haproxy.strongkey.com"
shell> cat /etc/pki/tls/certs/skso.crt /etc/pki/tls/private/skso.key > /etc/pki/tls/certs/skso.pem
shell> vi /etc/haproxy/haproxy.cfg
global log 127.0.0.1 local0 log 127.0.0.1 local1 debug maxconn 45000 # Total Max Connections. daemon nbproc 1 # Number of processing cores. defaults timeout server 86400000 timeout connect 86400000 timeout client 86400000 timeout queue 1000s listen https_web bind *:443 ssl crt /etc/pki/tls/certs/skso.pem option tcplog mode http balance roundrobin option forwardfor cookie SERVER insert indirect nocache server web1 <ip-skso1>:8181 check ssl verify none cookie web1 server web2 <ip-skso2>:8181 check ssl verify none cookie web2
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" port port=443 protocol=tcp accept' firewall-cmd --reload
shell> service haproxy restart
https://<haproxy.strongkey.com>
If the above URL cannot be accessed in the browser, ensure that the selinux config has been set to permissive instead of enforcing. The following command will show the current status of selinux:
shell> sestatus
If it is set to enforcing, change it to permissive by running the following command (this is a temporary fix that will reset on machine reboot, and which will be updated in a future release):
shell> setenforce 0