cloudstack/docs/en-US/gslb.xml

308 lines
18 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<section id="gslb">
<title>Global Server Load Balancing Support</title>
<para>&PRODUCT; supports Global Server Load Balancing (GSLB) functionalities to provide business
continuity, and enable seamless resource movement within a &PRODUCT; environment. &PRODUCT;
achieve this by extending its functionality of integrating with NetScaler Application Delivery
Controller (ADC), which also provides various GSLB capabilities, such as disaster recovery and
load balancing. The DNS redirection technique is used to achieve GSLB in &PRODUCT;. </para>
<para>In order to support his functionality, region level services and service provider are
introduced. A new service 'GSLB' is introduced as a region level service. The GSLB service
provider is introduced that will provider the GSLB service. Currently, NetScaler is the
supported GSLB provider in &PRODUCT;. GSLB functionality works in an Active-Active data center
environment. </para>
<section id="about-gslb">
<title>About Global Server Load Balancing</title>
<para>Global Server Load Balancing (GSLB) is an extension of load balancing functionality, which
is highly efficient in avoiding downtime. Based on the nature of deployment, GSLB represents a
set of technologies that is used for various purposes, such as load sharing, disaster
recovery, performance, and legal obligations. With GSLB, workloads can be distributed across
multiple data centers situated at geographically separated locations. GSLB can also provide an
alternate location for accessing a resource in the event of a failure, or to provide a means
of shifting traffic easily to simplify maintenance, or both.</para>
</section>
<section id="gslb-comp">
<title>Components of GSLB</title>
<para>A typical GSLB environment is comprised of the following components:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">GSLB Site</emphasis>: In &PRODUCT;terminology, GSLB sites are
represented by zones that are mapped to data centers, each of which has various network
appliances. Each GSLB site is managed by a NetScaler appliance that is local to that site.
Each of these appliances treats its own site as the local site and all other sites,
managed by other appliances, as remote sites.</para>
</listitem>
<listitem>
<para><emphasis role="bold">GSLB Services</emphasis>: A GSLB service is typically
represented by a load balancing or content switching virtual server. In a GSLB
environment, you can have a local as well as remote GSLB services. A local GSLB service
represents a local load balancing or content switching virtual server. A remote GSLB
service is the one configured at one of the other sites in the GSLB setup. At each site in
the GSLB setup, you can create one local GSLB service and any number of remote GSLB
services.</para>
</listitem>
<listitem>
<para><emphasis role="bold">GSLB Virtual Servers</emphasis>: A GSLB virtual server refers to
one or more GSLB services and balances traffic between traffic across the VMs in multiple
zones by using the &PRODUCT; functionality. It evaluates the configured GSLB methods or
algorithms to select a GSLB service to which to send the client requests. One or more
virtual servers from different zones are bound to the GSLB virtual server. GSLB virtual
server does not have a public IP associated with it, instead it will have a FQDN DNS
name.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Load Balancing or Content Switching Virtual Servers</emphasis>:
According to Citrix NetScaler terminology, a load balancing or content switching virtual
server represents one or many servers on the local network. Clients send their requests to
the load balancing or content switching virtual servers virtual IP (VIP) address, and the
virtual server balances the load across the local servers. After a GSLB virtual server
selects a GSLB service representing either a local or a remote load balancing or content
switching virtual server, the client sends the request to that virtual servers VIP
address.</para>
</listitem>
<listitem>
<para><emphasis role="bold">DNS VIPs</emphasis>: DNS virtual IP represents a load balancing
DNS virtual server on the GSLB service provider. The DNS requests for domains for which
the GSLB service provider is authoritative can be sent to a DNS VIP.</para>
</listitem>
<listitem>
<para><emphasis role="bold">ADNS</emphasis>: ADNS (Authoritative Domain Name Server) is a
service that provides actual answer to DNS queries, such as web site IP address. In a GSLB
environment, an ADNS service responds only to DNS requests for domains for which the GSLB
service provider is authoritative. When an ADNS service is configured, the service
provider owns that IP address and advertises it. When you create an ADNS service, the
NetScaler responds to DNS queries on the configured ADNS service IP and port.</para>
</listitem>
</itemizedlist>
</section>
<section id="prereq-gslb">
<title>Prerequisites and Guidelines</title>
<itemizedlist>
<listitem>
<para>The GSLB functionality is supported both Basic and Advanced zones.</para>
</listitem>
<listitem>
<para>GSLB is added as a new network service.</para>
</listitem>
<listitem>
<para>GSLB service provider can be added to a physical network in a zone.</para>
</listitem>
<listitem>
<para>The admin is allowed to enable or disable GSLB functionality at region level.</para>
</listitem>
<listitem>
<para>The admin is allowed to configure a zone as GSLB capable or enabled. </para>
<para>A zone shall be considered as GSLB capable only if a GSLB service provider is
provisioned in the zone.</para>
</listitem>
<listitem>
<para>When users have VMs deployed in multiple availability zones which are GSLB enabled,
they can use the GSLB functionality to load balance traffic across the VMs in multiple
zones.</para>
</listitem>
<listitem>
<para>The users can use GSLB to load balance across the VMs across zones in a region only if
the admin has enabled GSLB in that region. </para>
</listitem>
<listitem>
<para>The users can load balance traffic across the availability zones in the same region or
different regions.</para>
</listitem>
<listitem>
<para>The admin can configure DNS name for the entire cloud.</para>
</listitem>
<listitem>
<para>The users can specify an unique name across the cloud for a globally load balanced
service. The provided name is used as the domain name under the DNS name associated with
the cloud.</para>
<para>The user-provided name along with the admin-provided DNS name is used to produce a
globally resolvable FQDN for the globally load balanced service of the user. For example,
if the admin has configured xyztelco.com as the DNS name for the cloud, and user specifies
'foo' for the GSLB virtual service, then the FQDN name of the GSLB virtual service is
foo.xyztelco.com.</para>
</listitem>
<listitem>
<para>While setting up GSLB, users can select a load balancing method, such as round robin,
for using across the zones that are part of GSLB.</para>
</listitem>
<listitem>
<para>The user shall be able to set weight to zone-level virtual server. Weight shall be
considered by the load balancing method for distributing the traffic.</para>
</listitem>
<listitem>
<para>The GSLB functionality shall support session persistence, where series of client
requests for particular domain name is sent to a virtual server on the same zone. </para>
<para>Statistics is collected from each GSLB virtual server.</para>
</listitem>
</itemizedlist>
</section>
<section id="gslb-workflow">
<title>Configuring GSLB</title>
<para>To configure GSLB in your cloud environment, as a cloud administrator you must perform the
following.</para>
<para>To configure such a GSLB setup, you must first configure a standard load balancing setup
for each server farm or data center. This enables you to balance load across the different
servers in each server farm. Then, configure both NetScaler appliances as authoritative DNS
(ADNS) servers. Next, create a GSLB site for each server farm, configure GSLB virtual servers
for each site, create GLSB services, and bind the GSLB services to the GSLB virtual servers.
Finally, bind the domain to the GSLB virtual servers. The GSLB configurations on the two
appliances at the two different sites are identical, although each sites load-balancing
configuration is specific to that site.</para>
<orderedlist>
<listitem>
<para/>
</listitem>
</orderedlist>
</section>
<section id="gslb-add">
<title>Adding a GSLB Rule</title>
<orderedlist>
<listitem>
<para>Log in to the &PRODUCT; UI as administrator.</para>
</listitem>
<listitem>
<para>In the left navigation pane, click Region.</para>
</listitem>
<listitem>
<para>Select the region for which you want to create a GSLB rule.</para>
</listitem>
<listitem>
<para>In the Details tab, click View GSLB.</para>
</listitem>
<listitem>
<para>Click Add GSLB.</para>
<para>The Add GSLB page is displayed as follows:</para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/add-gslb.png"/>
</imageobject>
<textobject>
<phrase>gslb-add.png: adding a gslb rule</phrase>
</textobject>
</mediaobject>
</listitem>
<listitem>
<para>Specify the following:</para>
<itemizedlist>
<listitem>
<para><emphasis role="bold">Name</emphasis>: Name for the GSLB rule.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Description</emphasis>: (Optional) A short description of
the GSLB rule that can be displayed to users.</para>
</listitem>
<listitem>
<para><emphasis role="bold">GSLB Domain Name</emphasis>: A preferred domain name for the
service.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Algorithm</emphasis>: (Optional) The algorithm to use to
load balance the traffic across the zones. The options are Round Robin, Least
Connection, and Proximity.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Service Type</emphasis>: The transport protocol to use for
GSLB. The options are TCP and UDP.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Domain</emphasis>: (Optional) The domain for which you want
to create the GSLB rule.</para>
</listitem>
<listitem>
<para><emphasis role="bold">Account</emphasis>: (Optional) The account on which you want
to apply the GSLB rule.</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Click OK to confirm.</para>
</listitem>
</orderedlist>
</section>
<section id="assign-lb-gslb">
<title>Assigning Load Balancing Rules to GSLB</title>
<para/>
</section>
<section id="concept-gslb">
<title>How Does GSLB Works in &PRODUCT;?</title>
<para>Global server load balancing is used to manage traffic flow to a web site hosted on two
separate zones that ideally are in different geographic locations. The following is an
illustration of how GLSB functionality is provided in &PRODUCT;: An organization, xyztelco,
has set up a public cloud that spans two zones, Zone-1 and Zone-2, across geographically
separated data centers that are managed by &PRODUCT;. Tenant-A of the cloud launches a highly
available solution by using xyztelco cloud. For that purpose, they launch two instances each
in both the zones: VM1 and VM2 in Zone-1 and VM5 and VM6 in Zone-2. Tenant-A acquires a public
IP, IP-1 in Zone-1, and configures a load balancer rule to load balance the traffic between
VM1 and VM2 instances. &PRODUCT; orchestrates setting up a virtual server on the LB service
provider in Zone-1. Virtual server 1 that is set up on the LB service provider in Zone-1
represents a publicly accessible virtual server that client reaches at IP-1. The client
traffic to virtual server 1 at IP-1 will be load balanced across VM1 and VM2 instances. </para>
<para>Tenant-A acquires another public IP, IP-2 in Zone-2 and sets up a load balancer rule to
load balance the traffic between VM5 and VM6 instances. Similarly in Zone-2, &PRODUCT;
orchestrates setting up a virtual server on the LB service provider. Virtual server 2 that is
setup on the LB service provider in Zone-2 represents a publicly accessible virtual server
that client reaches at IP-2. The client traffic that reaches virtual server 2 at IP-2 is load
balanced across VM5 and VM6 instances. At this point Tenant-A has the service enabled in both
the zones, but has no means to set up a disaster recovery plan if one of the zone fails.
Additionally, there is no way for Tenant-A to load balance the traffic intelligently to one of
the zones based on load, proximity and so on. The cloud administrator of xyztelco provisions a
GSLB service provider to both the zones. A GSLB provider is typically an ADC that has the
ability to act as an ADNS (Authoritative Domain Name Server) and has the mechanism to monitor
health of virtual servers both at local and remote sites. The cloud admin enables GSLB as a
service to the tenants that use zones 1 and 2. </para>
<mediaobject>
<imageobject>
<imagedata fileref="./images/gslb.png"/>
</imageobject>
<textobject>
<phrase>gslb.png: GSLB architecture</phrase>
</textobject>
</mediaobject>
<para>Tenant-A wishes to leverage the GSLB service provided by the xyztelco cloud. Tenant-A
configures a GSLB rule to load balance traffic across virtual server 1 at Zone-1 and virtual
server 2 at Zone-2. The domain name is provided as A.xyztelco.com. &PRODUCT; orchestrates
setting up GSLB virtual server 1 on the GSLB service provider at Zone-1. &PRODUCT; binds
virtual server 1 of Zone-1 and virtual server 2 of Zone-2 to GLSB virtual server 1. GSLB
virtual server 1 is configured to start monitoring the health of virtual server 1 and 2 in
Zone-1. &PRODUCT; will also orchestrate setting up GSLB virtual server 2 on GSLB service
provider at Zone-2. &PRODUCT; will bind virtual server 1 of Zone-1 and virtual server 2 of
Zone-2 to GLSB virtual server 2. GSLB virtual server 2 is configured to start monitoring the
health of virtual server 1 and 2. &PRODUCT; will bind the domain A.xyztelco.com to both the
GSLB virtual server 1 and 2. At this point, Tenant-A service will be globally reachable at
A.xyztelco.com. The private DNS server for the domain xyztelcom.com is configured by the admin
out-of-band to resolve the domain A.xyztelco.com to the GSLB providers at both the zones,
which are configured as ADNS for the domain A.xyztelco.com. A client when sends a DNS request
to resolve A.xyztelcom.com, will eventually get DNS delegation to the address of GSLB
providers at Zone 1 and 2. A client DNS request will be received by the GSLB provider. The
GSLB provider, depending on the domain for which it needs to resolve, will pick up the GSLB
virtual server associated with the domain. Depending on the health of the virtual servers
being load balanced, DNS request for the domain will be resolved to the public IP associated
with the selected virtual server.</para>
</section>
<section id="limitation-gslb">
<title>Known Limitation</title>
<para>Currently, &PRODUCT; does not support orchestration of services across the zones. The
notion of services and service providers in region are to be introduced.</para>
</section>
</section>