Previous Topic: INSSLR: Redundant HTTP Input Gateway with SSL SupportNext Topic: OUT: Single Host Output Gateway Appliance


INSSLR2 - Redundant HTTP Input Gateway with SSL Support

Latest version: 1.0.3-2

APP--INSSLR2 icon--ICO

At a Glance

Catalog

System

Category

Gateways

User volumes

yes

Minimum memory

192M

OS

Linux

Constraints

no

The INSSLR2 appliance is a layer-7 gateway for secure HTTP requests. It converts the requests to unencoded HTTP requests. You can use this functionality to support secure HTTP on the client side.

Note: The INSSLR2 appliance only works with multiple raw interfaces. You can configure the raw interfaces in the Interface tab of the Application Configuration Editor. If you do not need multiple raw interfaces, please use the INSSLR appliance.

However, the back-end processing infrastructure does not or cannot support SSL, including:

If configured, INSSLR2 also supports client certificate authentication. In the case of SSL mutual authentication, both the client and server exchange their certificates and corresponding public keys. Both the client and/or server may contact the certificate authority (CA) that issued the certificate and confirm the certificate is authentic before proceeding.

In its default configuration, INSSLR2 acts as a layer-7 gateway for secure HTTP requests. It also provides a firewalled entry point for network traffic into an application. This can be configured with an Internet-accessible static IP address.

When configured, two INSSLR2 appliances can be used in failover mode to provide a redundant service. In this case, INSSLR2 IP address is running on only one of the nodes and is automatically transfers to the other INSSLR2 appliance in case of failure. Only one of the INSSLR2 appliances is active at one time. When running in failover mode, the INSSLR2 can be configured to run in several modes:

When running in redundant mode, INSSLR2 provides an interface on its ctl terminal for:

INSSLR2 constantly monitors the health state of the backend appliance connected to its http terminal. The health state checks conducted by INSSLR2 may include a simple TCP connect check or a more complex HTTP request, if that is specified on INSSLR2 boundary.

In the case of a failure of the connected appliance, INSSLR2 reports an error to the grid dashboard or, if in redundant mode and configured to do so, it does a failover to the backup INSSLR2 appliance.

To support applications that need to appear at a single IP address for more than one service, configure the INSSLR2 to direct non-HTTP traffic transparently to a separate output terminal. For such connections, the appliance acts as a layer-3 firewall/NAT router.

Note: If two INSSLR2 appliances in the same application are configured to run in redundant mode, a warning message displays when you configure the same IP address on two different interfaces. Please ignore that error.

Boundary

Resources

Resource

Minimum

Maximum

Default

CPU

0.05

4

0.05

Memory

192 MB

2.0

192 MB

Bandwidth

1 Mbps

2 Gbps

200 Mbps

Notes

Terminals

Name

Direction

Protocol

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 that makes the appliance active or passive is:

/?action=<active|passive|kill|status>

If the other node is not active and failover cannot complete, this action may not succeed and no error is returned. It is up to the calling application to check the status of the appliance by making the following request:

/?action=status

status returns the current active or passive state of the appliance.

kill does a forced shutdown of the appliance. This makes the other node takeover, if it is running.

in

in

any

Accepts all incoming traffic

The ip_addr, netmask, and gateway properties are attributes of the interface connected to the in terminal and can be configured on the Interface tab of the Application Configuration Editor.

fover

in

raw

Failover interface for intercommunication between two INSSLR2 instances.

The fover_local_ip and fover netmask properties are attributes of the interface connected to the fover terminal and can be configured on the Interface tab of the Application Configuration Editor.

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:

X-Forwarded-For: the remote client IP address.

This should be used by the server-side CGI scripts in place of the remote IP address.

X-Forwarded-Proto: https

This header is present if the client has connected over HTTPS. It is up to the back-end application to use this header to distinguish between HTTP and HTTPS connections.

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 remain unconnected.

aux

out

any

Output for other protocols, if configured.

For additional information, refer to l3_accept_* properties.

nfy

out

http

Sends notifications when a failover occurs.

See also fover_nfy_prefix. This terminal may remain unconnected.

mon

out

cce

Sends performance and resource usage statistics.

Properties

Name

Type

Description

dns1

ip_addr

Defines the primary DNS server. If the remote host is specified by its IP address, dns1 can remain blank. If not, you must be specify dns1.

Default: (empty)

dns2

ip_addr

Defines the secondary DNS server, which is used, if the primary DNS server does not respond.

Default: (empty)

I7_accept

enum

Specifies the type 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

I3_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 can 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. The l7_accept property takes precedence over this one.

Note: If you set l7_accept to value different from none, all http(s) is forwarded to the http terminal and the remaining traffic goes to aux as specified by this property.

Default: none

I3_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, such as ftp and smtp, when specifying TCP or UDP ports or gre and tcp, when using raw protocols. Port ranges can also be specified as 1024:10000 or 0:1024.

If 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 protocol can be specified, but no proto range, such as 20:30, is allowed.

Default: all

allowed_hosts

string

List of hosts and/or subnets allowed to connect. You must 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.

If you set l7_accept to https or both, a valid certificate must be present on the configured data volume at the location specified by this property. Otherwise INSSLR2 fails to start. For additional information, refer to Volumes.

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 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 can be used for https sessions. This includes SSLv2.

Default: disabled

This property was added in version 1.2.1.

keepalive

integer

Specifies the maximum keepalive time between INSSLR2 and the client. The time is specified in seconds.

Default: 15

timeout

integer

Specifies how many seconds INSSLR2 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

integer

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. For additional details, refer to nginx documentation.

You can add multiple configuration lines separated by ;.

Note: If set, this property must have a valid nginx syntax, such as end with ; 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 INSSLR2.

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

integer

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 using the fs terminal and may contain a path, such as:

path/to/keys/ca_list_client.pem. 

Default: ca_list_client.pem.

cert_revocation_list

string

A file containing the certificate revocations list (CRL) as generated by the Certificate Authority. This list identifies client certificates revoked by the CA.

It is searched for every client certificate presented to INSSLR2 and, if the certificate is found to be revoked, INSSLR2 issues an SSL certificate error response to the client.

Similar to ca_list_client, the file name is relative to the root of the mounted key volume or the root of the nfs mount made using the fs terminal and may contain a path, such as:

path/to/keys/ca_list_client.pem. 

Default: empty

Healthcheck Properties

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: INSSLR2 connects to port 80 of the web server. If the connection is successfully established, INSSLR2 assumes that the web server is functional.

    This is the fastest method and requires the least resources.

  • http_head: INSSLR2 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 INSSLR2 and web server, but is more reliable. The response is matched against a regular expression as specified by healthcheck_regexp. If a match is found, the server is considered alive.

  • http_get: INSSLR2 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 that is 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, such as: http://host.name/file/to/check/for.php, or as a relative path, such as: /file/to/check/for.php.

If specified as an URL, INSSLR2 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, INSSLR2 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: INSSLR2-health-check

healthcheck_regexp

string

A test string used with the http_head and http_get health check mode. Short or common values, such as OK, will likely cause false positive matches. This string is a perl regular expression.

Default: ^HTTP\/1\.\d\s+200

healthcheck_interval

integer

Interval between health checks of the backend web servers. This is specified in seconds.

Default: 60 seconds

healthcheck_timeout

integer

The maximum time in seconds that a healthcheck can take.

If the timeout is exceeded. the check is considered as failed and is terminated. A new check is started.

Default: 10

healthcheck_alert

integer

Number of subsequent healthcheck failures before INSSLR2 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.

If you are running INSSLR2 in redundant mode and want to take switch to the backup node in case of failure of the backend server, refer to fover_on_healthcheck for additional information.

Default: 3

Advanced Properties Used in Failover Scenarios

Name

Type

Description

fover_mode

string

Failover mode.

Valid values: none (no failover), symmetric and asymetric

When set to none, INSSLR2 acts like an INSSLR2 appliance and does not provide failover capabilities.

When set to symmetric, INSSLR2 runs in symmetric failover mode. You need two INSSLR2 appliances, both running in symmetric failover mode.

When set to asymmetric, INSSLR2 runs in asymmetric failover mode. You need two INSSLR2 appliances, both running in asymmetric failover mode.

Note: When running in failover mode, both appliances must have fover_mode set to the same value. If fover_mode is set to none, the fover terminal should remain unconnected.

Default: none

fover_remote_ip

ip_addr

Remote IP address of the other INSSLR2 appliance used in failover mode.

If fover_mode is none, this field remains empty.

Default: (empty)

fover_nfy_prefix

string

Url prefix that is requested whenever a failover occurs.

The requested URL is:

http://nfy/ fover_nfy_prefix fover_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 the nfy terminal.

Default: ?

fover_on_healthcheck

integer

Specify if INSSLR2 should do a failover to the backup node when a health check on the http terminal fails.

If set to non-zero value, INSSLR2 does a failover after many subsequent health check failures. Don't set too low to avoid false positives when starting or stopping your application.

If you just need notifications for the failures, refer to healthcheck_alert.

Default: 0 (disable).

Volumes

Name

Description

key

A read-only data volume, named 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 Messages

The following messages may appear in either the appliance log file or the system log of the grid controller when the appliance fails to start:

Performance
Application Failover

INSSLR2 detects the failure of the INSSLR2 in approximately 10 seconds and requires an additional 10 seconds to failover to the other application. The total time from when the application failure first occurs to when the other application takes over the traffic is approximately 20 seconds.

Request Rate

INSSLR2 routes no less than 3000 transactions (request/response pairs) per second, depending on the document size and network bandwidth available.

Data Throughput

INSSLR2 routes no less than 7 MB/second, depending on the document size and network bandwidth available

Concurrent Connections

With its default memory, INSSLR2 supports no less than 500 concurrently pending requests. A pending request being an open TCP connection from the client, on which there is one or more un-completed HTTP request in progress.

The maximum amount of concurrent connections depends of available free memory. Each 16 MB additional memory increases the number of concurrent http transactions by 500.

For example, if you run in redundant mode and want to serve 2000 concurrent connections, you need 100M + 3*16M = 148M. The minimum memory when running in redundant mode is 100M.

Notifications

When running in redundant mode (fover_mode is not none), INSSLR2 triggers notifications when it becomes active or passive. This is performed on startup of the active node or when a failover occurs. Each node sends a notification that it became active or passive.

INSSLR2 sends two notifications:

You can use the fover_nfy_prefix to change the location of the remote script that is called and/or add additional parameters.

Examples for fover_nfy_prefix values:

/path/to/script.php?, /path/to/script.php?username=user&password=pass&. 

Notes:

Healthcheck

INSSLR2 runs a cronjob every minute that checks the following:

If any is true, an error message is sent to the grid dashboard. If more than one test fails, a summary message with all errors posts on the grid dashboard.

Each error is sent only once per hour to the grid dashboard. No errors are reported in the first 5 minutes after the appliance start. This prevents false alarms when the other node in the replication has not started.

Server Certificates

To use SSL you need both the signed certificate and the private key used to encrypt it. The key and the certificate should be in PEM format and placed in a single file specified by the cert_file property.

Generate Server Certificates

You can generate a server certificate that can be signed by a trusted Certificate Authority (CA) for a fee or create a self-signed certificate.

Follow these steps:

  1. Generate a private key using the following command:
    openssl genrsa -out privkey.pem 2048 
    

    You can also generate a pass protected key using the following command. However, if you create a pass protected key, you need to remove the password before using it in INSSLR2. INSSLR2 requires a passwordless key.

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. Create a certificate using one of the following options:

Using Server Certificates

You can now place the certificate and key in a file and use it in INSSLR2 by executing the following command:

cat privkey.pem  server.crt > server.pem 

If your key is password protected, you can remove the password by executing the following:

openssl rsa -in key_with_pass.pem -out privkey.pem 

Using Existing apache+mod_ssl Server Certificates

INSSLR2 allows you to use an existing certificate that you use in Apache. Verify the key is not password-protected using the above steps, then place the private certificate and key in a single file.

For example:

If you are using a chained certificate, you should also include the intermediate certificate provided by the issuer. Place the private key, certificate and intermediate certificate in a single file in that order.

For example:

Important! The server signing key is your Web site's proof of identity. It is also vulnerable since it is not password-encrypted to allow the appliance to read it without your assistance.

When installing it on the data volume, take measures to protect the key file. Do not use the same data volume for other purposes and do not make it visible to a Web server. For example, to host Web-accessible data, such as HTML pages and scripts.

Client Certificates

The following example outlines how to create your own Certificate Authority and use it to sign your own certificates using OpenSSL. This was tested using OpenSSL 0.9.8b, the same version as is installed in INSSLR2.

Create a Certificate Authority

If you already have your own Certificate Authority used to create self-signed server certificate, you can skip this step and use that Certificate Authority. When creating the instruments of the trusted authority for your application, it is important that the environment be secure.

Important! The private key for certificate authority is the basis of trust for the application. Do not misplace it or provide it to other parties.

Follow these steps:

  1. Create a working directory on a secure host and, in that directory, create:
  2. Create a password protected RSA key for the CA with a 2048 bit key length:
    openssl genrsa -des3 -out CA/private/CA_key.pem 2048 
    
  3. From the private key, create the public-key certificate for the CA:
    openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem 
    

Create Client Certificates Signed by the Certificate Authority

You can create client certificates that are signed by a Certificate Authority.

Follow these steps:

  1. Generate an RSA private key:
    openssl genrsa -out clientA_privkey.pem 2048 
    

    To create a password protected key, use the -des3 switch

  2. Generate a certificate signing request (CSR) from the private key:
    openssl req -new -key clientA_privkey.pem -out clientA_request.csr 
    
  3. Sign the certificate contained in the CSR using the certificate generated for the CA:
    openssl x509 -req -days 365 -in clientA_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAcreateserial -out clientA.cer 
    

Notes:

Create the CA List Files Used by INSSLR2

Revoke Client Certificates Signed by the CA

To revoke a client certificate issued by the CA, use the following command:

openssl ca -config openssl.conf -revoke clientB.cer -crl_reason keyCompromise 

Where an example openssl.conf is shown below and the crl_reason parameter is one of: unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold or removeFromCRL. The matching of reason is case insensitive.

To re-generate the certificate revocation list (CRL):

openssl ca -config openssl.conf -gencrl -out CA/crl.pem 

In this example, crl.pem is the file that should be provided to INSSLR2 as the cert_revocation_list property.

An sample config file used for the above examples is: 
      ####################################################################
      [ ca ]
      default_ca      = CA_default            # The default ca section

      ####################################################################
      [ CA_default ]

      dir             = ./CA                  # Where everything is kept
      certs           = $dir/certs            # Where the issued certs are kept
      crl_dir         = $dir/crl              # Where the issued crl are kept
      database        = $dir/index.txt        # database index file.
      #unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
      new_certs_dir   = $dir/newcerts         # default place for new certs.

      certificate     = $dir/cacert.pem       # The CA certificate
      serial          = $dir/serial           # The current serial number
      crlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRL
      crl             = $dir/crl.pem          # The current CRL
      private_key     = $dir/private/cakey.pem# The private key
      RANDFILE        = $dir/private/.rand    # private random number file

      default_days    = 365                   # how long to certify for
      default_crl_days= 30                    # how long before next CRL
      default_md      = sha1                  # which md to use.
      preserve        = no                    # keep passed DN ordering

      policy          = policy_anything

      [ policy_anything ]
      countryName             = optional
      stateOrProvinceName     = optional
      localityName            = optional
      organizationName        = optional
      organizationalUnitName  = optional
      commonName              = supplied
      emailAddress            = optional

Create the Certificate Authority List Files Used by INSSLR2

You can create certificate authority list files that are used by INSSLR2.

To create the file identified by the ca_list_client property:

  1. Access the following file:
    cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem 
    
  2. Place this file either on the key volume or the volume which is nfs mounted via the fs terminal.

    If desired, the INSSLR2 server certificate, such as e.g. server.pem, can also be created in the same manner as the client certificates and lsigned by the created certificate authority. Do not use a password for this certificate.

  3. Once server.pem and ca_list_client.pem are in place, test the client certificate authentication as follows:

Client Certificate Headers

If a client connects to INSSLR2 using HTTPS and presents a client certificate, INSSLR2 adds the following headers to the request returned to the backend server:

It is the responsibility of the application to use or not use these headers. INSSLR2 just passes this information without verifying it, except for signature and encryption correctness.

Typical Usage

Web Applications

To provide https access to your application, connect the http terminal directly to the WEB appliance.

APP--Web Applications_Provide HTTPS--ICO

For a scalable web application hook the http terminal to a HALB appliance.

APP--Web Applications_Scalable--ICO

The configuration examples list only properties set to non-default values.

Name

Type

Description

I7_accept

http/https/both

Specifies which l7 protocol is used.

If https or both is specified, the key volume should contain the ssl certificate as specified by the cert_file property.

Web Application with Additional Services

If you have more services than just http in your application, you can use INSSLR2 to pass http traffic to its http terminal and use the aux terminal for other services.


APP--Web App w Additional Services--ICO

Name

Type

Description

I7_accept

http/https/both

Specifies which l7 protocol is used.

If https or both is specified, the key volume should contain the ssl certificate as specified by the cert_file property.

I3_accept_proto

tcp

Redirect tcp ports 25,110,143 to aux terminal.

I3_accept_port

25,110,143

Redirect tcp ports 25,110,143 to aux terminal.

Web Applications with Multiple Additional Services

If you have multiple TCP/UDP services and HTTP, you can use INSSLR2 to pass HTTP traffic to its HTTP terminal and use the aux to feed the remaining traffic to PS8. PS8 then feeds the desired traffic to the backend servers.

APP--Web App w Multiple Additional Services--ICO

Name

Type

Description

I7_accept

http/https/both

Specifies which l7 protocol is used.

If https or both is specified, the key volume should contain the ssl certificate as specified by the cert_file property.

I3_accept_proto

all

Redirect to aux terminal all IP traffic, except icmp, that is not passed to the http terminal.

Redundant Web Applications

To provide a redundant web application, copy the application and use INSSLR2 to provide failover capabilities for the external IP address.

Note: If two INSSLR2 appliances in the same application are configured to run in redundant mode, a warning message displays when you configure the same IP address on two different interfaces. Please ignore that error.

Backup Web Application

If you need a backup application that notifies users for the downtime, you can use INSSLR2 to build a backup application that requires minimum resources.

Appliances in use:

INSSLR2 on Primary Application

Property Name

Value

Notes

fover_mode

asymmetric

Run in asymmetric mode to use the backup application only when the primary is down.

fover_remote_ip

192.168.100.2

Remote IP address used for communication between INSSLR2 appliances in the two applications.

INSSLR2 on Backup Application

Property Name

Value

Notes

fover_mode

asymmetric

Run in asymmetric mode to use the backup application only when the primary is down.

fover_remote_ip

192.168.100.2

Remote IP address used for communication between INSSLR2 appliances in the two applications.

Note: The fover_local_ip and fover netmask properties are attributes of the interface connected to the fover terminal and can be configured on the Interface tab of the Application Configuration Editor.

Redundant Web Application in a Single Application

To run your application in redundant mode without creating a new application, you can double the appliances and run them in redundant mode. Since this involves using at least two web servers and two database appliances in normal mode, they are all used which provide scalability. However, each of them can serve the application alone in case the other appliance fails.

If you need additional scalability, you can add additional web and database appliances. In this example half of the appliances (in1, sw1, web1, db1) are running in one failover group and the remaining (in2, sw2, web2, db2) are in another failover group to allow the application can survive a server crash. This application provides redundancy at a very low cost as all the appliances (except for one INSSLR2 and one HALB appliance which require very low resources) are in active state and no resources are spent for a backup application that runs only when the primary fails.

APP--Redundant Web application_single application_ICO

in1

Property Name

Value

Notes

fover_mode

symmetric

Run in symmetric mode

fover_remote_ip

192.168.100.2

Remote IP address used for communication between the INSSLR2 appliances in the two applications.

in2

Property Name

Value

Notes

fover_mode

symmetric

Run in symmetric mode

fover_remote_ip

192.168.100.1

Remote IP address used for communication between the INSSLR2 appliances in the two applications.

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

1

Master server 1. This should be different on the remote application

rpl_mode

master_and_slave

Master and slave

Redundant Web application wth Two Identical Applications

You can run two identical applications on the same grid, but on separate servers or on different grids if the IP address is accessible from both grids. This allows the failure of a server to only affect one of the applications.

The example below shows an application that uses a database appliance which is also running in redundant mode. If one application fails, the other application can take over without data loss.

APP--Redundant Web application_two identical applications--ICO

Appliances in use:

The client requests arrive on the insslr gateway. The gateway forwards the requests to the web_lb load balancer, which directs the request to one of the web servers, web1 or web2.

The web servers access the db database. The db appliance connects to the remote application. In order to replicate the database, the remote application is an identical copy with the only difference being the server_id of db and the network setup.

The remote application connects to the db appliance using 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 to ensure 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 using admin gateway on port 8080.

insslr

Property Name

Value

Notes

fover_mode

symmetric

Run in symmetric mode.

fover_remote_ip

192.168.100.1

Remote IP address to be used for communication between INSSLR2 appliances in the two applications. Change this to 192.168.100.1 on the remote application.

db

Property Name

Value

Notes

auto_create

1

Create the database, if the volumes are empty.

error_log_filename

db error

Name of the error log file that is 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

Important! Only one of the applications is active at any time, the other one is running just for failover and is used when the active application fails.

Notes:

Open Source and Third Party Software Used Inside the Appliance

INSSLR2 uses the following thrd party open source packages in addition to the third party open source packages used by its base class LUX6 .

Software

Version

Modified

License

PyXML

0.8.4-19

No

BSD

heartbeat

3.0.4-1

No

LGPLv2.1

heartbeat-libs

3.0.4-1

No

LGPLv2.1

iptables

1.4.7-5.1.el6_2

No

GPLv2

libgcrypt

1.4.5-9.el6_2.2

No

GPLv2

libgpg-error

1.7-4

No

LGPLv2.1

lighttpd

1.4.32-1

No

BSD

nginx

1.4.2-1

No

BSD

sudo

1.7.4p5-13.el6_3

No

BSD

telnet

0.17-47

No

BSD