| <?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 this 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 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. It is the central entity in a GSLB |
| deployment, and is represented by a name and an IP address.</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 server’s |
| 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 server’s 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">Authoritative DNS</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="concept-gslb"> |
| <title>How Does GSLB Works in &PRODUCT;?</title> |
| <para>Global server load balancing is used to manage the 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> |
| <section id="gslb-workflow"> |
| <title>Configuring GSLB</title> |
| <para>To configure a GSLB deployment, you must first configure a standard load balancing setup |
| for each zone. This enables you to balance load across the different servers in each zone in |
| the region. Then on the NetScaler side, configure both NetScaler appliances that you plan to |
| add to each zone as authoritative DNS (ADNS) servers. Next, create a GSLB site for each zone, |
| 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 zones are identical, although each |
| sites load-balancing configuration is specific to that site.</para> |
| <para>Perform the following as a cloud administrator. As per the example given above, the |
| administrator of xyztelco is the one who sets up GSLB:</para> |
| <orderedlist> |
| <listitem> |
| <para>In the cloud.dns.name global parameter, specify the DNS name of your tenant's cloud |
| that make use of the GSLB service.</para> |
| </listitem> |
| <listitem> |
| <para>On the NetScaler side, configure GSLB as given in <ulink |
| url="http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-con.html" |
| >Configuring Global Server Load Balancing (GSLB)</ulink>:</para> |
| <orderedlist> |
| <listitem> |
| <para>Configuring a standard load balancing setup.</para> |
| </listitem> |
| <listitem> |
| <para>Configure Authoritative DNS, as explained in <ulink |
| url="http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-adns-svc-tsk.html" |
| >Configuring an Authoritative DNS Service</ulink>.</para> |
| </listitem> |
| <listitem> |
| <para>Configure a GSLB site with site name formed from the domain name details.</para> |
| <para>Configure a GSLB site with the site name formed from the domain name.</para> |
| <para>As per the example given above, the site names are A.xyztelco.com and |
| B.xyztelco.com.</para> |
| <para>For more information, see <ulink |
| url="http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-basic-site-tsk.html" |
| >Configuring a Basic GSLB Site</ulink>.</para> |
| </listitem> |
| <listitem> |
| <para>Configure a GSLB virtual server.</para> |
| <para>For more information, see <ulink |
| url="http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-vsvr-tsk.html" |
| >Configuring a GSLB Virtual Server</ulink>.</para> |
| </listitem> |
| <listitem> |
| <para>Configure a GSLB service for each virtual server.</para> |
| <para>For more information, see <ulink |
| url="http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-svc-tsk.html" |
| >Configuring a GSLB Service</ulink>.</para> |
| </listitem> |
| <listitem> |
| <para>Bind the GSLB services to the GSLB virtual server.</para> |
| <para>For more information, see <ulink |
| url="http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-bind-svc-vsvr-tsk.html" |
| >Binding GSLB Services to a GSLB Virtual Server</ulink>.</para> |
| </listitem> |
| <listitem> |
| <para>Bind domain name to GSLB virtual server. Domain name is obtained from the domain |
| details.</para> |
| <para>For more information, see <ulink |
| url="http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-bind-dom-vsvr-tsk.html" |
| >Binding a Domain to a GSLB Virtual Server</ulink>.</para> |
| </listitem> |
| </orderedlist> |
| </listitem> |
| <listitem> |
| <para>In each zone that are participating in GSLB, add GSLB-enabled NetScaler device.</para> |
| <para>For more information, see <xref linkend="enable-glsb-ns"/>.</para> |
| </listitem> |
| </orderedlist> |
| <para>As a domain administrator/ user perform the following:</para> |
| <orderedlist> |
| <listitem> |
| <para>Add a GSLB rule on both the sites.</para> |
| <para>See <xref linkend="gslb-add"/>.</para> |
| </listitem> |
| <listitem> |
| <para>Assign load balancer rules.</para> |
| <para>See <xref linkend="assign-lb-gslb"/>.</para> |
| </listitem> |
| </orderedlist> |
| <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="enable-glsb-ns"> |
| <title>Enabling GSLB in NetScaler</title> |
| <para>In each zone, add GSLB-enabled NetScaler device for load balancing.</para> |
| <orderedlist> |
| <listitem> |
| <para>Log in as administrator to the &PRODUCT; UI.</para> |
| </listitem> |
| <listitem> |
| <para>In the left navigation bar, click Infrastructure.</para> |
| </listitem> |
| <listitem> |
| <para>In Zones, click View More.</para> |
| </listitem> |
| <listitem> |
| <para>Choose the zone you want to work with.</para> |
| </listitem> |
| <listitem> |
| <para>Click the Physical Network tab, then click the name of the physical network. </para> |
| </listitem> |
| <listitem> |
| <para>In the Network Service Providers node of the diagram, click Configure. </para> |
| <para>You might have to scroll down to see this.</para> |
| </listitem> |
| <listitem> |
| <para>Click NetScaler.</para> |
| </listitem> |
| <listitem> |
| <para>Click Add NetScaler device and provide the following:</para> |
| <para>For NetScaler:</para> |
| <itemizedlist> |
| <listitem> |
| <para><emphasis role="bold">IP Address</emphasis>: The IP address of the SDX.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Username/Password</emphasis>: The authentication |
| credentials to access the device. &PRODUCT; uses these credentials to access the |
| device.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Type</emphasis>: The type of device that is being added. |
| It could be F5 Big Ip Load Balancer, NetScaler VPX, NetScaler MPX, or NetScaler SDX. |
| For a comparison of the NetScaler types, see the &PRODUCT; Administration |
| Guide.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Public interface</emphasis>: Interface of device that is |
| configured to be part of the public network.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Private interface</emphasis>: Interface of device that is |
| configured to be part of the private network.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">GSLB service</emphasis>: Select this option.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">GSLB service Public IP</emphasis>: The public IP address |
| of the NAT translator for a GSLB service that is on a private network.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">GSLB service Private IP</emphasis>: The private IP of the |
| GSLB service.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Number of Retries</emphasis>. Number of times to attempt a |
| command on the device before considering the operation failed. Default is 2.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Capacity</emphasis>: The number of networks the device can |
| handle.</para> |
| </listitem> |
| <listitem> |
| <para><emphasis role="bold">Dedicated</emphasis>: When marked as dedicated, this |
| device will be dedicated to a single account. When Dedicated is checked, the value |
| in the Capacity field has no significance implicitly, its value is 1.</para> |
| </listitem> |
| </itemizedlist> |
| </listitem> |
| <listitem> |
| <para>Click OK.</para> |
| </listitem> |
| </orderedlist> |
| </section> |
| <section id="gslb-add"> |
| <title>Adding a GSLB Rule</title> |
| <orderedlist> |
| <listitem> |
| <para>Log in to the &PRODUCT; UI as a domain administrator or user.</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> |
| <orderedlist> |
| <listitem> |
| <para>Log in to the &PRODUCT; UI as a domain administrator or user.</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>Select the desired GSLB.</para> |
| </listitem> |
| <listitem> |
| <para>Click view assigned load balancing.</para> |
| </listitem> |
| <listitem> |
| <para>Click assign more load balancing.</para> |
| </listitem> |
| <listitem> |
| <para>Select the load balancing rule you have created for the zone.</para> |
| </listitem> |
| <listitem> |
| <para>Click OK to confirm.</para> |
| </listitem> |
| </orderedlist> |
| </section> |
| </section> |
| <section> |
| <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> |