| At a Glance | |
|---|---|---|
| Catalog | System | |
| Category | Gateways | |
| User volumes | yes | |
| Min. memory | 64M | |
| OS | Linux | |
| Constraints | no | |
| Questions/Comments | Ask Forum | |
ip_addr) is running on only one of the nodes and is automatically transferred to the other INSSLR appliance in case of failure. At any given moment, only one of the INSSLR appliance is active. When running in failover mode INSSLR can be configured to run in several modes: fover_local_ip property.
ctl terminal for: http terminal. The health state checks conducted by INSSLR may include a simple TCP connect check or a more complex HTTP request (specified on INSSLR's boundary). In the case of a failure of the connected appliance, INSSLR reports an error to the grid dashboard or, if in redundant mode and configured to do so, it does a failover to the backup INSSLR appliance.
To support applications that need to appear at a single IP address for more than one service, INSSLR can be configured to direct non-HTTP traffic transparently to a separate output terminal. For such connections, the appliance acts as a layer-3 firewall/NAT router.
| Resource | Minimum | Maximum | Default |
|---|---|---|---|
| CPU | 0.05 | 4 | 0.05 |
| Memory | 64M | 2G | 128M |
| Bandwidth | 1 Mbps | 2 Gbps | 200 Mbps |
fover_mode is not none), the minimum memory is 100M.
| name | dir | prot. | description |
|---|---|---|---|
ctl | in | HTTP | Receive notifications that forces the appliance to become primary/backup. This terminal accepts connections only if fover_mode is not none. A valid http request looks like /?action=<active|passive|kill|status>. active/passive makes the appliance become active or passive. Note that this action may not succeed (if the other node is not active and failover cant be completed) and no error is returned. It is up to the calling application to check the status of the appliance by making a /?action=status request. status returns the current state of the appliance (active/passive). kill does a forced shutdown of the appliance which makes the other node takeover (if it is running). |
http | out | HTTP | HTTPS and/or HTTP requests received on the configured external IP address are directed to the output http as plain HTTP requests on the standard HTTP port 80. In addition to the client-supplied HTTP headers, the forwarded requests also contain the following informational headers:
|
fs | out | nfs | Provides for an nfs mount as an alternative location to the local key volume for storing keys. If both the local key volume and an fs terminal connection are supplied, the appliance fails to start. This terminal may be left unconnected. |
aux | out | any | Output for other protocols, if configured - see the l3_accept_* properties. |
nfy | out | http | Sends notifications whenever a failover occurs. See also fover_nfy_prefix. This terminal may be left unconnected. |
mon | out | cce | Sends performance and resource usage statistics. |
| name | type | description |
|---|---|---|
ip_addr | IP addr | external IP address of the gateway. This property has no default value and must be set. Default: (empty) |
netmask | IP addr | Netmask. This property has no default value and must be set. Default: (empty) |
gateway | IP addr | Default gateway for outgoing traffic. Default: (empty) |
l7_accept | enum | This specifies what kinds of HTTP traffic to accept for forwarding to the http terminal. Valid values: https, http, both , none. If set to none all traffic is redirected only according to the l3_accept_* properties. Default: both. |
l3_accept_proto | enum | Specifies which protocols should be forwarded to the aux terminal. Valid values: none, tcp, udp, raw, all. If set to tcp or udp, the l3_accept_port property may be used to specify the port. If set to raw the l3_accept_port property specifies the protocol number. If set to all all incoming traffic on the external interface is forwarded to the aux terminal. Note that the l7_accept property takes precedence over this one - if you set l7_accept to value different from none all http(s) is forwarded to the http terminal, the rest of the traffic goes to aux as specified by this property. Default: none. |
l3_accept_port | string | A comma (or space) separated list of protocols to accept and route at the protocol specified by l3_accept_proto to the aux terminal; Protocols in the list may be specified either as port numbers or as standard protocol names (e.g., ftp, smtp etc. when specifying tcp/udp ports or gre, tcp, etc. when using raw protocols). Port ranges can also be specified (1024:10000, 0:1024). If left empty all ports of the specified protocol are forwarded. Note: If you set l3_accept_proto to raw you must specify this property which in this case specifies the protocol number (more than one raw protocols may be specified but no proto range (e.g. 20:30) is allowed) Default: all |
allowed_hosts | String | List of hosts and/or subnets allowed to connect. Separate multiple entries with spaces or commas. Supported format example: 192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0. Default: 0.0.0.0/0 (all allowed) |
key_on_fs | string | Indicates whether keys are stored on an nfs mount through the fs terminal (on) or on the local key volume (off). Valid values: on and off. Default: off. |
cert_file | string | File name (relative to the data volume root) of the server certificate that this gateway instance should present to the client. Note that a valid certificate must be present on the configured data volume (see Volumes below) at the location specified by this property if you set l7_accept to https or both, otherwise INSSLR fails to start. Default: server.pem. |
unsafe_ssl | string | Enable the use of 'unsafe' ssl ciphers for compatibility with legacy browsers. The default value of disabled disables SSLv2 ciphers as well as some other SSLv3 and TLSv1 ciphers that are not considered secure. It is recommended to leave this property set to disabled unless you need to support https sessions for legacy browsers which only work with SSLv2. When set to enabled, all SSL ciphers available on the system (including SSLv2) may be used for https sessions. Default: disabled. |
keepalive | int | Specify the maximum keepalive time between INSSLR and the client (specified in seconds). Default: 15. |
timeout | int | Specifies how many seconds INSSLR waits for output from the backend server. If the backend server does not send output for timeout seconds, the connection is closed. Default: 300 |
max_request_size | int | Maximum size (in MB) of the client request. Increase if your application needs to handle large client uploads. Default: 10. |
adv_config | string | Add raw configuration to be inserted in nginx conf inside location blocks for both http and https listeners (whichever is enabled). For example, to add custom headers, set adv_config to proxy_set_header myport $proxy_port;. This adds a myport: 80 to the request sent to the backend server. adv_config may be set to any valid statement for a location block (refer to nginx documentation for more details). You can add multiple configuration lines separated by ;. ;) or the appliance fails to start. Default: (empty) |
client_cert | string | Enables client certificate authentication. Valid values: on, ask and off. If set to on, client certificate authentication is forced and only clients with valid certificates can make a successful request to INSSLR. When set to ask, clients are asked to present certificates, but the connection is established even if a valid certificate is not presented. Default: off. |
client_depth | int | The depth of verification to pursue in a chained client certificate. This property has no affect if client_cert is not set. Valid values: 1-9. Default: 1 |
ca_list_client | string | A file containing a sequence of CA certificates in PEM format. The names of the listed CA certificates are sent to the client on connection. This informs the client which client certificate it should send. The same list is used for verifying the client certificate. The file name is relative to the root of the mounted key volume or the root of the nfs mount made via the fs terminal and may contain a path, e.g. path/to/keys/ca_list_client.pem. Default: ca_list_client.pem. |
| name | type | description |
|---|---|---|
healthcheck_method | String | The method used for the health check of the backend web servers.off - Healthcheck is disabled, all other healthcheck_ properties are irrelevant. tcp_connect - INSSLR connects to port 80 of the web server. If the connection is successfully established, INSSLR assumes that the web server is functional. This is the fastest method and requires the least resources.http_head - INSSLR uses the HEAD method to request the document specified by the healthcheck_url property. This is slower than tcp_connect, requires more resources on both INSSLR and web server, but is more reliable. The response is matched against a regular expression as specified by healthcheck_regexp and if a match is found, the server is considered alive.http_get - INSSLR uses the GET method to request the document specified by the healthcheck_url property. This is the slowest method that requires most resources but is most reliable. The response (headers and body) is matched against a regular expression as specified by healthcheck_regexp and if a match is found, the server is considered alive.Default: off. |
healthcheck_url | String | The URL used to perform the health check of the backend web servers in http_get and http_head health check methods. May be specified as a complete URL (http://host.name/file/to/check/for.php) or as a relative path (/file/to/check/for.php). If specified as an URL, INSSLR uses the HTTP/1.1 protocol while performing the health checks using the hostname extracted from UR, in a "Host:" header. This allows usage of virtual hosts. If specified as a relative path, INSSLR uses the HTTP/1.0 protocol and checks for the document specified by this property. Default: /. |
healthcheck_agent | String | The string used as an agent identifier for http_get and http_head health check methods. Default: INSSLR-health-check. |
healthcheck_regexp | String | A test string used with the http_head and http_get health check mode. Short or common values (eg. "OK") will likely cause false positive matches. This string is a perl regular expression, more details about perl regular expressions are available here. Default: ^HTTP\/1\.\d\s+200. |
healthcheck_interval | Int | Interval between health checks of the backend web servers (specified in seconds). Default: 60 seconds. |
healthcheck_timeout | Int | The maximum time in seconds that a healthcheck can take. If the timeout is exceeded the check is considered as failed and it is terminated (a new check is started). Default: 10. |
healthcheck_alert | Int | Number of subsequent healthcheck failures before INSSLR starts dumping errors on the grid dashboard. If set to 0 no errors are reported to the dashboard (but healthchecks are still enabled). Do not set too low to avoid false positives when starting/stopping your application. See also fover_on_healthcheck if you are running INSSLR in redundant mode and you want to take switch to the backup node in case of failure of the backend server. Default: 3. |
fover_mode | String | Failover mode. Possible values are none (no failover), symmetric and assymetric. When set to none INSSLR acts just like an INSSL appliance and does not provide failover capabilities. When set to symmetric, INSSLR runs in symmetric failover mode (you need two INSSLR appliances, both running in symmetric failover mode). When set to asymmetric, INSSLR runs in asymmetric failover mode (you need two INSSLR appliances, both running in asymmetric failover mode). fover_mode set to the same value. Default: none |
fover_local_ip | IP addr | Local IP address to be used in failover mode for communicating with the other INSSLR appliance. This can be any available IP, including any reserved private address (as defined by rfc1918). This address is used only for monitoring the status of the other INSLLR appliance. fover_remote_ip property on the other INSSLR appliance. fover_mode to none. Default: (empty) |
fover_remote_ip | IP addr | Remote IP address of the other INSSLR appliance used in failover mode. fover_local_ip property on the other INSSLR appliance. fover_mode to none. Default: (empty) |
fover_netmask | IP addr | Netmask for fover_local_ip. fover_mode to none. Default: (empty) |
fover_nfy_prefix | String | Url prefix that is requested whenever a failover occurs. The requested URL is http://nfy/fover_nfy_prefixfover_mode=fover_mode&state=<start|stop>&ip_addr=ip_addr&fover_local_ip=fover_local_ip&fover_remote_ip=fover_remote_ip&fover_netmask=fover_netmask and goes through thenfy terminal. Default: ? |
fover_on_healthcheck | Int | Specify if INSSLR should do a failover to the backup node if a health check on the http terminal fails. If set to non-zero value, INSSLR does a failover after this many subsequent health check failures. Don't set too low to avoid false positives when starting/stopping your application. See also healthcheck_alert if you just need notifications for the failures. Default: 0 (disable). |
| name | description |
|---|---|
key | A read-only data volume (placeholder) containing, as a minimum, the SSL server signing key. The file should be in PEM format. Unless the cert_file property is modified to specify a different name, the certificate should be located in the root directory of the key volume, named server.pem. |
| Error message | Description |
|---|---|
Error: Could not find the SSL server certificate [cert_file] | Could not find the SSL server certificate as specified by the cert_file property. Either provide a valid certificate path or disable secure HTTP requests by setting l7_accept to http or none |
Error: The RSA private key is pass protected | The SSL server certificate is password protected, you need a certificate that is not password protected. |
Error: Invalid value [client_cert] for client_cert | Valid values are on, off, and ask. |
Error: Invalid value [client_depth] for client_depth | Valid values are 1-9. |
Error: Could not find the CA client list [ca_list_client] | Could not find the CA client list. Either provide a CA client list or disable client certificates by setting client_cert to off. |
Error: You specified raw l3 proto but did not specify proto number (l3_accept_port) | When setting l3_accept_proto to raw, l3_accept_port property is mendatory. |
Error: Invalid value for property [property]: [value] | The value for the property is not valid. |
Error: Minimun required memory when running in redundant mode is 100MB | When running is redundant mode (fover_mode is not none), the minimum required memory is 100MB. |
Error: Failover on healthcheck is enabled, but the appliance does not run in redundant mode | Failover on healthcheck is enabled (fover_on_healthcheck > 0), but the appliance does not run in redundant mode (fover_mode is none). |
Error: healthcheck_url must be set when healthcheck_method is http_get or http_head | Property healthcheck_url should not be empty when healthcheck_method is http_get or http_head. |
Error: healthcheck_regexp must be set when healthcheck_method is http_get or http_head | Property healthcheck_regexp should not be empty when healthcheck_method is http_get or http_head. |
Error: Failover on healthcheck is enabled, but healthcheck is disabled | Failover on healthcheck is enabled (fover_on_healthcheck > 0), but healthcheck is not enabled (healthcheck_method is off). |
Error: Invalid value [healthcheck_method] for healthcheck_method | Valid values are off, tcp_connect, http_get, http_head. |
Error: Firewall configuration failed | Failed to start firewall, check l3_accept_proto, l3_accept_port, l3_accept_proto, allowed_hosts, l7_accept values. |
Error: Failed to configure Nginx | Failed to configure nginx service, check adv_config property if you use it. |
Error: Healthcheck failed to start | Failed to start healthcheck, check healthcheck_ properties. |
Error in health check URL: [url] | The specified healthcheck_url is not valid. |
Error: Heartbeat failed to start | Failed to start heartbeat service. |
fover_mode is not none), INSSLR triggers notifications whenever it becomes active/passive. This is done on startup of the active node or whenever a failover occurs (each node send a notification that it became active/passive).
INSSLR send two notifications:
nfy terminal. It is up to the receiving end to take some action based on the notification. The requested URL is: http://nfy/fover_nfy_prefixfover_mode=fover_mode&state=<start|stop>&ip_addr=ip_addr&fover_local_ip=fover_local_ip&fover_remote_ip=fover_remote_ip&fover_netmask=fover_netmask
fover_nfy_prefix to change the location of the remote script that is called or/and add additional parameters. Examples for fover_nfy_prefix values: /path/to/script.php?, /path/to/script.php?username=user&password=pass&.
fover_nfy_prefix different than the default make sure it ends with ? if fover_nfy_prefix is just the path the the script or & if fover_nfy_prefix includes additional parameters.
http terminal. Errors are reported to to grid dashboard (at maximum rate 1 per 10 minutes). If INSSLR is running in redundant mode and fover_on_healthcheck is set to non-zero value, INSSLR tries to do a failover to its backup appliance after fover_on_healthcheck number of subsequent health check failures. The failover may not succeed if the backup INSSLR appliance is not running or not configured properly.
fover_on_healthcheck to 1 makes INSSLR failover on each failed healthcheck, which may not be always desired. Using a higher value helps avoid false positives (like when stopping the application).
cert_file property.
openssl genrsa -out privkey.pem 2048
openssl genrsa -des3 -out privkey.pem 2048
openssl req -new -key privkey.pem -out server.csr
openssl req -new -x509 -key privkey.pem -out server.crt -days 1095
cat privkey.pem server.crt > server.pem
openssl rsa -in key_with_pass.pem -out privkey.pem
cat privkey.pem server.csr > server.pem
cat privkey.pem server.csr sf_issuing.crt > server.pem
mkdir CA
mkdir CA/private
openssl genrsa -des3 -out CA/private/CA_key.pem 2048
openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem
openssl genrsa -out clientA_privkey.pem 2048
openssl req -new -key clientA_privkey.pem -out clientA_request.csr
openssl x509 -req -days 365 -in clientA_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAcreateserial -out clientA.cer
openssl genrsa -out clientB_privkey.pem 2048
openssl req -new -key clientB_privkey.pem -out clientB_request.csr
openssl x509 -req -days 365 -in clientB_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAserial CA/CA_cert.srl -out clientB.cer
cat clientA_privkey.pem clientA.cer > clientA.pem
openssl pkcs12 -export -in clientA.cer -inkey clientA_privkey.pem -out clientA.p12
cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem
openssl s_client -host IP-address -port 443 -showcerts -ssl3 -cert clientA.cer -key clientA_privkey.pem -state
X-SSL-Subject details about the certificate owner.
X-SSL-Issuer details about the certificate issuer (Certificate Authority).
X-SSL-serial certificate serial number (decimal).
X-SSL-cipher the cipher currently in use.
X-SSL-certificate the full client certificate (PEM-format multi-line).

| Property | Value | Notes |
|---|---|---|
l7_accept | http/https/both | Specifies what l7 protocol is used. NOTE: if https or both is specified, the key volume should contain the ssl certificate as specified by the cert_file property |

| Property | Value | Notes |
|---|---|---|
l7_accept | http/https/both | Specifies what l7 protocol is used. NOTE: if https or both is specified, the key volume should contain the ssl certificate as specified by the cert_file property |
l3_accept_proto | tcp | Redirect tcp ports 25,110,143 to aux terminal. |
l3_accept_port | 25,110,143 | Redirect tcp ports 25,110,143 to aux terminal. |

| Property | Value | Notes |
|---|---|---|
l7_accept | http/https/both | Specifies what l7 protocol is used. NOTE: if https or both is specified, the key volume should contain the ssl certificate as specified by the cert_file property |
l3_accept_proto | all | Redirect to aux terminal all IP (except icmp) traffic that is not passed to the http terminal. |

user - input gateway for user requests
web - web server displaying maintenance message
| Property | Value | Notes |
|---|---|---|
ip_addr | 1.2.3.4 | Public IP address of the application, must be the same for the primary and backup application. |
netmask | 255.255.255.0 | Netmask for the public IP address of the application, must be the same for the primary and backup application. |
gateway | 1.2.3.254 | Gateway for the public IP address of the application, must be the same for the primary and backup application. |
fover_mode | asymmetric | Run in asymmetric mode as we want to use the backup application only when the primary is down. |
fover_local_ip | 192.168.100.1 | Private IP address to be used for communication between INSSLR appliances in the two applications. The local IP address is lower than the remote so this appliance will be primary and will be as long as it is running |
fover_remote_ip | 192.168.100.2 | Remote IP address to be used for communication between INSSLR appliances in the two applications. |
fover_netmask | 255.255.255.0 | Netmask for fover_local_ip. |
| Property | Value | Notes |
|---|---|---|
ip_addr | 1.2.3.4 | Public IP address of the application, must be the same for the primary and backup application. |
netmask | 255.255.255.0 | Netmask for the public IP address of the application, must be the same for the primary and backup application. |
gateway | 1.2.3.254 | Gateway for the public IP address of the application, must be the same for the primary and backup application. |
fover_mode | asymmetric | Run in asymmetric mode as we want to use the backup application only when the primary is down. |
fover_local_ip | 192.168.100.2 | Private IP address to be used for communication between INSSLR appliances in the two applications. |
fover_remote_ip | 192.168.100.1 | Remote IP address to be used for communication between INSSLR appliances in the two applications. |
fover_netmask | 255.255.255.0 | Netmask for fover_local_ip. |

in1
| Property | Value | Notes |
|---|---|---|
ip_addr | 1.2.3.4 | Public IP address of the application, must be the same for the primary and backup application. |
netmask | 255.255.255.0 | Netmask for the public IP address of the application, must be the same for the primary and backup application. |
gateway | 1.2.3.254 | Gateway for the public IP address of the application, must be the same for the primary and backup application. |
fover_mode | symmetric | Run in symmetric mode. |
fover_local_ip | 192.168.100.1 | Private IP address to be used for communication between INSSLR appliances in the two applications. |
fover_remote_ip | 192.168.100.2 | Remote IP address to be used for communication between INSSLR appliances in the two applications. |
fover_netmask | 255.255.255.0 | Netmask for fover_local_ip. |
in2
| Property | Value | Notes |
|---|---|---|
ip_addr | 1.2.3.4 | Public IP address of the application, must be the same for the primary and backup application. |
netmask | 255.255.255.0 | Netmask for the public IP address of the application, must be the same for the primary and backup application. |
gateway | 1.2.3.254 | Gateway for the public IP address of the application, must be the same for the primary and backup application. |
fover_mode | symmetric | Run in symmetric mode. |
fover_local_ip | 192.168.100.2 | Private IP address to be used for communication between INSSLR appliances in the two applications. |
fover_remote_ip | 192.168.100.1 | Remote IP address to be used for communication between INSSLR appliances in the two applications. |
fover_netmask | 255.255.255.0 | Netmask for fover_local_ip. |
db1
| Property name | Value | Notes |
|---|---|---|
auto_create | 1 | Create the database if the volumes are empty. |
server_id | 1 | Master server 1, this should be different on the remote application |
rpl_mode | master_and_slave | master and slave |
db2
| Property name | Value | Notes |
|---|---|---|
auto_create | 1 | Create the database if the volumes are empty. |
server_id | 2 | Master server 1, this should be different on the remote application |
rpl_mode | master_and_slave | master and slave |

in1 - redundant input gateway for user requests
admin - input gateway for log files access
sw - redirect port 8080 from admin to ui on db
repl_in - input for the remote application to connect to the db appliance in order to replicate the database
web_lb - web load-balancer for user requests
web1, web2 - web servers with active content (e.g., CGI scripts)
db - MYSQLR64 configured to be both a master and a slave at the same time
content - storage for database error log files, web content and web logs
logs - storage for database error log files
repl_out - output gateway for the db appliance to connect to the remote application in order to replicate the database
mon - MON appliance
in1 gateway. The gateway forwards the requests to the web_lb load balancer, which directs the request to one of the web servers web1 and web2. The web servers access the db database. The db appliance connects to the remote application (which is an identical copy, the only difference being the server_id of db and the network setup) in order to replicate the database. The remote application connects to the db appliance via the repl_in gateway which is configured to allow connection only from the repl_out gateway of the remote application. The db appliances in the two applications are running in master-master setup so they always have identical data.
Example property configuration (properties that are not listed should be left to their default values):
Web access to db is available via admin gateway on port 8080.
in1
| Property | Value | Notes |
|---|---|---|
ip_addr | 1.2.3.4 | Public IP address of the application, must be the same for both applications. |
netmask | 255.255.255.0 | Netmask for the public IP address of the application, must be the same for both applications. |
gateway | 1.2.3.254 | Gateway for the public IP address of the application, must be the same for both applications. |
fover_mode | symmetric | Run in symmetric mode. |
fover_local_ip | 192.168.100.1 | Private IP address to be used for communication between INSSLR appliances in the two applications. Change this to 192.168.100.2 on the remote application. |
fover_remote_ip | 192.168.100.2 | Remote IP address to be used for communication between INSSLR appliances in the two applications. Change this to 192.168.100.1 on the remote application. |
fover_netmask | 255.255.255.0 | Netmask for fover_local_ip. |
db
| Property name | Value | Notes |
|---|---|---|
auto_create | 1 | Create the database if the volumes are empty. |
error_log_filename | db.error | Name of error log file that is to be stored on the logs data volume. |
error_log_level | error | Error logging level |
server_id | 1 | Master server 1, this should be different on the second application |
rpl_mode | master_and_slave | master and slave |
| Software | Version | Modified | License | Notes |
|---|---|---|---|---|
| PyXML | 0.8.4-4 | No | Fourthought | N/A |
| audit-libs | 1.6.5-9 | No | GPLv2 | N/A |
| gnutls | 1.4.1-2 | No | LGPLv2.1 | N/A |
| heartbeat | 2.1.3-3 | No | LGPLv2.1 | N/A |
| heartbeat-pils | 2.1.3-3 | No | LGPLv2.1 | N/A |
| heartbeat-stonith | 2.1.3-3 | No | LGPLv2.1 | N/A |
| iptables | 1.3.5-4 | No | GPLv2 | N/A |
| libgcrypt | 1.2.3-1 | No | GPLv2 | N/A |
| libgpg-error | 1.4-2 | No | LGPLv2.1 | N/A |
| libxml2 | 2.6.26-2.1.2.4 | No | MIT | N/A |
| lighttpd | 1.4.18-1 | No | BSD | N/A |
| nginx | 0.7.62-1 | Yes | BSD | N/A |
| sudo | 1.6.8p12-10 | No | BSD | N/A |
| telnet | 0.17-38 | No | BSD | N/A |