type=page
status=published
title=create-http-lb
next=create-http-lb-config.html
prev=create-http-health-checker.html
~~~~~~
create-http-lb
==============

[[create-http-lb-1]][[GSRFM00027]][[create-http-lb]]

create-http-lb
--------------

creates a load balancer

[[sthref243]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] create-http-lb [--help] 
--devicehost device_host_or_IP_address --deviceport device_port 
[--sslproxyhost proxy_host] 
[--sslproxyport proxy_port] [--target target] [--lbpolicy lbpolicy] [--lbpolicymodule lb_policy_module] [--healthcheckerurl url]
[--healthcheckerinterval 10] [--healthcheckertimeout 10]
[--lbenableallinstances=true] [--lbenableallapplications=true] [--lbweight instance=weight[:instance=weight]*] [--responsetimeout 60] [--httpsrouting=false] [--reloadinterval60][--monitor=false][--routecookie=true] 
[--property (name=value)[:name=value]*
] load_balancer_name
----

[[sthref244]]

Description

Use the `create-http-lb` subcommand to create a load balancer, including
the load balancer configuration, target reference, and health checker. A
load balancer is a representation of the actual load balancer device,
defined by its device host and port information. Once you've created the
load balancer, you can automatically apply changes made to the load
balancer configuration without running `export-http-lb-config` and
manually copying the generated load balancer configuration file to the
web server instance.


[NOTE]
=======================================================================

This subcommand is only applicable to Oracle GlassFish Server. This
subcommand is not applicable to GlassFish Server Open Source Edition.

=======================================================================


[[sthref245]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--devicehost`::
  The device host or the IP address of the load balancing device. This
  host or IP is where the physical load balancer will reside.
`--deviceport`::
  The port used to communicate with the load balancing device. It must
  be SSL enabled.
`--sslproxyhost`::
  The proxy host used for outbound HTTP.
`--sslproxyport`::
  The proxy port used for outbound HTTP.
`--target`::
  Specifies the target to which the load balancer applies. +
  Valid values are: +
  * cluster_name- Specifies that requests for this cluster will be
  handled by the load balancer.
  * stand-alone_instance_name- Specifies that requests for this
  stand-alone instance will be handled by the load balancer.
`--lbpolicy`::
  The policy the load balancer follows to distribute load to the server
  instances in a cluster. Valid values are `round-robin`,
  `weighted-round-robin`, and `user-defined`. If you choose
  `user-defined`, specify a load balancer policy module with the
  `lbpolicymodule` option. If you choose `weighted-round-robin`, assign
  weights to the server instances using the `configure-lb-weight`
  subcommand. The default is `round-robin`.
`--lbpolicymodule`::
  If your target is a cluster and the load balancer policy is
  `user-defined`, use this option to specify the full path and name of
  the shared library of your load balancing policy module. The shared
  library needs to be in a location accessible by the web server.
`--healthcheckerurl`::
  The URL to ping to determine whether the instance is healthy.
`--healthcheckerinterval`::
  The interval in seconds the health checker waits between checks of an
  unhealthy instance to see whether it has become healthy. The default
  value is 10 seconds. A value of 0 disables the health checker.
`--healthcheckertimeout`::
  The interval in seconds the health checker waits to receive a response
  from an instance. If the health checker has not received a response in
  this interval, the instance is considered unhealthy. The default value
  is 10 seconds.
`--lbenableallinstances`::
  Enables all instances in the target cluster for load balancing. If the
  target is a server instance, enables that instance for load balancing.
`--lbenableallapplications`::
  Enables all applications deployed to the target cluster or instance
  for load balancing.
`--lbweight`::
  The name of the instance and the weight you are assigning it. The
  weight must be an integer. The pairs of instances and weights are
  separated by colons. For example `instance1=1:instance2=4` means that
  for every five requests, one goes to instance1 and four go to
  instance2. A weight of 1 is the default.
`--responsetimeout`::
  The time in seconds within which a server instance must return a
  response. If no response is received within the time period, the
  server is considered unhealthy. If set to a positive number, and the
  request is idempotent, the request is retried. If the request is not
  idempotent, an error page is returned. If set to 0 no timeout is used.
  The default is 60.
`--httpsrouting`::
  If set to `true`, HTTPS requests to the load balancer result in HTTPS
  requests to the server instance. If set to `false`, HTTPS requests to
  the load balancer result in HTTP requests to the server instance. The
  default is `false`.
`--reloadinterval`::
  The time, in seconds, that the load balancer takes to check for an
  updated configuration. When detected, the configuration file is
  reloaded. The default value is 60 seconds. A value of 0 disables
  reloading.
`--monitor`::
  If set to `true`, monitoring of the load balancer is switched on. The
  default value is `false`.
`--routecookie`::
  This option is deprecated. The value is always true.
`--property`::
  Optional attribute name/value pairs for configuring the load balancer.

[[sthref246]]

Operands

lb_name::
  The name of the new load balancer. This name must not conflict with
  any other load balancers in the domain.

[[sthref247]]

Examples

[[GSRFM478]][[sthref248]]

Example 1   Creating a Load Balancer

This example creates a load balancer named `mylb`.

[source,oac_no_warn]
----
asadmin> create-http-lb 
--devicehost host1 --deviceport 5555 mylb

Command create-http-lb executed successfully.
----

[[sthref249]]

Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref250]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:delete-http-lb.html#delete-http-lb-1[`delete-http-lb`(1)],
link:list-http-lbs.html#list-http-lbs-1[`list-http-lbs`(1)],
link:create-http-lb-config.html#create-http-lb-config-1[`create-http-lb-config`(1)]


