type=page
status=published
title=Configuring HTTP Load Balancing
next=rolling-upgrade.html
prev=named-configurations.html
~~~~~~

= Configuring HTTP Load Balancing

[[GSHAG00009]][[abdgs]]


[[configuring-http-load-balancing]]
== 7 Configuring HTTP Load Balancing

This chapter describes how to configure HTTP load balancing on {productName} 7.

The following topics are addressed here:

* link:#abdgx[Setting Up HTTP Load Balancing]

For information on other types of load balancing, see
link:jms.html#abdbk[Configuring Java Message Service High Availability]
and link:rmi-iiop.html#fxxqs[RMI-IIOP Load Balancing and Failover].

[[abdgx]][[GSHAG00202]][[setting-up-http-load-balancing]]

=== Setting Up HTTP Load Balancing

This section describes how to set up load balancing for {productName}.

The following topics are addressed here:

* link:#abdgy[Prerequisites for Setting Up HTTP Load Balancing]
* link:#gksdt[Configuring {productName} with Apache HTTP Server and `mod_jk`]
* link:#CHDCCGDC[Configuring {productName} with Apache HTTP Server and `mod_proxy_ajp`]
* link:#abdgz[HTTP Load Balancer Deployments]

[[abdgy]][[GSHAG00281]][[prerequisites-for-setting-up-http-load-balancing]]

==== Prerequisites for Setting Up HTTP Load Balancing

Before configuring your load balancer, you must:

* Install a supported web server and configure it. If using the `mod_jk`
or `mod_proxy_ajp` modules, the only supported web server is Apache HTTP Server 2.2.x.

* Configure the `mod_jk` connector module, as described in
link:#gksdt[Configuring {productName} with Apache HTTP Server and `mod_jk`],
or configure the `mod_proxy_ajp` connector module, as
described in link:#CHDCCGDC[Configuring {productName} with Apache
HTTP Server and `mod_proxy_ajp`].

* Create {productName} clusters or server instances to participate in load balancing.

* Deploy applications to these clusters or instances.

[[gksdt]][[GSHAG00282]][[configuring-glassfish-server-with-apache-http-server-and-mod_jk]]

==== Configuring {productName} with Apache HTTP Server and `mod_jk`

{productName} 7 can be configured for load balancing with Apache
HTTP Server as a front end by enabling the Apache `mod_jk` connector
module. To enable the `mod_jk` module in {productName}, set the
{productName} `jk-enabled` `network-listener` attribute. You can also
create `jk-connectors` under different virtual-servers using the
`jk-enabled` `network-listener` attribute.

[[gksde]][[GSHAG00143]][[to-configure-the-mod_jk-connector-module]]

===== To Configure the `mod_jk` Connector Module

1. Install http://httpd.apache.org/docs/2.2/install.html[Apache HTTP Server]
(`http://httpd.apache.org/docs/2.2/install.html`) and
http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html[mod_jk]
(`http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html`).

2. Configure `workers.properties` and `httpd.conf`. For example:

* `apache2/config/workers.properties`
+
[source]
----
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
----

* `apache2/conf/httpd.conf`
+
[source]
----
LoadModule jk_module /Users/Amy/apache2/modules/mod_jk-1.2.25-httpd-2.2.4.so
JkWorkersFile /Users/Amy/apache2/conf/worker.properties
# Where to put jk logs
JkLogFile /Users/Amy/apache2/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send everything for context /examples to worker named worker1 (ajp13)
JkMount /examples/* worker1
----
3. Start Apache HTTP Server.

4. Create a jk-enabled network listener by using the
link:reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand.
+
[source]
----
asadmin> create-network-listener --protocol http-listener-1 \
--listenerport 8009 --jkenabled true jk-connector
----

5. If you are using the `glassfish-jk.properties` file, set the
`jk-configuration-file` property of the network listener to the
fully-qualified file name of the `glassfish-jk.properties` file.
+
[source]
----
asadmin> set server-config.network-config.network-listeners.network-listener.\
jk-connector.jk-configuration-file=domain-dir/config/glassfish-jk.properties
----

6. If you expect to need more than five threads for the listener,
increase the maximum threads in the `http-thread-pool` pool:
+
[source]
----
asadmin> set configs.config.server-config.thread-pools.thread-pool.\
http-thread-pool.max-thread-pool-size=value
----

7. Restart {productName}.

[[GSHAG00065]][[gktpu]]
Example 7-1 `httpd.conf` File for Load Balancing

This example shows an `httpd.conf` file that is set for load balancing.

[source]
----
LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/worker.properties
# Where to put jk logs
JkLogFile /var/log/httpd/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send all jsp requests to GlassFish
JkMount /*.jsp worker1
# Send all glassfish-test requests to GlassFish
JkMount /glassfish-test/* loadbalancer
----

[[GSHAG00066]][[gktpe]]
Example 7-2 `workers.properties` File for Load Balancing

This example shows a `workers.properties` or `glassfish-jk.properties`
file that is set for load balancing. The `worker.worker*.port` should
match with JK ports you created.

[source]
----
worker.list=worker1,worker2,loadbalancer
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=1
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
worker.worker2.type=ajp13
worker.worker2.host=localhost
worker.worker2.port=8010
worker.worker2.lbfactor=1
worker.worker2.socket_keepalive=1
worker.worker2.socket_timeout=300
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker1,worker2
----

[[CHDCCGDC]][[GSHAG494]][[configuring-glassfish-server-with-apache-http-server-and-mod_proxy_ajp]]

==== Configuring {productName} with Apache HTTP Server and `mod_proxy_ajp`

{productName} 7 can be configured for load balancing with Apache
HTTP Server as a front end by enabling the Apache `mod_proxy_ajp`
connector module. To enable the `mod_proxy_ajp` module in {productName}, set the {productName} `jk-enabled` `network-listener`
attribute. You can also create `jk-connectors` under different
virtual-servers using the `jk-enabled` `network-listener` attribute.

[[GSHAG495]][[sthref22]]


[[to-configure-the-mod_proxy_ajp-connector-module]]
===== To Configure the `mod_proxy_ajp` Connector Module

1. Install http://httpd.apache.org/docs/2.2/install.html[Apache HTTP Server]
(`http://httpd.apache.org/docs/2.2/install.html`).

2. Configure `httpd.conf`. For example:
+
[source]
----
LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so
LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so

Listen 1979
NameVirtualHost *:1979
<VirtualHost *:1979>
   ServerName localhost
   ErrorLog /var/log/apache2/ajp.error.log
   CustomLog /var/log/apache2/ajp.log combined

   <Proxy *>
     AddDefaultCharset Off
     Order deny,allow
     Allow from all
   </Proxy>

   ProxyPass / ajp://localhost:8009/
   ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>
----

3. Start Apache HTTP Server.

4. Create a jk-enabled network listener by using the `create-network-listener` subcommand.
+
[source]
----
asadmin> create-network-listener --protocol http-listener-1 \
--listenerport 8009 --jkenabled true jk-connector
----

5. If you expect to need more than five threads for the listener,
increase the maximum threads in the `http-thread-pool` pool:
+
[source]
----
asadmin> set configs.config.server-config.thread-pools.thread-pool.\
http-thread-pool.max-thread-pool-size=value
----

6. Restart {productName}.

[[abdgz]][[GSHAG00284]][[http-load-balancer-deployments]]

==== HTTP Load Balancer Deployments

You can configure your load balancer in different ways, depending on
your goals and environment, as described in the following sections:

* link:#abdha[Using Clustered Server Instances]
* link:#abdhc[Using Multiple Standalone Instances]

[[abdha]][[GSHAG00232]][[using-clustered-server-instances]]

===== Using Clustered Server Instances

The most common way to deploy the load balancer is with a cluster or
clusters of server instances. By default all the instances in a cluster
have the same configuration and the same applications deployed to them.
The load balancer distributes the workload between the server instances
and requests fail over from an unhealthy instance to a healthy one. If
you've configured HTTP session persistence, session information persists
when the request is failed over.

If you have multiple clusters, requests can be load balanced across
clusters but are only failed over between the instances in a single
cluster. Use multiple clusters in a load balancer to easily enable
rolling upgrades of applications. For more information, see
link:rolling-upgrade.html#abdik[Upgrading Applications Without Loss of Availability].


[NOTE]
====
Requests cannot be load balanced across clusters and standalone instances.
====


[[abdhc]][[GSHAG00233]][[using-multiple-standalone-instances]]

===== Using Multiple Standalone Instances

It is also possible to configure your load balancer to use multiple
standalone instances, and load balance and failover requests between
them. However, in this configuration, you must manually ensure that the
standalone instances have homogenous environments and the same
applications deployed to them. Because clusters automatically maintain a
homogenous environment, for most situations it is better and easier to
use clusters.


[TIP]
====
Load balancing across multiple standalone instances only provides
failover for requests, and any associated HTTP session data will not be
failed over. This is another reason why using a cluster, which can
provide session failover, is a more desirable load balancing
configuration.
====
