blob: 6a8f473924876e7643a20b30a8adfe36055f298a [file] [log] [blame]
.. 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.
Managing Networks and Traffic
=============================
In a CloudStack, guest VMs can communicate with each other using shared
infrastructure with the security and user perception that the guests
have a private LAN. The CloudStack virtual router is the main component
providing networking features for guest traffic.
Guest Traffic
-------------
A network can carry guest traffic only between VMs within one zone.
Virtual machines in different zones cannot communicate with each other
using their IP addresses; they must communicate with each other by
routing through a public IP address.
See a typical guest traffic setup given below:
|guest-traffic-setup.png: Depicts a guest traffic setup|
Typically, the Management Server automatically creates a virtual router
for each network. A virtual router is a special virtual machine that
runs on the hosts. Each virtual router in an isolated network has three
network interfaces. If multiple public VLAN is used, the router will
have multiple public interfaces. Its eth0 interface serves as the
gateway for the guest traffic and has the IP address of 10.1.1.1. Its
eth1 interface is used by the system to configure the virtual router.
Its eth2 interface is assigned a public IP address for public traffic.
If multiple public VLAN is used, the router will have multiple public
interfaces.
The virtual router provides DHCP and will automatically assign an IP
address for each guest VM within the IP range assigned for the network.
The user can manually reconfigure guest VMs to assume different IP
addresses.
Source NAT is automatically configured in the virtual router to forward
outbound traffic for all guest VMs
Networking in a Pod
-------------------
The figure below illustrates network setup within a single pod. The
hosts are connected to a pod-level switch. At a minimum, the hosts
should have one physical uplink to each switch. Bonded NICs are
supported as well. The pod-level switch is a pair of redundant gigabit
switches with 10 G uplinks.
|networksinglepod.png: diagram showing logical view of network in a pod|
Servers are connected as follows:
-
Storage devices are connected to only the network that carries
management traffic.
-
Hosts are connected to networks for both management traffic and
public traffic.
-
Hosts are also connected to one or more networks carrying guest
traffic.
We recommend the use of multiple physical Ethernet cards to implement
each network interface as well as redundant switch fabric in order to
maximize throughput and improve reliability.
Networking in a Zone
--------------------
The following figure illustrates the network setup within a single zone.
|networksetupzone.png: Depicts network setup in a single zone|
A firewall for management traffic operates in the NAT mode. The network
typically is assigned IP addresses in the 192.168.0.0/16 Class B private
address space. Each pod is assigned IP addresses in the 192.168.\*.0/24
Class C private address space.
Each zone has its own set of public IP addresses. Public IP addresses
from different zones do not overlap.
Basic Zone Physical Network Configuration
-----------------------------------------
In a basic network, configuring the physical network is fairly
straightforward. You only need to configure one guest network to carry
traffic that is generated by guest VMs. When you first add a zone to
CloudStack, you set up the guest network through the Add Zone screens.
Advanced Zone Physical Network Configuration
--------------------------------------------
Within a zone that uses advanced networking, you need to tell the
Management Server how the physical network is set up to carry different
kinds of traffic in isolation.
Configure Guest Traffic in an Advanced Zone
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
These steps assume you have already logged in to the CloudStack UI. To
configure the base guest network:
#.
In the left navigation, choose Infrastructure. On Zones, click View
More, then click the zone to which you want to add a network.
#.
Click the Network tab.
#.
Click Add guest network.
The Add guest network window is displayed:
|addguestnetwork.png: Add guest network setup in a single zone|
#.
Provide the following information:
-
**Name**. The name of the network. This will be user-visible
-
**Display Text**: The description of the network. This will be
user-visible
-
**Zone**: The zone in which you are configuring the guest network.
-
**Network offering**: If the administrator has configured multiple
network offerings, select the one you want to use for this network
-
**Guest Gateway**: The gateway that the guests should use
-
**Guest Netmask**: The netmask in use on the subnet the guests
will use
#.
Click OK.
Configure Public Traffic in an Advanced Zone
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In a zone that uses advanced networking, you need to configure at least
one range of IP addresses for Internet traffic.
Configuring a Shared Guest Network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as administrator.
#.
In the left navigation, choose Infrastructure.
#.
On Zones, click View More.
#.
Click the zone to which you want to add a guest network.
#.
Click the Physical Network tab.
#.
Click the physical network you want to work with.
#.
On the Guest node of the diagram, click Configure.
#.
Click the Network tab.
#.
Click Add guest network.
The Add guest network window is displayed.
#.
Specify the following:
-
**Name**: The name of the network. This will be visible to the
user.
-
**Description**: The short description of the network that can be
displayed to users.
-
**VLAN ID**: The unique ID of the VLAN.
-
**Isolated VLAN ID**: The unique ID of the Secondary Isolated
VLAN.
-
**Scope**: The available scopes are Domain, Account, Project, and
All.
-
**Domain**: Selecting Domain limits the scope of this guest
network to the domain you specify. The network will not be
available for other domains. If you select Subdomain Access,
the guest network is available to all the sub domains within
the selected domain.
-
**Account**: The account for which the guest network is being
created for. You must specify the domain the account belongs
to.
-
**Project**: The project for which the guest network is being
created for. You must specify the domain the project belongs
to.
-
**All**: The guest network is available for all the domains,
account, projects within the selected zone.
-
**Network Offering**: If the administrator has configured multiple
network offerings, select the one you want to use for this
network.
-
**Gateway**: The gateway that the guests should use.
-
**Netmask**: The netmask in use on the subnet the guests will use.
-
**IP Range**: A range of IP addresses that are accessible from the
Internet and are assigned to the guest VMs.
If one NIC is used, these IPs should be in the same CIDR in the
case of IPv6.
-
**IPv6 CIDR**: The network prefix that defines the guest network
subnet. This is the CIDR that describes the IPv6 addresses in use
in the guest networks in this zone. To allot IP addresses from
within a particular address block, enter a CIDR.
-
**Network Domain**: A custom DNS suffix at the level of a network.
If you want to assign a special domain name to the guest VM
network, specify a DNS suffix.
#.
Click OK to confirm.
Using Multiple Guest Networks
-----------------------------
In zones that use advanced networking, additional networks for guest
traffic may be added at any time after the initial installation. You can
also customize the domain name associated with the network by specifying
a DNS suffix for each network.
A VM's networks are defined at VM creation time. A VM cannot add or
remove networks after it has been created, although the user can go into
the guest and remove the IP address from the NIC on a particular
network.
Each VM has just one default network. The virtual router's DHCP reply
will set the guest's default gateway as that for the default network.
Multiple non-default networks may be added to a guest in addition to the
single, required default network. The administrator can control which
networks are available as the default network.
Additional networks can either be available to all accounts or be
assigned to a specific account. Networks that are available to all
accounts are zone-wide. Any user with access to the zone can create a VM
with access to that network. These zone-wide networks provide little or
no isolation between guests.Networks that are assigned to a specific
account provide strong isolation.
Adding an Additional Guest Network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click Add guest network. Provide the following information:
-
**Name**: The name of the network. This will be user-visible.
-
**Display Text**: The description of the network. This will be
user-visible.
-
**Zone**. The name of the zone this network applies to. Each zone
is a broadcast domain, and therefore each zone has a different IP
range for the guest network. The administrator must configure the
IP range for each zone.
-
**Network offering**: If the administrator has configured multiple
network offerings, select the one you want to use for this
network.
-
**Guest Gateway**: The gateway that the guests should use.
-
**Guest Netmask**: The netmask in use on the subnet the guests
will use.
#.
Click Create.
Reconfiguring Networks in VMs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CloudStack provides you the ability to move VMs between networks and
reconfigure a VM's network. You can remove a VM from a network and add
to a new network. You can also change the default network of a virtual
machine. With this functionality, hybrid or traditional server loads can
be accommodated with ease.
This feature is supported on XenServer, VMware, and KVM hypervisors.
Prerequisites
^^^^^^^^^^^^^
Ensure that vm-tools are running on guest VMs for adding or removing
networks to work on VMware hypervisor.
Adding a Network
^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, click Instances.
#.
Choose the VM that you want to work with.
#.
Click the NICs tab.
#.
Click Add network to VM.
The Add network to VM dialog is displayed.
#.
In the drop-down list, select the network that you would like to add
this VM to.
A new NIC is added for this network. You can view the following
details in the NICs page:
-
ID
-
Network Name
-
Type
-
IP Address
-
Gateway
-
Netmask
-
Is default
-
CIDR (for IPv6)
Removing a Network
^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, click Instances.
#.
Choose the VM that you want to work with.
#.
Click the NICs tab.
#.
Locate the NIC you want to remove.
#.
Click Remove NIC button. |remove-nic.png: button to remove a NIC|
#.
Click Yes to confirm.
Selecting the Default Network
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, click Instances.
#.
Choose the VM that you want to work with.
#.
Click the NICs tab.
#.
Locate the NIC you want to work with.
#.
Click the Set default NIC button. |set-default-nic.png: button to set
a NIC as default one.|
#.
Click Yes to confirm.
Changing the Network Offering on a Guest Network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A user or administrator can change the network offering that is
associated with an existing guest network.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
If you are changing from a network offering that uses the CloudStack
virtual router to one that uses external devices as network service
providers, you must first stop all the VMs on the network.
#.
In the left navigation, choose Network.
#.
Click the name of the network you want to modify.
#.
In the Details tab, click Edit. |EditButton.png: button to edit a
network|
#.
In Network Offering, choose the new network offering, then click
Apply.
A prompt is displayed asking whether you want to keep the existing
CIDR. This is to let you know that if you change the network
offering, the CIDR will be affected.
If you upgrade between virtual router as a provider and an external
network device as provider, acknowledge the change of CIDR to
continue, so choose Yes.
#.
Wait for the update to complete. Don’t try to restart VMs until the
network change is complete.
#.
If you stopped any VMs, restart them.
IP Reservation in Isolated Guest Networks
-----------------------------------------
In isolated guest networks, a part of the guest IP address space can be
reserved for non-CloudStack VMs or physical servers. To do so, you
configure a range of Reserved IP addresses by specifying the CIDR when a
guest network is in Implemented state. If your customers wish to have
non-CloudStack controlled VMs or physical servers on the same network,
they can share a part of the IP address space that is primarily provided
to the guest network.
In an Advanced zone, an IP address range or a CIDR is assigned to a
network when the network is defined. The CloudStack virtual router acts
as the DHCP server and uses CIDR for assigning IP addresses to the guest
VMs. If you decide to reserve CIDR for non-CloudStack purposes, you can
specify a part of the IP address range or the CIDR that should only be
allocated by the DHCP service of the virtual router to the guest VMs
created in CloudStack. The remaining IPs in that network are called
Reserved IP Range. When IP reservation is configured, the administrator
can add additional VMs or physical servers that are not part of
CloudStack to the same network and assign them the Reserved IP
addresses. CloudStack guest VMs cannot acquire IPs from the Reserved IP
Range.
IP Reservation Considerations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Consider the following before you reserve an IP range for non-CloudStack
machines:
-
IP Reservation is supported only in Isolated networks.
-
IP Reservation can be applied only when the network is in Implemented
state.
-
No IP Reservation is done by default.
-
Guest VM CIDR you specify must be a subset of the network CIDR.
-
Specify a valid Guest VM CIDR. IP Reservation is applied only if no
active IPs exist outside the Guest VM CIDR.
You cannot apply IP Reservation if any VM is alloted with an IP
address that is outside the Guest VM CIDR.
-
To reset an existing IP Reservation, apply IP reservation by
specifying the value of network CIDR in the CIDR field.
For example, the following table describes three scenarios of guest
network creation:
===== =========== ============ ======================================== =============================================================
Case CIDR Network CIDR Reserved IP Range for Non-CloudStack VMs Description
===== =========== ============ ======================================== =============================================================
1 10.1.1.0/24 None None No IP Reservation.
2 10.1.1.0/26 10.1.1.0/24 10.1.1.64 to 10.1.1.254 IP Reservation configured by the UpdateNetwork API with guestvmcidr=10.1.1.0/26 or enter 10.1.1.0/26 in the CIDR field in the UI.
3 10.1.1.0/24 None None Removing IP Reservation by the UpdateNetwork API with guestvmcidr=10.1.1.0/24 or enter 10.1.1.0/24 in the CIDR field in the UI.
===== =========== ============ ======================================== =============================================================
Limitations
~~~~~~~~~~~
-
The IP Reservation is not supported if active IPs that are found
outside the Guest VM CIDR.
-
Upgrading network offering which causes a change in CIDR (such as
upgrading an offering with no external devices to one with external
devices) IP Reservation becomes void if any. Reconfigure IP
Reservation in the new re-implemeted network.
Best Practices
~~~~~~~~~~~~~~
Apply IP Reservation to the guest network as soon as the network state
changes to Implemented. If you apply reservation soon after the first
guest VM is deployed, lesser conflicts occurs while applying
reservation.
Reserving an IP Range
~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click the name of the network you want to modify.
#.
In the Details tab, click Edit. |edit-icon.png: button to edit a
network|
The CIDR field changes to editable one.
#.
In CIDR, specify the Guest VM CIDR.
#.
Click Apply.
Wait for the update to complete. The Network CIDR and the Reserved IP
Range are displayed on the Details page.
Reserving Public IP Addresses and VLANs for Accounts
----------------------------------------------------
CloudStack provides you the ability to reserve a set of public IP
addresses and VLANs exclusively for an account. During zone creation,
you can continue defining a set of VLANs and multiple public IP ranges.
This feature extends the functionality to enable you to dedicate a fixed
set of VLANs and guest IP addresses for a tenant.
Note that if an account has consumed all the VLANs and IPs dedicated to
it, the account can acquire two more resources from the system.
CloudStack provides the root admin with two configuration parameter to
modify this default behavior—use.system.public.ips and
use.system.guest.vlans. These global parameters enable the root admin to
disallow an account from acquiring public IPs and guest VLANs from the
system, if the account has dedicated resources and these dedicated
resources have all been consumed. Both these configurations are
configurable at the account level.
This feature provides you the following capabilities:
-
Reserve a VLAN range and public IP address range from an Advanced
zone and assign it to an account
-
Disassociate a VLAN and public IP address range from an account
-
View the number of public IP addresses allocated to an account
-
Check whether the required range is available and is conforms to
account limits.
The maximum IPs per account limit cannot be superseded.
Dedicating IP Address Ranges to an Account
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as administrator.
#.
In the left navigation bar, click Infrastructure.
#.
In Zones, click View All.
#.
Choose the zone you want to work with.
#.
Click the Physical Network tab.
#.
In the Public node of the diagram, click Configure.
#.
Click the IP Ranges tab.
You can either assign an existing IP range to an account, or create a
new IP range and assign to an account.
#.
To assign an existing IP range to an account, perform the following:
#.
Locate the IP range you want to work with.
#.
Click Add Account |addAccount-icon.png: button to assign an IP
range to an account.| button.
The Add Account dialog is displayed.
#.
Specify the following:
-
**Account**: The account to which you want to assign the IP
address range.
-
**Domain**: The domain associated with the account.
To create a new IP range and assign an account, perform the
following:
#.
Specify the following:
-
**Gateway**
-
**Netmask**
-
**VLAN**
-
**Start IP**
-
**End IP**
-
**Account**: Perform the following:
#.
Click Account.
The Add Account page is displayed.
#.
Specify the following:
-
****Account****: The account to which you want to
assign an IP address range.
-
****Domain****: The domain associated with the
account.
#.
Click OK.
#.
Click Add.
Dedicating VLAN Ranges to an Account
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
After the CloudStack Management Server is installed, log in to the
CloudStack UI as administrator.
#.
In the left navigation bar, click Infrastructure.
#.
In Zones, click View All.
#.
Choose the zone you want to work with.
#.
Click the Physical Network tab.
#.
In the Guest node of the diagram, click Configure.
#.
Select the Dedicated VLAN Ranges tab.
#.
Click Dedicate VLAN Range.
The Dedicate VLAN Range dialog is displayed.
#.
Specify the following:
-
****VLAN Range****: The VLAN range that you want to assign to an
account.
-
****Account****: The account to which you want to assign the
selected VLAN range.
-
****Domain****: The domain associated with the account.
Configuring Multiple IP Addresses on a Single NIC
-------------------------------------------------
CloudStack provides you the ability to associate multiple private IP
addresses per guest VM NIC. In addition to the primary IP, you can
assign additional IPs to the guest VM NIC. This feature is supported on
all the network configurations—Basic, Advanced, and VPC. Security
Groups, Static NAT and Port forwarding services are supported on these
additional IPs.
As always, you can specify an IP from the guest subnet; if not
specified, an IP is automatically picked up from the guest VM subnet.
You can view the IPs associated with for each guest VM NICs on the UI.
You can apply NAT on these additional guest IPs by using network
configuration option in the CloudStack UI. You must specify the NIC to
which the IP should be associated.
This feature is supported on XenServer, KVM, and VMware hypervisors.
Note that Basic zone security groups are not supported on VMware.
Use Cases
~~~~~~~~~
Some of the use cases are described below:
-
Network devices, such as firewalls and load balancers, generally work
best when they have access to multiple IP addresses on the network
interface.
-
Moving private IP addresses between interfaces or instances.
Applications that are bound to specific IP addresses can be moved
between instances.
-
Hosting multiple SSL Websites on a single instance. You can install
multiple SSL certificates on a single instance, each associated with
a distinct IP address.
Guidelines
~~~~~~~~~~
To prevent IP conflict, configure different subnets when multiple
networks are connected to the same VM.
Assigning Additional IPs to a VM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI.
#.
In the left navigation bar, click Instances.
#.
Click the name of the instance you want to work with.
#.
In the Details tab, click NICs.
#.
Click View Secondary IPs.
#.
Click Acquire New Secondary IP, and click Yes in the confirmation
dialog.
You need to configure the IP on the guest VM NIC manually. CloudStack
will not automatically configure the acquired IP address on the VM.
Ensure that the IP address configuration persist on VM reboot.
Within a few moments, the new IP address should appear with the state
Allocated. You can now use the IP address in Port Forwarding or
StaticNAT rules.
Port Forwarding and StaticNAT Services Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Because multiple IPs can be associated per NIC, you are allowed to
select a desired IP for the Port Forwarding and StaticNAT services. The
default is the primary IP. To enable this functionality, an extra
optional parameter 'vmguestip' is added to the Port forwarding and
StaticNAT APIs (enableStaticNat, createIpForwardingRule) to indicate on
what IP address NAT need to be configured. If vmguestip is passed, NAT
is configured on the specified private IP of the VM. if not passed, NAT
is configured on the primary IP of the VM.
About Multiple IP Ranges
------------------------
.. note:: The feature can only be implemented on IPv4 addresses.
CloudStack provides you with the flexibility to add guest IP ranges from
different subnets in Basic zones and security groups-enabled Advanced
zones. For security groups-enabled Advanced zones, it implies multiple
subnets can be added to the same VLAN. With the addition of this
feature, you will be able to add IP address ranges from the same subnet
or from a different one when IP address are exhausted. This would in
turn allows you to employ higher number of subnets and thus reduce the
address management overhead. To support this feature, the capability of
``createVlanIpRange`` API is extended to add IP ranges also from a
different subnet.
Ensure that you manually configure the gateway of the new subnet before
adding the IP range. Note that CloudStack supports only one gateway for
a subnet; overlapping subnets are not currently supported.
Use the ``deleteVlanRange`` API to delete IP ranges. This operation
fails if an IP from the remove range is in use. If the remove range
contains the IP address on which the DHCP server is running, CloudStack
acquires a new IP from the same subnet. If no IP is available in the
subnet, the remove operation fails.
This feature is supported on KVM, xenServer, and VMware hypervisors.
About Elastic IP
----------------
Elastic IP (EIP) addresses are the IP addresses that are associated with
an account, and act as static IP addresses. The account owner has the
complete control over the Elastic IP addresses that belong to the
account. As an account owner, you can allocate an Elastic IP to a VM of
your choice from the EIP pool of your account. Later if required you can
reassign the IP address to a different VM. This feature is extremely
helpful during VM failure. Instead of replacing the VM which is down,
the IP address can be reassigned to a new VM in your account.
Similar to the public IP address, Elastic IP addresses are mapped to
their associated private IP addresses by using StaticNAT. The EIP
service is equipped with StaticNAT (1:1) service in an EIP-enabled basic
zone. The default network offering,
DefaultSharedNetscalerEIPandELBNetworkOffering, provides your network
with EIP and ELB network services if a NetScaler device is deployed in
your zone. Consider the following illustration for more details.
|eip-ns-basiczone.png: Elastic IP in a NetScaler-enabled Basic Zone.|
In the illustration, a NetScaler appliance is the default entry or exit
point for the CloudStack instances, and firewall is the default entry or
exit point for the rest of the data center. Netscaler provides LB
services and staticNAT service to the guest networks. The guest traffic
in the pods and the Management Server are on different subnets / VLANs.
The policy-based routing in the data center core switch sends the public
traffic through the NetScaler, whereas the rest of the data center goes
through the firewall.
The EIP work flow is as follows:
-
When a user VM is deployed, a public IP is automatically acquired
from the pool of public IPs configured in the zone. This IP is owned
by the VM's account.
-
Each VM will have its own private IP. When the user VM starts, Static
NAT is provisioned on the NetScaler device by using the Inbound
Network Address Translation (INAT) and Reverse NAT (RNAT) rules
between the public IP and the private IP.
.. note:: Inbound NAT (INAT) is a type of NAT supported by NetScaler, in which the destination IP address is replaced in the packets from the public network, such as the Internet, with the private IP address of a VM in the private network. Reverse NAT (RNAT) is a type of NAT supported by NetScaler, in which the source IP address is replaced in the packets generated by a VM in the private network with the public IP address.
-
This default public IP will be released in two cases:
-
When the VM is stopped. When the VM starts, it again receives a
new public IP, not necessarily the same one allocated initially,
from the pool of Public IPs.
-
The user acquires a public IP (Elastic IP). This public IP is
associated with the account, but will not be mapped to any private
IP. However, the user can enable Static NAT to associate this IP
to the private IP of a VM in the account. The Static NAT rule for
the public IP can be disabled at any time. When Static NAT is
disabled, a new public IP is allocated from the pool, which is not
necessarily be the same one allocated initially.
For the deployments where public IPs are limited resources, you have the
flexibility to choose not to allocate a public IP by default. You can
use the Associate Public IP option to turn on or off the automatic
public IP assignment in the EIP-enabled Basic zones. If you turn off the
automatic public IP assignment while creating a network offering, only a
private IP is assigned to a VM when the VM is deployed with that network
offering. Later, the user can acquire an IP for the VM and enable static
NAT.
For more information on the Associate Public IP option, see the
Administration Guide.
.. note:: The Associate Public IP feature is designed only for use with user VMs. The System VMs continue to get both public IP and private by default, irrespective of the network offering configuration.
New deployments which use the default shared network offering with EIP
and ELB services to create a shared network in the Basic zone will
continue allocating public IPs to each user VM.
Portable IPs
------------
About Portable IP
~~~~~~~~~~~~~~~~~
Portable IPs in CloudStack are region-level pool of IPs, which are
elastic in nature, that can be transferred across geographically
separated zones. As an administrator, you can provision a pool of
portable public IPs at region level and are available for user
consumption. The users can acquire portable IPs if admin has provisioned
portable IPs at the region level they are part of. These IPs can be use
for any service within an advanced zone. You can also use portable IPs
for EIP services in basic zones.
The salient features of Portable IP are as follows:
-
IP is statically allocated
-
IP need not be associated with a network
-
IP association is transferable across networks
-
IP is transferable across both Basic and Advanced zones
-
IP is transferable across VPC, non-VPC isolated and shared networks
-
Portable IP transfer is available only for static NAT.
Guidelines
''''''''''
Before transferring to another network, ensure that no network rules
(Firewall, Static NAT, Port Forwarding, and so on) exist on that
portable IP.
Configuring Portable IPs
~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, click Regions.
#.
Choose the Regions that you want to work with.
#.
Click View Portable IP.
#.
Click Portable IP Range.
The Add Portable IP Range window is displayed.
#.
Specify the following:
-
**Start IP/ End IP**: A range of IP addresses that are accessible
from the Internet and will be allocated to guest VMs. Enter the
first and last IP addresses that define a range that CloudStack
can assign to guest VMs.
-
**Gateway**: The gateway in use for the Portable IP addresses you
are configuring.
-
**Netmask**: The netmask associated with the Portable IP range.
-
**VLAN**: The VLAN that will be used for public traffic.
#.
Click OK.
Acquiring a Portable IP
~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click the name of the network where you want to work with.
#.
Click View IP Addresses.
#.
Click Acquire New IP.
The Acquire New IP window is displayed.
#.
Specify whether you want cross-zone IP or not.
#.
Click Yes in the confirmation dialog.
Within a few moments, the new IP address should appear with the state
Allocated. You can now use the IP address in port forwarding or
static NAT rules.
Transferring Portable IP
~~~~~~~~~~~~~~~~~~~~~~~~
An IP can be transferred from one network to another only if Static NAT
is enabled. However, when a portable IP is associated with a network,
you can use it for any service in the network.
To transfer a portable IP across the networks, execute the following
API:
.. code:: bash
http://localhost:8096/client/api?command=enableStaticNat&response=json&ipaddressid=a4bc37b2-4b4e-461d-9a62-b66414618e36&virtualmachineid=a242c476-ef37-441e-9c7b-b303e2a9cb4f&networkid=6e7cd8d1-d1ba-4c35-bdaf-333354cbd49810
Replace the UUID with appropriate UUID. For example, if you want to
transfer a portable IP to network X and VM Y in a network, execute the
following:
.. code:: bash
http://localhost:8096/client/api?command=enableStaticNat&response=json&ipaddressid=a4bc37b2-4b4e-461d-9a62-b66414618e36&virtualmachineid=Y&networkid=X
Multiple Subnets in Shared Network
----------------------------------
CloudStack provides you with the flexibility to add guest IP ranges from
different subnets in Basic zones and security groups-enabled Advanced
zones. For security groups-enabled Advanced zones, it implies multiple
subnets can be added to the same VLAN. With the addition of this
feature, you will be able to add IP address ranges from the same subnet
or from a different one when IP address are exhausted. This would in
turn allows you to employ higher number of subnets and thus reduce the
address management overhead. You can delete the IP ranges you have
added.
Prerequisites and Guidelines
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
This feature can only be implemented:
-
on IPv4 addresses
-
if virtual router is the DHCP provider
-
on KVM, xenServer, and VMware hypervisors
-
Manually configure the gateway of the new subnet before adding the IP
range.
-
CloudStack supports only one gateway for a subnet; overlapping
subnets are not currently supported
Adding Multiple Subnets to a Shared Network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Infrastructure.
#.
On Zones, click View More, then click the zone to which you want to
work with..
#.
Click Physical Network.
#.
In the Guest node of the diagram, click Configure.
#.
Click Networks.
#.
Select the networks you want to work with.
#.
Click View IP Ranges.
#.
Click Add IP Range.
The Add IP Range dialog is displayed, as follows:
|add-ip-range.png: adding an IP range to a network.|
#.
Specify the following:
All the fields are mandatory.
-
**Gateway**: The gateway for the tier you create. Ensure that the
gateway is within the Super CIDR range that you specified while
creating the VPC, and is not overlapped with the CIDR of any
existing tier within the VPC.
-
**Netmask**: The netmask for the tier you create.
For example, if the VPC CIDR is 10.0.0.0/16 and the network tier
CIDR is 10.0.1.0/24, the gateway of the tier is 10.0.1.1, and the
netmask of the tier is 255.255.255.0.
-
**Start IP/ End IP**: A range of IP addresses that are accessible
from the Internet and will be allocated to guest VMs. Enter the
first and last IP addresses that define a range that CloudStack
can assign to guest VMs .
#.
Click OK.
Isolation in Advanced Zone Using Private VLAN
---------------------------------------------
Isolation of guest traffic in shared networks can be achieved by using
Private VLANs (PVLAN). PVLANs provide Layer 2 isolation between ports
within the same VLAN. In a PVLAN-enabled shared network, a user VM
cannot reach other user VM though they can reach the DHCP server and
gateway, this would in turn allow users to control traffic within a
network and help them deploy multiple applications without communication
between application as well as prevent communication with other users’
VMs.
-
Isolate VMs in a shared networks by using Private VLANs.
-
Supported on KVM, XenServer, and VMware hypervisors
-
PVLAN-enabled shared network can be a part of multiple networks of a
guest VM.
About Private VLAN
~~~~~~~~~~~~~~~~~~
In an Ethernet switch, a VLAN is a broadcast domain where hosts can
establish direct communication with each another at Layer 2. Private
VLAN is designed as an extension of VLAN standard to add further
segmentation of the logical broadcast domain. A regular VLAN is a single
broadcast domain, whereas a private VLAN partitions a larger VLAN
broadcast domain into smaller sub-domains. A sub-domain is represented
by a pair of VLANs: a Primary VLAN and a Secondary VLAN. The original
VLAN that is being divided into smaller groups is called Primary, which
implies that all VLAN pairs in a private VLAN share the same Primary
VLAN. All the secondary VLANs exist only inside the Primary. Each
Secondary VLAN has a specific VLAN ID associated to it, which
differentiates one sub-domain from another.
Three types of ports exist in a private VLAN domain, which essentially
determine the behaviour of the participating hosts. Each ports will have
its own unique set of rules, which regulate a connected host's ability
to communicate with other connected host within the same private VLAN
domain. Configure each host that is part of a PVLAN pair can be by using
one of these three port designation:
-
**Promiscuous**: A promiscuous port can communicate with all the
interfaces, including the community and isolated host ports that
belong to the secondary VLANs. In Promiscuous mode, hosts are
connected to promiscuous ports and are able to communicate directly
with resources on both primary and secondary VLAN. Routers, DHCP
servers, and other trusted devices are typically attached to
promiscuous ports.
-
**Isolated VLANs**: The ports within an isolated VLAN cannot
communicate with each other at the layer-2 level. The hosts that are
connected to Isolated ports can directly communicate only with the
Promiscuous resources. If your customer device needs to have access
only to a gateway router, attach it to an isolated port.
-
**Community VLANs**: The ports within a community VLAN can
communicate with each other and with the promiscuous ports, but they
cannot communicate with the ports in other communities at the layer-2
level. In a Community mode, direct communication is permitted only
with the hosts in the same community and those that are connected to
the Primary PVLAN in promiscuous mode. If your customer has two
devices that need to be isolated from other customers' devices, but
to be able to communicate among themselves, deploy them in community
ports.
For further reading:
-
`Understanding Private
VLANs <http://www.cisco.com/en/US/docs/switches/lan/catalyst3750/software/release/12.2_25_see/configuration/guide/swpvlan.html#wp1038379>`__
-
`Cisco Systems' Private VLANs: Scalable Security in a Multi-Client
Environment <http://tools.ietf.org/html/rfc5517>`__
-
`Private VLAN (PVLAN) on vNetwork Distributed Switch - Concept
Overview (1010691) <http://kb.vmware.com>`__
Prerequisites
~~~~~~~~~~~~~
-
Use a PVLAN supported switch.
See `Private VLAN Catalyst Switch Support
Matrix <http://www.cisco.com/en/US/products/hw/switches/ps708/products_tech_note09186a0080094830.shtml>`__\ for
more information.
-
All the layer 2 switches, which are PVLAN-aware, are connected to
each other, and one of them is connected to a router. All the ports
connected to the host would be configured in trunk mode. Open
Management VLAN, Primary VLAN (public) and Secondary Isolated VLAN
ports. Configure the switch port connected to the router in PVLAN
promiscuous trunk mode, which would translate an isolated VLAN to
primary VLAN for the PVLAN-unaware router.
Note that only Cisco Catalyst 4500 has the PVLAN promiscuous trunk
mode to connect both normal VLAN and PVLAN to a PVLAN-unaware switch.
For the other Catalyst PVLAN support switch, connect the switch to
upper switch by using cables, one each for a PVLAN pair.
-
Configure private VLAN on your physical switches out-of-band.
-
Before you use PVLAN on XenServer and KVM, enable Open vSwitch (OVS).
.. note:: OVS on XenServer and KVM does not support PVLAN natively. Therefore, CloudStack managed to simulate PVLAN on OVS for XenServer and KVM by modifying the flow table.
Creating a PVLAN-Enabled Guest Network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as administrator.
#.
In the left navigation, choose Infrastructure.
#.
On Zones, click View More.
#.
Click the zone to which you want to add a guest network.
#.
Click the Physical Network tab.
#.
Click the physical network you want to work with.
#.
On the Guest node of the diagram, click Configure.
#.
Click the Network tab.
#.
Click Add guest network.
The Add guest network window is displayed.
#.
Specify the following:
-
**Name**: The name of the network. This will be visible to the
user.
-
**Description**: The short description of the network that can be
displayed to users.
-
**VLAN ID**: The unique ID of the VLAN.
-
**Secondary Isolated VLAN ID**: The unique ID of the Secondary
Isolated VLAN.
For the description on Secondary Isolated VLAN, see
`Section 15.14.1, “About Private VLAN” <#about-pvlan>`__.
-
**Scope**: The available scopes are Domain, Account, Project, and
All.
-
**Domain**: Selecting Domain limits the scope of this guest
network to the domain you specify. The network will not be
available for other domains. If you select Subdomain Access,
the guest network is available to all the sub domains within
the selected domain.
-
**Account**: The account for which the guest network is being
created for. You must specify the domain the account belongs
to.
-
**Project**: The project for which the guest network is being
created for. You must specify the domain the project belongs
to.
-
**All**: The guest network is available for all the domains,
account, projects within the selected zone.
-
**Network Offering**: If the administrator has configured multiple
network offerings, select the one you want to use for this
network.
-
**Gateway**: The gateway that the guests should use.
-
**Netmask**: The netmask in use on the subnet the guests will use.
-
**IP Range**: A range of IP addresses that are accessible from the
Internet and are assigned to the guest VMs.
-
**Network Domain**: A custom DNS suffix at the level of a network.
If you want to assign a special domain name to the guest VM
network, specify a DNS suffix.
#.
Click OK to confirm.
Security Groups
---------------
About Security Groups
~~~~~~~~~~~~~~~~~~~~~
Security groups provide a way to isolate traffic to VMs. A security
group is a group of VMs that filter their incoming and outgoing traffic
according to a set of rules, called ingress and egress rules. These
rules filter network traffic according to the IP address that is
attempting to communicate with the VM. Security groups are particularly
useful in zones that use basic networking, because there is a single
guest network for all guest VMs. In advanced zones, security groups are
supported only on the KVM hypervisor.
.. note:: In a zone that uses advanced networking, you can instead define multiple guest networks to isolate traffic to VMs.
Each CloudStack account comes with a default security group that denies
all inbound traffic and allows all outbound traffic. The default
security group can be modified so that all new VMs inherit some other
desired set of rules.
Any CloudStack user can set up any number of additional security groups.
When a new VM is launched, it is assigned to the default security group
unless another user-defined security group is specified. A VM can be a
member of any number of security groups. Once a VM is assigned to a
security group, it remains in that group for its entire lifetime; you
can not move a running VM from one security group to another.
You can modify a security group by deleting or adding any number of
ingress and egress rules. When you do, the new rules apply to all VMs in
the group, whether running or stopped.
If no ingress rules are specified, then no traffic will be allowed in,
except for responses to any traffic that has been allowed out through an
egress rule.
Adding a Security Group
~~~~~~~~~~~~~~~~~~~~~~~
A user or administrator can define a new security group.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network
#.
In Select view, choose Security Groups.
#.
Click Add Security Group.
#.
Provide a name and description.
#.
Click OK.
The new security group appears in the Security Groups Details tab.
#.
To make the security group useful, continue to Adding Ingress and
Egress Rules to a Security Group.
Security Groups in Advanced Zones (KVM Only)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CloudStack provides the ability to use security groups to provide
isolation between guests on a single shared, zone-wide network in an
advanced zone where KVM is the hypervisor. Using security groups in
advanced zones rather than multiple VLANs allows a greater range of
options for setting up guest isolation in a cloud.
Limitations: The following are not supported for this feature:
-
Two IP ranges with the same VLAN and different gateway or netmask in
security group-enabled shared network.
-
Two IP ranges with the same VLAN and different gateway or netmask in
account-specific shared networks.
-
Multiple VLAN ranges in security group-enabled shared network.
-
Multiple VLAN ranges in account-specific shared networks.
Security groups must be enabled in the zone in order for this feature to
be used.
Enabling Security Groups
~~~~~~~~~~~~~~~~~~~~~~~~
In order for security groups to function in a zone, the security groups
feature must first be enabled for the zone. The administrator can do
this when creating a new zone, by selecting a network offering that
includes security groups. The procedure is described in Basic Zone
Configuration in the Advanced Installation Guide. The administrator can
not enable security groups for an existing zone, only when creating a
new zone.
Adding Ingress and Egress Rules to a Security Group
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network
#.
In Select view, choose Security Groups, then click the security group
you want .
#.
To add an ingress rule, click the Ingress Rules tab and fill out the
following fields to specify what network traffic is allowed into VM
instances in this security group. If no ingress rules are specified,
then no traffic will be allowed in, except for responses to any
traffic that has been allowed out through an egress rule.
-
**Add by CIDR/Account**. Indicate whether the source of the
traffic will be defined by IP address (CIDR) or an existing
security group in a CloudStack account (Account). Choose Account
if you want to allow incoming traffic from all VMs in another
security group
-
**Protocol**. The networking protocol that sources will use to
send traffic to the security group. TCP and UDP are typically used
for data exchange and end-user communications. ICMP is typically
used to send error messages or network monitoring data.
-
**Start Port, End Port**. (TCP, UDP only) A range of listening
ports that are the destination for the incoming traffic. If you
are opening a single port, use the same number in both fields.
-
**ICMP Type, ICMP Code**. (ICMP only) The type of message and
error code that will be accepted.
-
**CIDR**. (Add by CIDR only) To accept only traffic from IP
addresses within a particular address block, enter a CIDR or a
comma-separated list of CIDRs. The CIDR is the base IP address of
the incoming traffic. For example, 192.168.0.0/22. To allow all
CIDRs, set to 0.0.0.0/0.
-
**Account, Security Group**. (Add by Account only) To accept only
traffic from another security group, enter the CloudStack account
and name of a security group that has already been defined in that
account. To allow traffic between VMs within the security group
you are editing now, enter the same name you used in step 7.
The following example allows inbound HTTP access from anywhere:
|httpaccess.png: allows inbound HTTP access from anywhere|
#.
To add an egress rule, click the Egress Rules tab and fill out the
following fields to specify what type of traffic is allowed to be
sent out of VM instances in this security group. If no egress rules
are specified, then all traffic will be allowed out. Once egress
rules are specified, the following types of traffic are allowed out:
traffic specified in egress rules; queries to DNS and DHCP servers;
and responses to any traffic that has been allowed in through an
ingress rule
-
**Add by CIDR/Account**. Indicate whether the destination of the
traffic will be defined by IP address (CIDR) or an existing
security group in a CloudStack account (Account). Choose Account
if you want to allow outgoing traffic to all VMs in another
security group.
-
**Protocol**. The networking protocol that VMs will use to send
outgoing traffic. TCP and UDP are typically used for data exchange
and end-user communications. ICMP is typically used to send error
messages or network monitoring data.
-
**Start Port, End Port**. (TCP, UDP only) A range of listening
ports that are the destination for the outgoing traffic. If you
are opening a single port, use the same number in both fields.
-
**ICMP Type, ICMP Code**. (ICMP only) The type of message and
error code that will be sent
-
**CIDR**. (Add by CIDR only) To send traffic only to IP addresses
within a particular address block, enter a CIDR or a
comma-separated list of CIDRs. The CIDR is the base IP address of
the destination. For example, 192.168.0.0/22. To allow all CIDRs,
set to 0.0.0.0/0.
-
**Account, Security Group**. (Add by Account only) To allow
traffic to be sent to another security group, enter the CloudStack
account and name of a security group that has already been defined
in that account. To allow traffic between VMs within the security
group you are editing now, enter its name.
#.
Click Add.
External Firewalls and Load Balancers
-------------------------------------
CloudStack is capable of replacing its Virtual Router with an external
Juniper SRX device and an optional external NetScaler or F5 load
balancer for gateway and load balancing services. In this case, the VMs
use the SRX as their gateway.
About Using a NetScaler Load Balancer
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Citrix NetScaler is supported as an external network element for load
balancing in zones that use isolated networking in advanced zones. Set
up an external load balancer when you want to provide load balancing
through means other than CloudStack’s provided virtual router.
.. note:: In a Basic zone, load balancing service is supported only if Elastic IP or Elastic LB services are enabled.
When NetScaler load balancer is used to provide EIP or ELB services in a
Basic zone, ensure that all guest VM traffic must enter and exit through
the NetScaler device. When inbound traffic goes through the NetScaler
device, traffic is routed by using the NAT protocol depending on the
EIP/ELB configured on the public IP to the private IP. The traffic that
is originated from the guest VMs usually goes through the layer 3
router. To ensure that outbound traffic goes through NetScaler device
providing EIP/ELB, layer 3 router must have a policy-based routing. A
policy-based route must be set up so that all traffic originated from
the guest VM's are directed to NetScaler device. This is required to
ensure that the outbound traffic from the guest VM's is routed to a
public IP by using NAT.For more information on Elastic IP, see
`Section 15.11, “About Elastic IP” <#elastic-ip>`__.
The NetScaler can be set up in direct (outside the firewall) mode. It
must be added before any load balancing rules are deployed on guest VMs
in the zone.
The functional behavior of the NetScaler with CloudStack is the same as
described in the CloudStack documentation for using an F5 external load
balancer. The only exception is that the F5 supports routing domains,
and NetScaler does not. NetScaler can not yet be used as a firewall.
To install and enable an external load balancer for CloudStack
management, see `Section 13.5.4, “External Guest Load Balancer
Integration (Optional)” <#external-guest-lb-integration>`__.
The Citrix NetScaler comes in three varieties. The following table
summarizes how these variants are treated in CloudStack.
================== ======================================================================================================================== ==============================================================
NetScaler ADC Type Description of Capabilities CloudStack Supported Features
================== ======================================================================================================================== ==============================================================
MPX Physical appliance. Capable of deep packet inspection. Can act as application firewall and load balancer. In advanced zones, load balancer functionality fully supported without limitation. In basic zones, static NAT, elastic IP (EIP), and elastic load balancing (ELB) are also provided.
VPX Virtual appliance. Can run as VM on XenServer, ESXi, and Hyper-V hypervisors. Same functionality as MPX. Supported on ESXi and XenServer. Same functional support as for MPX. CloudStack will treat VPX and MPX as the same device type.
SDX Physical appliance. Can create multiple fully isolated VPX instances on a single appliance to support multi-tenant usage CloudStack will dynamically provision, configure, and manage the life cycle of VPX instances on the SDX. Provisioned instances are added into CloudStack automatically – no manual configuration by the administrator is required. Once a VPX instance is added into CloudStack, it is treated the same as a VPX on an ESXi host.
================== ======================================================================================================================== ==============================================================
Configuring SNMP Community String on a RHEL Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The SNMP Community string is similar to a user id or password that
provides access to a network device, such as router. This string is sent
along with all SNMP requests. If the community string is correct, the
device responds with the requested information. If the community string
is incorrect, the device discards the request and does not respond.
The NetScaler device uses SNMP to communicate with the VMs. You must
install SNMP and configure SNMP Community string for a secure
communication between the NetScaler device and the RHEL machine.
#.
Ensure that you installed SNMP on RedHat. If not, run the following
command:
.. code:: bash
yum install net-snmp-utils
#.
Edit the /etc/snmp/snmpd.conf file to allow the SNMP polling from the
NetScaler device.
#.
Map the community name into a security name (local and mynetwork,
depending on where the request is coming from):
.. note:: Use a strong password instead of public when you edit the following table.
.. code:: bash
# sec.name source community
com2sec local localhost public
com2sec mynetwork 0.0.0.0 public
.. note:: Setting to 0.0.0.0 allows all IPs to poll the NetScaler server.
#.
Map the security names into group names:
.. code:: bash
# group.name sec.model sec.name
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
#.
Create a view to allow the groups to have the permission to:
.. code:: bash
incl/excl subtree mask view all included .1
#.
Grant access with different write permissions to the two groups to
the view you created.
.. code:: bash
# context sec.model sec.level prefix read write notif
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all all
#.
Unblock SNMP in iptables.
.. code:: bash
iptables -A INPUT -p udp --dport 161 -j ACCEPT
#.
Start the SNMP service:
.. code:: bash
service snmpd start
#.
Ensure that the SNMP service is started automatically during the
system startup:
.. code:: bash
chkconfig snmpd on
Initial Setup of External Firewalls and Load Balancers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When the first VM is created for a new account, CloudStack programs the
external firewall and load balancer to work with the VM. The following
objects are created on the firewall:
-
A new logical interface to connect to the account's private VLAN. The
interface IP is always the first IP of the account's private subnet
(e.g. 10.1.1.1).
-
A source NAT rule that forwards all outgoing traffic from the
account's private VLAN to the public Internet, using the account's
public IP address as the source address
-
A firewall filter counter that measures the number of bytes of
outgoing traffic for the account
The following objects are created on the load balancer:
-
A new VLAN that matches the account's provisioned Zone VLAN
-
A self IP for the VLAN. This is always the second IP of the account's
private subnet (e.g. 10.1.1.2).
Ongoing Configuration of External Firewalls and Load Balancers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Additional user actions (e.g. setting a port forward) will cause further
programming of the firewall and load balancer. A user may request
additional public IP addresses and forward traffic received at these IPs
to specific VMs. This is accomplished by enabling static NAT for a
public IP address, assigning the IP to a VM, and specifying a set of
protocols and port ranges to open. When a static NAT rule is created,
CloudStack programs the zone's external firewall with the following
objects:
-
A static NAT rule that maps the public IP address to the private IP
address of a VM.
-
A security policy that allows traffic within the set of protocols and
port ranges that are specified.
-
A firewall filter counter that measures the number of bytes of
incoming traffic to the public IP.
The number of incoming and outgoing bytes through source NAT, static
NAT, and load balancing rules is measured and saved on each external
element. This data is collected on a regular basis and stored in the
CloudStack database.
Load Balancer Rules
~~~~~~~~~~~~~~~~~~~
A CloudStack user or administrator may create load balancing rules that
balance traffic received at a public IP to one or more VMs. A user
creates a rule, specifies an algorithm, and assigns the rule to a set of
VMs.
.. note:: If you create load balancing rules while using a network service offering that includes an external load balancer device such as NetScaler, and later change the network service offering to one that uses the CloudStack virtual router, you must create a firewall rule on the virtual router for each of your existing load balancing rules so that they continue to function.
Adding a Load Balancer Rule
^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click the name of the network where you want to load balance the
traffic.
#.
Click View IP Addresses.
#.
Click the IP address for which you want to create the rule, then
click the Configuration tab.
#.
In the Load Balancing node of the diagram, click View All.
In a Basic zone, you can also create a load balancing rule without
acquiring or selecting an IP address. CloudStack internally assign an
IP when you create the load balancing rule, which is listed in the IP
Addresses page when the rule is created.
To do that, select the name of the network, then click Add Load
Balancer tab. Continue with `7 <#config-lb>`__.
#.
Fill in the following:
-
**Name**: A name for the load balancer rule.
-
**Public Port**: The port receiving incoming traffic to be
balanced.
-
**Private Port**: The port that the VMs will use to receive the
traffic.
-
**Algorithm**: Choose the load balancing algorithm you want
CloudStack to use. CloudStack supports a variety of well-known
algorithms. If you are not familiar with these choices, you will
find plenty of information about them on the Internet.
-
**Stickiness**: (Optional) Click Configure and choose the
algorithm for the stickiness policy. See Sticky Session Policies
for Load Balancer Rules.
-
**AutoScale**: Click Configure and complete the AutoScale
configuration as explained in `Section 15.16.6, “Configuring
AutoScale” <#autoscale>`__.
-
**Health Check**: (Optional; NetScaler load balancers only) Click
Configure and fill in the characteristics of the health check
policy. See `Section 15.16.5.3, “Health Checks for Load Balancer
Rules” <#health-checks-for-lb-rules>`__.
-
**Ping path (Optional)**: Sequence of destinations to which to
send health check queries. Default: / (all).
-
**Response time (Optional)**: How long to wait for a response
from the health check (2 - 60 seconds). Default: 5 seconds.
-
**Interval time (Optional)**: Amount of time between health
checks (1 second - 5 minutes). Default value is set in the
global configuration parameter lbrule\_health
check\_time\_interval.
-
**Healthy threshold (Optional)**: Number of consecutive health
check successes that are required before declaring an instance
healthy. Default: 2.
-
**Unhealthy threshold (Optional)**: Number of consecutive
health check failures that are required before declaring an
instance unhealthy. Default: 10.
#.
Click Add VMs, then select two or more VMs that will divide the load
of incoming traffic, and click Apply.
The new load balancer rule appears in the list. You can repeat these
steps to add more load balancer rules for this IP address.
Sticky Session Policies for Load Balancer Rules
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Sticky sessions are used in Web-based applications to ensure continued
availability of information across the multiple requests in a user's
session. For example, if a shopper is filling a cart, you need to
remember what has been purchased so far. The concept of "stickiness" is
also referred to as persistence or maintaining state.
Any load balancer rule defined in CloudStack can have a stickiness
policy. The policy consists of a name, stickiness method, and
parameters. The parameters are name-value pairs or flags, which are
defined by the load balancer vendor. The stickiness method could be load
balancer-generated cookie, application-generated cookie, or
source-based. In the source-based method, the source IP address is used
to identify the user and locate the user’s stored data. In the other
methods, cookies are used. The cookie generated by the load balancer or
application is included in request and response URLs to create
persistence. The cookie name can be specified by the administrator or
automatically generated. A variety of options are provided to control
the exact behavior of cookies, such as how they are generated and
whether they are cached.
For the most up to date list of available stickiness methods, see the
CloudStack UI or call listNetworks and check the
SupportedStickinessMethods capability.
Health Checks for Load Balancer Rules
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(NetScaler load balancer only; requires NetScaler version 10.0)
Health checks are used in load-balanced applications to ensure that
requests are forwarded only to running, available services. When
creating a load balancer rule, you can specify a health check policy.
This is in addition to specifying the stickiness policy, algorithm, and
other load balancer rule options. You can configure one health check
policy per load balancer rule.
Any load balancer rule defined on a NetScaler load balancer in
CloudStack can have a health check policy. The policy consists of a ping
path, thresholds to define "healthy" and "unhealthy" states, health
check frequency, and timeout wait interval.
When a health check policy is in effect, the load balancer will stop
forwarding requests to any resources that are found to be unhealthy. If
the resource later becomes available again, the periodic health check
will discover it, and the resource will once again be added to the pool
of resources that can receive requests from the load balancer. At any
given time, the most recent result of the health check is displayed in
the UI. For any VM that is attached to a load balancer rule with a
health check configured, the state will be shown as UP or DOWN in the UI
depending on the result of the most recent health check.
You can delete or modify existing health check policies.
To configure how often the health check is performed by default, use the
global configuration setting healthcheck.update.interval (default value
is 600 seconds). You can override this value for an individual health
check policy.
For details on how to set a health check policy using the UI, see
`Section 15.16.5.1, “Adding a Load Balancer
Rule” <#add-load-balancer-rule>`__.
Configuring AutoScale
~~~~~~~~~~~~~~~~~~~~~
AutoScaling allows you to scale your back-end services or application
VMs up or down seamlessly and automatically according to the conditions
you define. With AutoScaling enabled, you can ensure that the number of
VMs you are using seamlessly scale up when demand increases, and
automatically decreases when demand subsides. Thus it helps you save
compute costs by terminating underused VMs automatically and launching
new VMs when you need them, without the need for manual intervention.
NetScaler AutoScaling is designed to seamlessly launch or terminate VMs
based on user-defined conditions. Conditions for triggering a scaleup or
scaledown action can vary from a simple use case like monitoring the CPU
usage of a server to a complex use case of monitoring a combination of
server's responsiveness and its CPU usage. For example, you can
configure AutoScaling to launch an additional VM whenever CPU usage
exceeds 80 percent for 15 minutes, or to remove a VM whenever CPU usage
is less than 20 percent for 30 minutes.
CloudStack uses the NetScaler load balancer to monitor all aspects of a
system's health and work in unison with CloudStack to initiate scale-up
or scale-down actions.
.. note:: AutoScale is supported on NetScaler Release 10 Build 74.4006.e and beyond.
**Prerequisites**: Before you configure an AutoScale rule, consider the following:
-
Ensure that the necessary template is prepared before configuring
AutoScale. When a VM is deployed by using a template and when it
comes up, the application should be up and running.
.. note:: If the application is not running, the NetScaler device considers the VM as ineffective and continues provisioning the VMs unconditionally until the resource limit is exhausted.
-
Deploy the templates you prepared. Ensure that the applications come
up on the first boot and is ready to take the traffic. Observe the
time requires to deploy the template. Consider this time when you
specify the quiet time while configuring AutoScale.
-
The AutoScale feature supports the SNMP counters that can be used to
define conditions for taking scale up or scale down actions. To
monitor the SNMP-based counter, ensure that the SNMP agent is
installed in the template used for creating the AutoScale VMs, and
the SNMP operations work with the configured SNMP community and port
by using standard SNMP managers. For example, see `Section 15.16.2,
“Configuring SNMP Community String on a RHEL
Server” <#configure-snmp-rhel>`__ to configure SNMP on a RHEL
machine.
-
Ensure that the endpointe.url parameter present in the Global
Settings is set to the Management Server API URL. For example,
http://10.102.102.22:8080/client/api. In a multi-node Management
Server deployment, use the virtual IP address configured in the load
balancer for the management server’s cluster. Additionally, ensure
that the NetScaler device has access to this IP address to provide
AutoScale support.
If you update the endpointe.url, disable the AutoScale functionality
of the load balancer rules in the system, then enable them back to
reflect the changes. For more information see `Updating an AutoScale
Configuration <#update-autoscale>`__
-
If the API Key and Secret Key are regenerated for an AutoScale user,
ensure that the AutoScale functionality of the load balancers that
the user participates in are disabled and then enabled to reflect the
configuration changes in the NetScaler.
-
In an advanced Zone, ensure that at least one VM should be present
before configuring a load balancer rule with AutoScale. Having one VM
in the network ensures that the network is in implemented state for
configuring AutoScale.
**Configuration**: Specify the following:
|autoscaleateconfig.png: Configuring AutoScale|
-
**Template**: A template consists of a base OS image and application.
A template is used to provision the new instance of an application on
a scaleup action. When a VM is deployed from a template, the VM can
start taking the traffic from the load balancer without any admin
intervention. For example, if the VM is deployed for a Web service,
it should have the Web server running, the database connected, and so
on.
-
**Compute offering**: A predefined set of virtual hardware
attributes, including CPU speed, number of CPUs, and RAM size, that
the user can select when creating a new virtual machine instance.
Choose one of the compute offerings to be used while provisioning a
VM instance as part of scaleup action.
-
**Min Instance**: The minimum number of active VM instances that is
assigned to a load balancing rule. The active VM instances are the
application instances that are up and serving the traffic, and are
being load balanced. This parameter ensures that a load balancing
rule has at least the configured number of active VM instances are
available to serve the traffic.
.. note:: If an application, such as SAP, running on a VM instance is down for some reason, the VM is then not counted as part of Min Instance parameter, and the AutoScale feature initiates a scaleup action if the number of active VM instances is below the configured value. Similarly, when an application instance comes up from its earlier down state, this application instance is counted as part of the active instance count and the AutoScale process initiates a scaledown action when the active instance count breaches the Max instance value.
-
**Max Instance**: Maximum number of active VM instances that **should
be assigned to**\ a load balancing rule. This parameter defines the
upper limit of active VM instances that can be assigned to a load
balancing rule.
Specifying a large value for the maximum instance parameter might
result in provisioning large number of VM instances, which in turn
leads to a single load balancing rule exhausting the VM instances
limit specified at the account or domain level.
.. note:: If an application, such as SAP, running on a VM instance is down for some reason, the VM is not counted as part of Max Instance parameter. So there may be scenarios where the number of VMs provisioned for a scaleup action might be more than the configured Max Instance value. Once the application instances in the VMs are up from an earlier down state, the AutoScale feature starts aligning to the configured Max Instance value.
Specify the following scale-up and scale-down policies:
-
**Duration**: The duration, in seconds, for which the conditions you
specify must be true to trigger a scaleup action. The conditions
defined should hold true for the entire duration you specify for an
AutoScale action to be invoked.
-
**Counter**: The performance counters expose the state of the
monitored instances. By default, CloudStack offers four performance
counters: Three SNMP counters and one NetScaler counter. The SNMP
counters are Linux User CPU, Linux System CPU, and Linux CPU Idle.
The NetScaler counter is ResponseTime. The root administrator can add
additional counters into CloudStack by using the CloudStack API.
-
**Operator**: The following five relational operators are supported
in AutoScale feature: Greater than, Less than, Less than or equal to,
Greater than or equal to, and Equal to.
-
**Threshold**: Threshold value to be used for the counter. Once the
counter defined above breaches the threshold value, the AutoScale
feature initiates a scaleup or scaledown action.
-
**Add**: Click Add to add the condition.
Additionally, if you want to configure the advanced settings, click Show
advanced settings, and specify the following:
-
**Polling interval**: Frequency in which the conditions, combination
of counter, operator and threshold, are to be evaluated before taking
a scale up or down action. The default polling interval is 30
seconds.
-
**Quiet Time**: This is the cool down period after an AutoScale
action is initiated. The time includes the time taken to complete
provisioning a VM instance from its template and the time taken by an
application to be ready to serve traffic. This quiet time allows the
fleet to come up to a stable state before any action can take place.
The default is 300 seconds.
-
**Destroy VM Grace Period**: The duration in seconds, after a
scaledown action is initiated, to wait before the VM is destroyed as
part of scaledown action. This is to ensure graceful close of any
pending sessions or transactions being served by the VM marked for
destroy. The default is 120 seconds.
-
**Security Groups**: Security groups provide a way to isolate traffic
to the VM instances. A security group is a group of VMs that filter
their incoming and outgoing traffic according to a set of rules,
called ingress and egress rules. These rules filter network traffic
according to the IP address that is attempting to communicate with
the VM.
-
**Disk Offerings**: A predefined set of disk size for primary data
storage.
-
**SNMP Community**: The SNMP community string to be used by the
NetScaler device to query the configured counter value from the
provisioned VM instances. Default is public.
-
**SNMP Port**: The port number on which the SNMP agent that run on
the provisioned VMs is listening. Default port is 161.
-
**User**: This is the user that the NetScaler device use to invoke
scaleup and scaledown API calls to the cloud. If no option is
specified, the user who configures AutoScaling is applied. Specify
another user name to override.
-
**Apply**: Click Apply to create the AutoScale configuration.
**Disabling and Enabling an AutoScale Configuration**
If you want to perform any maintenance operation on the AutoScale VM
instances, disable the AutoScale configuration. When the AutoScale
configuration is disabled, no scaleup or scaledown action is performed.
You can use this downtime for the maintenance activities. To disable the
AutoScale configuration, click the Disable AutoScale |EnableDisable.png:
button to enable or disable AutoScale.| button.
The button toggles between enable and disable, depending on whether
AutoScale is currently enabled or not. After the maintenance operations
are done, you can enable the AutoScale configuration back. To enable,
open the AutoScale configuration page again, then click the Enable
AutoScale |EnableDisable.png: button to enable or disable AutoScale.|
button.
**Updating an AutoScale Configuration**
You can update the various parameters and add or delete the conditions
in a scaleup or scaledown rule. Before you update an AutoScale
configuration, ensure that you disable the AutoScale load balancer rule
by clicking the Disable AutoScale button.
After you modify the required AutoScale parameters, click Apply. To
apply the new AutoScale policies, open the AutoScale configuration page
again, then click the Enable AutoScale button.
**Runtime Considerations**
-
An administrator should not assign a VM to a load balancing rule
which is configured for AutoScale.
-
Before a VM provisioning is completed if NetScaler is shutdown or
restarted, the provisioned VM cannot be a part of the load balancing
rule though the intent was to assign it to a load balancing rule. To
workaround, rename the AutoScale provisioned VMs based on the rule
name or ID so at any point of time the VMs can be reconciled to its
load balancing rule.
-
Making API calls outside the context of AutoScale, such as destroyVM,
on an autoscaled VM leaves the load balancing configuration in an
inconsistent state. Though VM is destroyed from the load balancer
rule, NetScaler continues to show the VM as a service assigned to a
rule.
Global Server Load Balancing Support
------------------------------------
CloudStack supports Global Server Load Balancing (GSLB) functionalities
to provide business continuity, and enable seamless resource movement
within a CloudStack environment. CloudStack 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 CloudStack.
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 CloudStack. GSLB functionality works in an Active-Active
data center environment.
About Global Server Load Balancing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
Components of GSLB
^^^^^^^^^^^^^^^^^^
A typical GSLB environment is comprised of the following components:
-
**GSLB Site**: In CloudStack 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.
-
**GSLB Services**: 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.
-
**GSLB Virtual Servers**: 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 CloudStack 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.
-
**Load Balancing or Content Switching Virtual Servers**: 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.
-
**DNS VIPs**: 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.
-
**Authoritative DNS**: 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.
How Does GSLB Works in CloudStack?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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 CloudStack: 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 CloudStack.
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.
CloudStack 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.
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, CloudStack 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.
|gslb.png: GSLB architecture|
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. CloudStack orchestrates setting up
GSLB virtual server 1 on the GSLB service provider at Zone-1. CloudStack
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. CloudStack
will also orchestrate setting up GSLB virtual server 2 on GSLB service
provider at Zone-2. CloudStack 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. CloudStack 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.
Configuring GSLB
~~~~~~~~~~~~~~~~
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.
Perform the following as a cloud administrator. As per the example given
above, the administrator of xyztelco is the one who sets up GSLB:
#.
In the cloud.dns.name global parameter, specify the DNS name of your
tenant's cloud that make use of the GSLB service.
#.
On the NetScaler side, configure GSLB as given in `Configuring Global
Server Load Balancing
(GSLB) <http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-con.html>`__:
#.
Configuring a standard load balancing setup.
#.
Configure Authoritative DNS, as explained in `Configuring an
Authoritative DNS
Service <http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-adns-svc-tsk.html>`__.
#.
Configure a GSLB site with site name formed from the domain name
details.
Configure a GSLB site with the site name formed from the domain
name.
As per the example given above, the site names are A.xyztelco.com
and B.xyztelco.com.
For more information, see `Configuring a Basic GSLB
Site <http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-basic-site-tsk.html>`__.
#.
Configure a GSLB virtual server.
For more information, see `Configuring a GSLB Virtual
Server <http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-vsvr-tsk.html>`__.
#.
Configure a GSLB service for each virtual server.
For more information, see `Configuring a GSLB
Service <http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-config-svc-tsk.html>`__.
#.
Bind the GSLB services to the GSLB virtual server.
For more information, see `Binding GSLB Services to a GSLB Virtual
Server <http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-bind-svc-vsvr-tsk.html>`__.
#.
Bind domain name to GSLB virtual server. Domain name is obtained
from the domain details.
For more information, see `Binding a Domain to a GSLB Virtual
Server <http://support.citrix.com/proddocs/topic/netscaler-traffic-management-10-map/ns-gslb-bind-dom-vsvr-tsk.html>`__.
#.
In each zone that are participating in GSLB, add GSLB-enabled
NetScaler device.
For more information, see `Section 15.17.2.2, “Enabling GSLB in
NetScaler” <#enable-glsb-ns>`__.
As a domain administrator/ user perform the following:
#.
Add a GSLB rule on both the sites.
See `Section 15.17.2.3, “Adding a GSLB Rule” <#gslb-add>`__.
#.
Assign load balancer rules.
See `Section 15.17.2.4, “Assigning Load Balancing Rules to
GSLB” <#assign-lb-gslb>`__.
Prerequisites and Guidelines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
The GSLB functionality is supported both Basic and Advanced zones.
-
GSLB is added as a new network service.
-
GSLB service provider can be added to a physical network in a zone.
-
The admin is allowed to enable or disable GSLB functionality at
region level.
-
The admin is allowed to configure a zone as GSLB capable or enabled.
A zone shall be considered as GSLB capable only if a GSLB service
provider is provisioned in the zone.
-
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.
-
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.
-
The users can load balance traffic across the availability zones in
the same region or different regions.
-
The admin can configure DNS name for the entire cloud.
-
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.
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.
-
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.
-
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.
-
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.
Statistics is collected from each GSLB virtual server.
Enabling GSLB in NetScaler
^^^^^^^^^^^^^^^^^^^^^^^^^^
In each zone, add GSLB-enabled NetScaler device for load balancing.
#.
Log in as administrator to the CloudStack UI.
#.
In the left navigation bar, click Infrastructure.
#.
In Zones, click View More.
#.
Choose the zone you want to work with.
#.
Click the Physical Network tab, then click the name of the physical
network.
#.
In the Network Service Providers node of the diagram, click
Configure.
You might have to scroll down to see this.
#.
Click NetScaler.
#.
Click Add NetScaler device and provide the following:
For NetScaler:
-
**IP Address**: The IP address of the SDX.
-
**Username/Password**: The authentication credentials to access
the device. CloudStack uses these credentials to access the
device.
-
**Type**: 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 CloudStack
Administration Guide.
-
**Public interface**: Interface of device that is configured to be
part of the public network.
-
**Private interface**: Interface of device that is configured to
be part of the private network.
-
**GSLB service**: Select this option.
-
**GSLB service Public IP**: The public IP address of the NAT
translator for a GSLB service that is on a private network.
-
**GSLB service Private IP**: The private IP of the GSLB service.
-
**Number of Retries**. Number of times to attempt a command on the
device before considering the operation failed. Default is 2.
-
**Capacity**: The number of networks the device can handle.
-
**Dedicated**: 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.
#.
Click OK.
Adding a GSLB Rule
^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as a domain administrator or user.
#.
In the left navigation pane, click Region.
#.
Select the region for which you want to create a GSLB rule.
#.
In the Details tab, click View GSLB.
#.
Click Add GSLB.
The Add GSLB page is displayed as follows:
|gslb-add.png: adding a gslb rule|
#.
Specify the following:
-
**Name**: Name for the GSLB rule.
-
**Description**: (Optional) A short description of the GSLB rule
that can be displayed to users.
-
**GSLB Domain Name**: A preferred domain name for the service.
-
**Algorithm**: (Optional) The algorithm to use to load balance the
traffic across the zones. The options are Round Robin, Least
Connection, and Proximity.
-
**Service Type**: The transport protocol to use for GSLB. The
options are TCP and UDP.
-
**Domain**: (Optional) The domain for which you want to create the
GSLB rule.
-
**Account**: (Optional) The account on which you want to apply the
GSLB rule.
#.
Click OK to confirm.
Assigning Load Balancing Rules to GSLB
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as a domain administrator or user.
#.
In the left navigation pane, click Region.
#.
Select the region for which you want to create a GSLB rule.
#.
In the Details tab, click View GSLB.
#.
Select the desired GSLB.
#.
Click view assigned load balancing.
#.
Click assign more load balancing.
#.
Select the load balancing rule you have created for the zone.
#.
Click OK to confirm.
Known Limitation
~~~~~~~~~~~~~~~~
Currently, CloudStack does not support orchestration of services across
the zones. The notion of services and service providers in region are to
be introduced.
Guest IP Ranges
---------------
The IP ranges for guest network traffic are set on a per-account basis
by the user. This allows the users to configure their network in a
fashion that will enable VPN linking between their guest network and
their clients.
In shared networks in Basic zone and Security Group-enabled Advanced
networks, you will have the flexibility to add multiple guest IP ranges
from different subnets. You can add or remove one IP range at a time.
For more information, see `Section 15.10, “About Multiple IP
Ranges” <#multiple-ip-range>`__.
Acquiring a New IP Address
--------------------------
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click the name of the network where you want to work with.
#.
Click View IP Addresses.
#.
Click Acquire New IP.
The Acquire New IP window is displayed.
#.
Specify whether you want cross-zone IP or not.
If you want Portable IP click Yes in the confirmation dialog. If you
want a normal Public IP click No.
For more information on Portable IP, see `Section 15.12, “Portable
IPs” <#portable-ip>`__.
Within a few moments, the new IP address should appear with the state
Allocated. You can now use the IP address in port forwarding or
static NAT rules.
Releasing an IP Address
-----------------------
When the last rule for an IP address is removed, you can release that IP
address. The IP address still belongs to the VPC; however, it can be
picked up for any guest network again.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click the name of the network where you want to work with.
#.
Click View IP Addresses.
#.
Click the IP address you want to release.
#.
Click the Release IP button. |ReleaseIPButton.png: button to release
an IP|
Static NAT
----------
A static NAT rule maps a public IP address to the private IP address of
a VM in order to allow Internet traffic into the VM. The public IP
address always remains the same, which is why it is called “static” NAT.
This section tells how to enable or disable static NAT for a particular
IP address.
Enabling or Disabling Static NAT
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If port forwarding rules are already in effect for an IP address, you
cannot enable static NAT to that IP.
If a guest VM is part of more than one network, static NAT rules will
function only if they are defined on the default network.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click the name of the network where you want to work with.
#.
Click View IP Addresses.
#.
Click the IP address you want to work with.
#.
Click the Static NAT |EnableNATButton.png: button to enable NAT|
button.
The button toggles between Enable and Disable, depending on whether
static NAT is currently enabled for the IP address.
#.
If you are enabling static NAT, a dialog appears where you can choose
the destination VM and click Apply.
IP Forwarding and Firewalling
-----------------------------
By default, all incoming traffic to the public IP address is rejected.
All outgoing traffic from the guests is also blocked by default.
To allow outgoing traffic, follow the procedure in `Section 15.22.2,
“Egress Firewall Rules in an Advanced Zone” <#egress-firewall-rule>`__.
To allow incoming traffic, users may set up firewall rules and/or port
forwarding rules. For example, you can use a firewall rule to open a
range of ports on the public IP address, such as 33 through 44. Then use
port forwarding rules to direct traffic from individual ports within
that range to specific ports on user VMs. For example, one port
forwarding rule could route incoming traffic on the public IP's port 33
to port 100 on one user VM's private IP.
Firewall Rules
~~~~~~~~~~~~~~
By default, all incoming traffic to the public IP address is rejected by
the firewall. To allow external traffic, you can open firewall ports by
specifying firewall rules. You can optionally specify one or more CIDRs
to filter the source IPs. This is useful when you want to allow only
incoming requests from certain IP addresses.
You cannot use firewall rules to open ports for an elastic IP address.
When elastic IP is used, outside access is instead controlled through
the use of security groups. See `Section 15.15.2, “Adding a Security
Group” <#add-security-group>`__.
In an advanced zone, you can also create egress firewall rules by using
the virtual router. For more information, see `Section 15.22.2, “Egress
Firewall Rules in an Advanced Zone” <#egress-firewall-rule>`__.
Firewall rules can be created using the Firewall tab in the Management
Server UI. This tab is not displayed by default when CloudStack is
installed. To display the Firewall tab, the CloudStack administrator
must set the global configuration parameter firewall.rule.ui.enabled to
"true."
To create a firewall rule:
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
Click the name of the network where you want to work with.
#.
Click View IP Addresses.
#.
Click the IP address you want to work with.
#.
Click the Configuration tab and fill in the following values.
-
**Source CIDR**. (Optional) To accept only traffic from IP
addresses within a particular address block, enter a CIDR or a
comma-separated list of CIDRs. Example: 192.168.0.0/22. Leave
empty to allow all CIDRs.
-
**Protocol**. The communication protocol in use on the opened
port(s).
-
**Start Port and End Port**. The port(s) you want to open on the
firewall. If you are opening a single port, use the same number in
both fields
-
**ICMP Type and ICMP Code**. Used only if Protocol is set to ICMP.
Provide the type and code required by the ICMP protocol to fill
out the ICMP header. Refer to ICMP documentation for more details
if you are not sure what to enter
#.
Click Add.
Egress Firewall Rules in an Advanced Zone
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The egress traffic originates from a private network to a public
network, such as the Internet. By default, the egress traffic is blocked
in default network offerings, so no outgoing traffic is allowed from a
guest network to the Internet. However, you can control the egress
traffic in an Advanced zone by creating egress firewall rules. When an
egress firewall rule is applied, the traffic specific to the rule is
allowed and the remaining traffic is blocked. When all the firewall
rules are removed the default policy, Block, is applied.
Prerequisites and Guidelines
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Consider the following scenarios to apply egress firewall rules:
-
Egress firewall rules are supported on Juniper SRX and virtual
router.
-
The egress firewall rules are not supported on shared networks.
-
Allow the egress traffic from specified source CIDR. The Source CIDR
is part of guest network CIDR.
-
Allow the egress traffic with protocol TCP,UDP,ICMP, or ALL.
-
Allow the egress traffic with protocol and destination port range.
The port range is specified for TCP, UDP or for ICMP type and code.
-
The default policy is Allow for the new network offerings, whereas on
upgrade existing network offerings with firewall service providers
will have the default egress policy Deny.
Configuring an Egress Firewall Rule
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In Select view, choose Guest networks, then click the Guest network
you want.
#.
To add an egress rule, click the Egress rules tab and fill out the
following fields to specify what type of traffic is allowed to be
sent out of VM instances in this guest network:
|egress-firewall-rule.png: adding an egress firewall rule|
-
**CIDR**: (Add by CIDR only) To send traffic only to the IP
addresses within a particular address block, enter a CIDR or a
comma-separated list of CIDRs. The CIDR is the base IP address of
the destination. For example, 192.168.0.0/22. To allow all CIDRs,
set to 0.0.0.0/0.
-
**Protocol**: The networking protocol that VMs uses to send
outgoing traffic. The TCP and UDP protocols are typically used for
data exchange and end-user communications. The ICMP protocol is
typically used to send error messages or network monitoring data.
-
**Start Port, End Port**: (TCP, UDP only) A range of listening
ports that are the destination for the outgoing traffic. If you
are opening a single port, use the same number in both fields.
-
**ICMP Type, ICMP Code**: (ICMP only) The type of message and
error code that are sent.
#.
Click Add.
Configuring the Default Egress Policy
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The default egress policy for Isolated guest network is configured by
using Network offering. Use the create network offering option to
determine whether the default policy should be block or allow all the
traffic to the public network from a guest network. Use this network
offering to create the network. If no policy is specified, by default
all the traffic is allowed from the guest network that you create by
using this network offering.
You have two options: Allow and Deny.
Allow
'''''
If you select Allow for a network offering, by default egress traffic is
allowed. However, when an egress rule is configured for a guest network,
rules are applied to block the specified traffic and rest are allowed.
If no egress rules are configured for the network, egress traffic is
accepted.
Deny
''''
If you select Deny for a network offering, by default egress traffic for
the guest network is blocked. However, when an egress rules is
configured for a guest network, rules are applied to allow the specified
traffic. While implementing a guest network, CloudStack adds the
firewall egress rule specific to the default egress policy for the guest
network.
This feature is supported only on virtual router and Juniper SRX.
#.
Create a network offering with your desirable default egress policy:
#.
Log in with admin privileges to the CloudStack UI.
#.
In the left navigation bar, click Service Offerings.
#.
In Select Offering, choose Network Offering.
#.
Click Add Network Offering.
#.
In the dialog, make necessary choices, including firewall
provider.
#.
In the Default egress policy field, specify the behaviour.
#.
Click OK.
#.
Create an isolated network by using this network offering.
Based on your selection, the network will have the egress public
traffic blocked or allowed.
Port Forwarding
~~~~~~~~~~~~~~~
A port forward service is a set of port forwarding rules that define a
policy. A port forward service is then applied to one or more guest VMs.
The guest VM then has its inbound network access managed according to
the policy defined by the port forwarding service. You can optionally
specify one or more CIDRs to filter the source IPs. This is useful when
you want to allow only incoming requests from certain IP addresses to be
forwarded.
A guest VM can be in any number of port forward services. Port forward
services can be defined but have no members. If a guest VM is part of
more than one network, port forwarding rules will function only if they
are defined on the default network
You cannot use port forwarding to open ports for an elastic IP address.
When elastic IP is used, outside access is instead controlled through
the use of security groups. See Security Groups.
To set up port forwarding:
#.
Log in to the CloudStack UI as an administrator or end user.
#.
If you have not already done so, add a public IP address range to a
zone in CloudStack. See Adding a Zone and Pod in the Installation
Guide.
#.
Add one or more VM instances to CloudStack.
#.
In the left navigation bar, click Network.
#.
Click the name of the guest network where the VMs are running.
#.
Choose an existing IP address or acquire a new IP address. See
`Section 15.19, “Acquiring a New IP
Address” <#acquire-new-ip-address>`__. Click the name of the IP
address in the list.
#.
Click the Configuration tab.
#.
In the Port Forwarding node of the diagram, click View All.
#.
Fill in the following:
-
**Public Port**. The port to which public traffic will be
addressed on the IP address you acquired in the previous step.
-
**Private Port**. The port on which the instance is listening for
forwarded public traffic.
-
**Protocol**. The communication protocol in use between the two
ports
#.
Click Add.
IP Load Balancing
-----------------
The user may choose to associate the same public IP for multiple guests.
CloudStack implements a TCP-level load balancer with the following
policies.
-
Round-robin
-
Least connection
-
Source IP
This is similar to port forwarding but the destination may be multiple
IP addresses.
DNS and DHCP
------------
The Virtual Router provides DNS and DHCP services to the guests. It
proxies DNS requests to the DNS server configured on the Availability
Zone.
Remote Access VPN
-----------------
CloudStack account owners can create virtual private networks (VPN) to
access their virtual machines. If the guest network is instantiated from
a network offering that offers the Remote Access VPN service, the
virtual router (based on the System VM) is used to provide the service.
CloudStack provides a L2TP-over-IPsec-based remote access VPN service to
guest virtual networks. Since each network gets its own virtual router,
VPNs are not shared across the networks. VPN clients native to Windows,
Mac OS X and iOS can be used to connect to the guest networks. The
account owner can create and manage users for their VPN. CloudStack does
not use its account database for this purpose but uses a separate table.
The VPN user database is shared across all the VPNs created by the
account owner. All VPN users get access to all VPNs created by the
account owner.
.. note:: Make sure that not all traffic goes through the VPN. That is, the route installed by the VPN should be only for the guest network and not for all traffic.
-
**Road Warrior / Remote Access**. Users want to be able to connect
securely from a home or office to a private network in the cloud.
Typically, the IP address of the connecting client is dynamic and
cannot be preconfigured on the VPN server.
-
**Site to Site**. In this scenario, two private subnets are connected
over the public Internet with a secure VPN tunnel. The cloud user’s
subnet (for example, an office network) is connected through a
gateway to the network in the cloud. The address of the user’s
gateway must be preconfigured on the VPN server in the cloud. Note
that although L2TP-over-IPsec can be used to set up Site-to-Site
VPNs, this is not the primary intent of this feature. For more
information, see `Section 15.25.5, “Setting Up a Site-to-Site VPN
Connection” <#site-to-site-vpn>`__
Configuring Remote Access VPN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To set up VPN for the cloud:
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, click Global Settings.
#.
Set the following global configuration parameters.
-
remote.access.vpn.client.ip.range – The range of IP addresses to
be allocated to remote access VPN clients. The first IP in the
range is used by the VPN server.
-
remote.access.vpn.psk.length – Length of the IPSec key.
-
remote.access.vpn.user.limit – Maximum number of VPN users per
account.
To enable VPN for a particular network:
#.
Log in as a user or administrator to the CloudStack UI.
#.
In the left navigation, click Network.
#.
Click the name of the network you want to work with.
#.
Click View IP Addresses.
#.
Click one of the displayed IP address names.
#.
Click the Enable VPN button. |AttachDiskButton.png: button to attach
a volume|
The IPsec key is displayed in a popup window.
Configuring Remote Access VPN in VPC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On enabling Remote Access VPN on a VPC, any VPN client present outside
the VPC can access VMs present in the VPC by using the Remote VPN
connection. The VPN client can be present anywhere except inside the VPC
on which the user enabled the Remote Access VPN service.
To enable VPN for a VPC:
#.
Log in as a user or administrator to the CloudStack UI.
#.
In the left navigation, click Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC.
For each tier, the following options are displayed:
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
In the Router node, select Public IP Addresses.
The IP Addresses page is displayed.
#.
Click Source NAT IP address.
#.
Click the Enable VPN button. |vpn-icon.png: button to enable VPN|
Click OK to confirm. The IPsec key is displayed in a pop-up window.
Now, you need to add the VPN users.
#.
Click the Source NAT IP.
#.
Select the VPN tab.
#.
Add the username and the corresponding password of the user you
wanted to add.
#.
Click Add.
#.
Repeat the same steps to add the VPN users.
Using Remote Access VPN with Windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The procedure to use VPN varies by Windows version. Generally, the user
must edit the VPN properties and make sure that the default route is not
the VPN. The following steps are for Windows L2TP clients on Windows
Vista. The commands should be similar for other Windows versions.
#.
Log in to the CloudStack UI and click on the source NAT IP for the
account. The VPN tab should display the IPsec preshared key. Make a
note of this and the source NAT IP. The UI also lists one or more
users and their passwords. Choose one of these users, or, if none
exists, add a user and password.
#.
On the Windows box, go to Control Panel, then select Network and
Sharing center. Click Setup a connection or network.
#.
In the next dialog, select No, create a new connection.
#.
In the next dialog, select Use my Internet Connection (VPN).
#.
In the next dialog, enter the source NAT IP from step
`1 <#source-nat>`__ and give the connection a name. Check Don't
connect now.
#.
In the next dialog, enter the user name and password selected in step
`1 <#source-nat>`__.
#.
Click Create.
#.
Go back to the Control Panel and click Network Connections to see the
new connection. The connection is not active yet.
#.
Right-click the new connection and select Properties. In the
Properties dialog, select the Networking tab.
#.
In Type of VPN, choose L2TP IPsec VPN, then click IPsec settings.
Select Use preshared key. Enter the preshared key from step
`1 <#source-nat>`__.
#.
The connection is ready for activation. Go back to Control Panel ->
Network Connections and double-click the created connection.
#.
Enter the user name and password from step `1 <#source-nat>`__.
Using Remote Access VPN with Mac OS X
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, be sure you've configured the VPN settings in your CloudStack
install. This section is only concerned with connecting via Mac OS X to
your VPN.
Note, these instructions were written on Mac OS X 10.7.5. They may
differ slightly in older or newer releases of Mac OS X.
#.
On your Mac, open System Preferences and click Network.
#.
Make sure Send all traffic over VPN connection is not checked.
#.
If your preferences are locked, you'll need to click the lock in the
bottom left-hand corner to make any changes and provide your
administrator credentials.
#.
You will need to create a new network entry. Click the plus icon on
the bottom left-hand side and you'll see a dialog that says "Select
the interface and enter a name for the new service." Select VPN from
the Interface drop-down menu, and "L2TP over IPSec" for the VPN Type.
Enter whatever you like within the "Service Name" field.
#.
You'll now have a new network interface with the name of whatever you
put in the "Service Name" field. For the purposes of this example,
we'll assume you've named it "CloudStack." Click on that interface
and provide the IP address of the interface for your VPN under the
Server Address field, and the user name for your VPN under Account
Name.
#.
Click Authentication Settings, and add the user's password under User
Authentication and enter the pre-shared IPSec key in the Shared
Secret field under Machine Authentication. Click OK.
#.
You may also want to click the "Show VPN status in menu bar" but
that's entirely optional.
#.
Now click "Connect" and you will be connected to the CloudStack VPN.
Setting Up a Site-to-Site VPN Connection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A Site-to-Site VPN connection helps you establish a secure connection
from an enterprise datacenter to the cloud infrastructure. This allows
users to access the guest VMs by establishing a VPN connection to the
virtual router of the account from a device in the datacenter of the
enterprise. You can also establish a secure connection between two VPC
setups or high availability zones in your environment. Having this
facility eliminates the need to establish VPN connections to individual
VMs.
The difference from Remote VPN is that Site-to-site VPNs connects entire
networks to each other, for example, connecting a branch office network
to a company headquarters network. In a site-to-site VPN, hosts do not
have VPN client software; they send and receive normal TCP/IP traffic
through a VPN gateway.
The supported endpoints on the remote datacenters are:
-
Cisco ISR with IOS 12.4 or later
-
Juniper J-Series routers with JunOS 9.5 or later
-
CloudStack virtual routers
.. note:: In addition to the specific Cisco and Juniper devices listed above, the expectation is that any Cisco or Juniper device running on the supported operating systems are able to establish VPN connections.
To set up a Site-to-Site VPN connection, perform the following:
#.
Create a Virtual Private Cloud (VPC).
See `Section 15.27, “Configuring a Virtual Private
Cloud” <#configure-vpc>`__.
#.
Create a VPN Customer Gateway.
#.
Create a VPN gateway for the VPC that you created.
#.
Create VPN connection from the VPC VPN gateway to the customer VPN
gateway.
Creating and Updating a VPN Customer Gateway
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. note:: A VPN customer gateway can be connected to only one VPN gateway at a time.
To add a VPN Customer Gateway:
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPN Customer Gateway.
#.
Click Add VPN Customer Gateway.
|addvpncustomergateway.png: adding a customer gateway.|
Provide the following information:
-
**Name**: A unique name for the VPN customer gateway you create.
-
**Gateway**: The IP address for the remote gateway.
-
**CIDR list**: The guest CIDR list of the remote subnets. Enter a
CIDR or a comma-separated list of CIDRs. Ensure that a guest CIDR
list is not overlapped with the VPC’s CIDR, or another guest CIDR.
The CIDR must be RFC1918-compliant.
-
**IPsec Preshared Key**: Preshared keying is a method where the
endpoints of the VPN share a secret key. This key value is used to
authenticate the customer gateway and the VPC VPN gateway to each
other.
.. note:: The IKE peers (VPN end points) authenticate each other by computing and sending a keyed hash of data that includes the Preshared key. If the receiving peer is able to create the same hash independently by using its Preshared key, it knows that both peers must share the same secret, thus authenticating the customer gateway.
-
**IKE Encryption**: The Internet Key Exchange (IKE) policy for
phase-1. The supported encryption algorithms are AES128, AES192,
AES256, and 3DES. Authentication is accomplished through the
Preshared Keys.
.. Note:: The phase-1 is the first phase in the IKE process. In this initial negotiation phase, the two VPN endpoints agree on the methods to be used to provide security for the underlying IP traffic. The phase-1 authenticates the two VPN gateways to each other, by confirming that the remote gateway has a matching Preshared Key.
-
**IKE Hash**: The IKE hash for phase-1. The supported hash
algorithms are SHA1 and MD5.
-
**IKE DH**: A public-key cryptography protocol which allows two
parties to establish a shared secret over an insecure
communications channel. The 1536-bit Diffie-Hellman group is used
within IKE to establish session keys. The supported options are
None, Group-5 (1536-bit) and Group-2 (1024-bit).
-
**ESP Encryption**: Encapsulating Security Payload (ESP) algorithm
within phase-2. The supported encryption algorithms are AES128,
AES192, AES256, and 3DES.
.. note:: The phase-2 is the second phase in the IKE process. The purpose of IKE phase-2 is to negotiate IPSec security associations (SA) to set up the IPSec tunnel. In phase-2, new keying material is extracted from the Diffie-Hellman key exchange in phase-1, to provide session keys to use in protecting the VPN data flow.
-
**ESP Hash**: Encapsulating Security Payload (ESP) hash for
phase-2. Supported hash algorithms are SHA1 and MD5.
-
**Perfect Forward Secrecy**: Perfect Forward Secrecy (or PFS) is
the property that ensures that a session key derived from a set of
long-term public and private keys will not be compromised. This
property enforces a new Diffie-Hellman key exchange. It provides
the keying material that has greater key material life and thereby
greater resistance to cryptographic attacks. The available options
are None, Group-5 (1536-bit) and Group-2 (1024-bit). The security
of the key exchanges increase as the DH groups grow larger, as
does the time of the exchanges.
.. note:: When PFS is turned on, for every negotiation of a new phase-2 SA the two gateways must generate a new set of phase-1 keys. This adds an extra layer of protection that PFS adds, which ensures if the phase-2 SA’s have expired, the keys used for new phase-2 SA’s have not been generated from the current phase-1 keying material.
-
**IKE Lifetime (seconds)**: The phase-1 lifetime of the security
association in seconds. Default is 86400 seconds (1 day). Whenever
the time expires, a new phase-1 exchange is performed.
-
**ESP Lifetime (seconds)**: The phase-2 lifetime of the security
association in seconds. Default is 3600 seconds (1 hour). Whenever
the value is exceeded, a re-key is initiated to provide a new
IPsec encryption and authentication session keys.
-
**Dead Peer Detection**: A method to detect an unavailable
Internet Key Exchange (IKE) peer. Select this option if you want
the virtual router to query the liveliness of its IKE peer at
regular intervals. It’s recommended to have the same configuration
of DPD on both side of VPN connection.
#.
Click OK.
Updating and Removing a VPN Customer Gateway
''''''''''''''''''''''''''''''''''''''''''''
You can update a customer gateway either with no VPN connection, or
related VPN connection is in error state.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPN Customer Gateway.
#.
Select the VPN customer gateway you want to work with.
#.
To modify the required parameters, click the Edit VPN Customer
Gateway button |edit.png: button to edit a VPN customer gateway|
#.
To remove the VPN customer gateway, click the Delete VPN Customer
Gateway button |delete.png: button to remove a VPN customer gateway|
#.
Click OK.
Creating a VPN gateway for the VPC
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC to which you want to deploy the
VMs.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
For each tier, the following options are displayed:
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
Select Site-to-Site VPN.
If you are creating the VPN gateway for the first time, selecting
Site-to-Site VPN prompts you to create a VPN gateway.
#.
In the confirmation dialog, click Yes to confirm.
Within a few moments, the VPN gateway is created. You will be
prompted to view the details of the VPN gateway you have created.
Click Yes to confirm.
The following details are displayed in the VPN Gateway page:
-
IP Address
-
Account
-
Domain
Creating a VPN Connection
^^^^^^^^^^^^^^^^^^^^^^^^^
.. note:: CloudStack supports creating up to 8 VPN connections.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you create for the account are listed in the page.
#.
Click the Configure button of the VPC to which you want to deploy the
VMs.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
#.
Click the Settings icon.
For each tier, the following options are displayed:
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
Select Site-to-Site VPN.
The Site-to-Site VPN page is displayed.
#.
From the Select View drop-down, ensure that VPN Connection is
selected.
#.
Click Create VPN Connection.
The Create VPN Connection dialog is displayed:
|createvpnconnection.png: creating a VPN connection to the customer
gateway.|
#.
Select the desired customer gateway.
#.
Select Passive if you want to establish a connection between two VPC
virtual routers.
If you want to establish a connection between two VPC virtual
routers, select Passive only on one of the VPC virtual routers, which
waits for the other VPC virtual router to initiate the connection. Do
not select Passive on the VPC virtual router that initiates the
connection.
#.
Click OK to confirm.
Within a few moments, the VPN Connection is displayed.
The following information on the VPN connection is displayed:
-
IP Address
-
Gateway
-
State
-
IPSec Preshared Key
-
IKE Policy
-
ESP Policy
Site-to-Site VPN Connection Between VPC Networks
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
CloudStack provides you with the ability to establish a site-to-site VPN
connection between CloudStack virtual routers. To achieve that, add a
passive mode Site-to-Site VPN. With this functionality, users can deploy
applications in multiple Availability Zones or VPCs, which can
communicate with each other by using a secure Site-to-Site VPN Tunnel.
This feature is supported on all the hypervisors.
#.
Create two VPCs. For example, VPC A and VPC B.
For more information, see `Section 15.27, “Configuring a Virtual
Private Cloud” <#configure-vpc>`__.
#.
Create VPN gateways on both the VPCs you created.
For more information, see `Section 15.25.5.2, “Creating a VPN gateway
for the VPC” <#create-vpn-gateway-for-vpc>`__.
#.
Create VPN customer gateway for both the VPCs.
For more information, see `Section 15.25.5.1, “Creating and Updating
a VPN Customer Gateway” <#create-vpn-customer-gateway>`__.
#.
Enable a VPN connection on VPC A in passive mode.
For more information, see `Section 15.25.5.3, “Creating a VPN
Connection” <#create-vpn-connection-vpc>`__.
Ensure that the customer gateway is pointed to VPC B. The VPN
connection is shown in the Disconnected state.
#.
Enable a VPN connection on VPC B.
Ensure that the customer gateway is pointed to VPC A. Because virtual
router of VPC A, in this case, is in passive mode and is waiting for
the virtual router of VPC B to initiate the connection, VPC B virtual
router should not be in passive mode.
The VPN connection is shown in the Disconnected state.
Creating VPN connection on both the VPCs initiates a VPN connection.
Wait for few seconds. The default is 30 seconds for both the VPN
connections to show the Connected state.
Restarting and Removing a VPN Connection
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC to which you want to deploy the
VMs.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
#.
Click the Settings icon.
For each tier, the following options are displayed:
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
Select Site-to-Site VPN.
The Site-to-Site VPN page is displayed.
#.
From the Select View drop-down, ensure that VPN Connection is
selected.
All the VPN connections you created are displayed.
#.
Select the VPN connection you want to work with.
The Details tab is displayed.
#.
To remove a VPN connection, click the Delete VPN connection button
|remove-vpn.png: button to remove a VPN connection|
To restart a VPN connection, click the Reset VPN connection button
present in the Details tab. |reset-vpn.png: button to reset a VPN
connection|
About Inter-VLAN Routing (nTier Apps)
-------------------------------------
Inter-VLAN Routing (nTier Apps) is the capability to route network
traffic between VLANs. This feature enables you to build Virtual Private
Clouds (VPC), an isolated segment of your cloud, that can hold
multi-tier applications. These tiers are deployed on different VLANs
that can communicate with each other. You provision VLANs to the tiers
your create, and VMs can be deployed on different tiers. The VLANs are
connected to a virtual router, which facilitates communication between
the VMs. In effect, you can segment VMs by means of VLANs into different
networks that can host multi-tier applications, such as Web,
Application, or Database. Such segmentation by means of VLANs logically
separate application VMs for higher security and lower broadcasts, while
remaining physically connected to the same device.
This feature is supported on XenServer, KVM, and VMware hypervisors.
The major advantages are:
-
The administrator can deploy a set of VLANs and allow users to deploy
VMs on these VLANs. A guest VLAN is randomly alloted to an account
from a pre-specified set of guest VLANs. All the VMs of a certain
tier of an account reside on the guest VLAN allotted to that account.
.. note:: A VLAN allocated for an account cannot be shared between multiple accounts.
-
The administrator can allow users create their own VPC and deploy the
application. In this scenario, the VMs that belong to the account are
deployed on the VLANs allotted to that account.
-
Both administrators and users can create multiple VPCs. The guest
network NIC is plugged to the VPC virtual router when the first VM is
deployed in a tier.
-
The administrator can create the following gateways to send to or
receive traffic from the VMs:
-
**VPN Gateway**: For more information, see `Section 15.25.5.2,
“Creating a VPN gateway for the
VPC” <#create-vpn-gateway-for-vpc>`__.
-
**Public Gateway**: The public gateway for a VPC is added to the
virtual router when the virtual router is created for VPC. The
public gateway is not exposed to the end users. You are not
allowed to list it, nor allowed to create any static routes.
-
**Private Gateway**: For more information, see `Section 15.27.5,
“Adding a Private Gateway to a VPC” <#add-gateway-vpc>`__.
-
Both administrators and users can create various possible
destinations-gateway combinations. However, only one gateway of each
type can be used in a deployment.
For example:
-
**VLANs and Public Gateway**: For example, an application is
deployed in the cloud, and the Web application VMs communicate
with the Internet.
-
**VLANs, VPN Gateway, and Public Gateway**: For example, an
application is deployed in the cloud; the Web application VMs
communicate with the Internet; and the database VMs communicate
with the on-premise devices.
-
The administrator can define Network Access Control List (ACL) on the
virtual router to filter the traffic among the VLANs or between the
Internet and a VLAN. You can define ACL based on CIDR, port range,
protocol, type code (if ICMP protocol is selected) and Ingress/Egress
type.
The following figure shows the possible deployment scenarios of a
Inter-VLAN setup:
|mutltier.png: a multi-tier setup.|
To set up a multi-tier Inter-VLAN deployment, see `Section 15.27,
“Configuring a Virtual Private Cloud” <#configure-vpc>`__.
Configuring a Virtual Private Cloud
-----------------------------------
About Virtual Private Clouds
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CloudStack Virtual Private Cloud is a private, isolated part of
CloudStack. A VPC can have its own virtual network topology that
resembles a traditional physical network. You can launch VMs in the
virtual network that can have private addresses in the range of your
choice, for example: 10.0.0.0/16. You can define network tiers within
your VPC network range, which in turn enables you to group similar kinds
of instances based on IP address range.
For example, if a VPC has the private range 10.0.0.0/16, its guest
networks can have the network ranges 10.0.1.0/24, 10.0.2.0/24,
10.0.3.0/24, and so on.
Major Components of a VPC:
''''''''''''''''''''''''''
A VPC is comprised of the following network components:
-
**VPC**: A VPC acts as a container for multiple isolated networks
that can communicate with each other via its virtual router.
-
**Network Tiers**: Each tier acts as an isolated network with its own
VLANs and CIDR list, where you can place groups of resources, such as
VMs. The tiers are segmented by means of VLANs. The NIC of each tier
acts as its gateway.
-
**Virtual Router**: A virtual router is automatically created and
started when you create a VPC. The virtual router connect the tiers
and direct traffic among the public gateway, the VPN gateways, and
the NAT instances. For each tier, a corresponding NIC and IP exist in
the virtual router. The virtual router provides DNS and DHCP services
through its IP.
-
**Public Gateway**: The traffic to and from the Internet routed to
the VPC through the public gateway. In a VPC, the public gateway is
not exposed to the end user; therefore, static routes are not support
for the public gateway.
-
**Private Gateway**: All the traffic to and from a private network
routed to the VPC through the private gateway. For more information,
see `Section 15.27.5, “Adding a Private Gateway to a
VPC” <#add-gateway-vpc>`__.
-
**VPN Gateway**: The VPC side of a VPN connection.
-
**Site-to-Site VPN Connection**: A hardware-based VPN connection
between your VPC and your datacenter, home network, or co-location
facility. For more information, see `Section 15.25.5, “Setting Up a
Site-to-Site VPN Connection” <#site-to-site-vpn>`__.
-
**Customer Gateway**: The customer side of a VPN Connection. For more
information, see `Section 15.25.5.1, “Creating and Updating a VPN
Customer Gateway” <#create-vpn-customer-gateway>`__.
-
**NAT Instance**: An instance that provides Port Address Translation
for instances to access the Internet via the public gateway. For more
information, see `Section 15.27.10, “Enabling or Disabling Static NAT
on a VPC” <#enable-disable-static-nat-vpc>`__.
-
**Network ACL**: Network ACL is a group of Network ACL items. Network
ACL items are nothing but numbered rules that are evaluated in order,
starting with the lowest numbered rule. These rules determine whether
traffic is allowed in or out of any tier associated with the network
ACL. For more information, see `Section 15.27.4, “Configuring Network
Access Control List” <#configure-acl>`__.
Network Architecture in a VPC
'''''''''''''''''''''''''''''
In a VPC, the following four basic options of network architectures are
present:
-
VPC with a public gateway only
-
VPC with public and private gateways
-
VPC with public and private gateways and site-to-site VPN access
-
VPC with a private gateway only and site-to-site VPN access
Connectivity Options for a VPC
''''''''''''''''''''''''''''''
You can connect your VPC to:
-
The Internet through the public gateway.
-
The corporate datacenter by using a site-to-site VPN connection
through the VPN gateway.
-
Both the Internet and your corporate datacenter by using both the
public gateway and a VPN gateway.
VPC Network Considerations
''''''''''''''''''''''''''
Consider the following before you create a VPC:
-
A VPC, by default, is created in the enabled state.
-
A VPC can be created in Advance zone only, and can't belong to more
than one zone at a time.
-
The default number of VPCs an account can create is 20. However, you
can change it by using the max.account.vpcs global parameter, which
controls the maximum number of VPCs an account is allowed to create.
-
The default number of tiers an account can create within a VPC is 3.
You can configure this number by using the vpc.max.networks
parameter.
-
Each tier should have an unique CIDR in the VPC. Ensure that the
tier's CIDR should be within the VPC CIDR range.
-
A tier belongs to only one VPC.
-
All network tiers inside the VPC should belong to the same account.
-
When a VPC is created, by default, a SourceNAT IP is allocated to it.
The Source NAT IP is released only when the VPC is removed.
-
A public IP can be used for only one purpose at a time. If the IP is
a sourceNAT, it cannot be used for StaticNAT or port forwarding.
-
The instances can only have a private IP address that you provision.
To communicate with the Internet, enable NAT to an instance that you
launch in your VPC.
-
Only new networks can be added to a VPC. The maximum number of
networks per VPC is limited by the value you specify in the
vpc.max.networks parameter. The default value is three.
-
The load balancing service can be supported by only one tier inside
the VPC.
-
If an IP address is assigned to a tier:
-
That IP can't be used by more than one tier at a time in the VPC.
For example, if you have tiers A and B, and a public IP1, you can
create a port forwarding rule by using the IP either for A or B,
but not for both.
-
That IP can't be used for StaticNAT, load balancing, or port
forwarding rules for another guest network inside the VPC.
-
Remote access VPN is not supported in VPC networks.
Adding a Virtual Private Cloud
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When creating the VPC, you simply provide the zone and a set of IP
addresses for the VPC network address space. You specify this set of
addresses in the form of a Classless Inter-Domain Routing (CIDR) block.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
#.
Click Add VPC. The Add VPC page is displayed as follows:
|add-vpc.png: adding a vpc.|
Provide the following information:
-
**Name**: A short name for the VPC that you are creating.
-
**Description**: A brief description of the VPC.
-
**Zone**: Choose the zone where you want the VPC to be available.
-
**Super CIDR for Guest Networks**: Defines the CIDR range for all
the tiers (guest networks) within a VPC. When you create a tier,
ensure that its CIDR is within the Super CIDR value you enter. The
CIDR must be RFC1918 compliant.
-
**DNS domain for Guest Networks**: If you want to assign a special
domain name, specify the DNS suffix. This parameter is applied to
all the tiers within the VPC. That implies, all the tiers you
create in the VPC belong to the same DNS domain. If the parameter
is not specified, a DNS domain name is generated automatically.
-
**Public Load Balancer Provider**: You have two options: VPC
Virtual Router and Netscaler.
#.
Click OK.
Adding Tiers
~~~~~~~~~~~~
Tiers are distinct locations within a VPC that act as isolated networks,
which do not have access to other tiers by default. Tiers are set up on
different VLANs that can communicate with each other by using a virtual
router. Tiers provide inexpensive, low latency network connectivity to
other tiers within the VPC.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPC that you have created for the account is listed in the
page.
.. note:: The end users can see their own VPCs, while root and domain admin can see any VPC they are authorized to see.
#.
Click the Configure button of the VPC for which you want to set up
tiers.
#.
Click Create network.
The Add new tier dialog is displayed, as follows:
|add-tier.png: adding a tier to a vpc.|
If you have already created tiers, the VPC diagram is displayed.
Click Create Tier to add a new tier.
#.
Specify the following:
All the fields are mandatory.
-
**Name**: A unique name for the tier you create.
-
**Network Offering**: The following default network offerings are
listed: Internal LB,
DefaultIsolatedNetworkOfferingForVpcNetworksNoLB,
DefaultIsolatedNetworkOfferingForVpcNetworks
In a VPC, only one tier can be created by using LB-enabled network
offering.
-
**Gateway**: The gateway for the tier you create. Ensure that the
gateway is within the Super CIDR range that you specified while
creating the VPC, and is not overlapped with the CIDR of any
existing tier within the VPC.
-
**VLAN**: The VLAN ID for the tier that the root admin creates.
This option is only visible if the network offering you selected
is VLAN-enabled.
For more information, see the Assigning VLANs to Isolated Networks
section in the CloudStack Administration Guide.
-
**Netmask**: The netmask for the tier you create.
For example, if the VPC CIDR is 10.0.0.0/16 and the network tier
CIDR is 10.0.1.0/24, the gateway of the tier is 10.0.1.1, and the
netmask of the tier is 255.255.255.0.
#.
Click OK.
#.
Continue with configuring access control list for the tier.
Configuring Network Access Control List
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Define Network Access Control List (ACL) on the VPC virtual router to
control incoming (ingress) and outgoing (egress) traffic between the VPC
tiers, and the tiers and Internet. By default, all incoming traffic to
the guest networks is blocked and all outgoing traffic from guest
networks is allowed, once you add an ACL rule for outgoing traffic, then
only outgoing traffic specified in this ACL rule is allowed, the rest is
blocked. To open the ports, you must create a new network ACL. The
network ACLs can be created for the tiers only if the NetworkACL service
is supported.
About Network ACL Lists
^^^^^^^^^^^^^^^^^^^^^^^
In CloudStack terminology, Network ACL is a group of Network ACL items.
Network ACL items are nothing but numbered rules that are evaluated in
order, starting with the lowest numbered rule. These rules determine
whether traffic is allowed in or out of any tier associated with the
network ACL. You need to add the Network ACL items to the Network ACL,
then associate the Network ACL with a tier. Network ACL is associated
with a VPC and can be assigned to multiple VPC tiers within a VPC. A
Tier is associated with a Network ACL at all the times. Each tier can be
associated with only one ACL.
The default Network ACL is used when no ACL is associated. Default
behavior is all the incoming traffic is blocked and outgoing traffic is
allowed from the tiers. Default network ACL cannot be removed or
modified. Contents of the default Network ACL is:
===== ======== ============ ====== =========
Rule Protocol Traffic type Action CIDR
===== ======== ============ ====== =========
1 All Ingress Deny 0.0.0.0/0
2 All Egress Deny 0.0.0.0/0
===== ======== ============ ====== =========
Creating ACL Lists
^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC.
For each tier, the following options are displayed:
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
Select Network ACL Lists.
The following default rules are displayed in the Network ACLs page:
default\_allow, default\_deny.
#.
Click Add ACL Lists, and specify the following:
-
**ACL List Name**: A name for the ACL list.
-
**Description**: A short description of the ACL list that can be
displayed to users.
Creating an ACL Rule
^^^^^^^^^^^^^^^^^^^^
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC.
#.
Select Network ACL Lists.
In addition to the custom ACL lists you have created, the following
default rules are displayed in the Network ACLs page: default\_allow,
default\_deny.
#.
Select the desired ACL list.
#.
Select the ACL List Rules tab.
To add an ACL rule, fill in the following fields to specify what kind
of network traffic is allowed in the VPC.
-
**Rule Number**: The order in which the rules are evaluated.
-
**CIDR**: The CIDR acts as the Source CIDR for the Ingress rules,
and Destination CIDR for the Egress rules. To accept traffic only
from or to the IP addresses within a particular address block,
enter a CIDR or a comma-separated list of CIDRs. The CIDR is the
base IP address of the incoming traffic. For example,
192.168.0.0/22. To allow all CIDRs, set to 0.0.0.0/0.
-
**Action**: What action to be taken. Allow traffic or block.
-
**Protocol**: The networking protocol that sources use to send
traffic to the tier. The TCP and UDP protocols are typically used
for data exchange and end-user communications. The ICMP protocol
is typically used to send error messages or network monitoring
data. All supports all the traffic. Other option is Protocol
Number.
-
**Start Port**, **End Port** (TCP, UDP only): A range of listening
ports that are the destination for the incoming traffic. If you
are opening a single port, use the same number in both fields.
-
**Protocol Number**: The protocol number associated with IPv4 or
IPv6. For more information, see `Protocol
Numbers <http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml>`__.
-
**ICMP Type**, **ICMP Code** (ICMP only): The type of message and
error code that will be sent.
-
**Traffic Type**: The type of traffic: Incoming or outgoing.
#.
Click Add. The ACL rule is added.
You can edit the tags assigned to the ACL rules and delete the ACL
rules you have created. Click the appropriate button in the Details
tab.
Creating a Tier with Custom ACL List
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Create a VPC.
#.
Create a custom ACL list.
#.
Add ACL rules to the ACL list.
#.
Create a tier in the VPC.
Select the desired ACL list while creating a tier.
#.
Click OK.
Assigning a Custom ACL List to a Tier
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#.
Create a VPC.
#.
Create a tier in the VPC.
#.
Associate the tier with the default ACL rule.
#.
Create a custom ACL list.
#.
Add ACL rules to the ACL list.
#.
Select the tier for which you want to assign the custom ACL.
#.
Click the Replace ACL List icon. |replace-acl-icon.png: button to
replace an ACL list|
The Replace ACL List dialog is displayed.
#.
Select the desired ACL list.
#.
Click OK.
Adding a Private Gateway to a VPC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A private gateway can be added by the root admin only. The VPC private
network has 1:1 relationship with the NIC of the physical network. You
can configure multiple private gateways to a single VPC. No gateways
with duplicated VLAN and IP are allowed in the same data center.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC to which you want to configure
load balancing rules.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
#.
Click the Settings icon.
The following options are displayed.
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
Select Private Gateways.
The Gateways page is displayed.
#.
Click Add new gateway:
|add-new-gateway-vpc.png: adding a private gateway for the VPC.|
#.
Specify the following:
-
**Physical Network**: The physical network you have created in the
zone.
-
**IP Address**: The IP address associated with the VPC gateway.
-
**Gateway**: The gateway through which the traffic is routed to
and from the VPC.
-
**Netmask**: The netmask associated with the VPC gateway.
-
**VLAN**: The VLAN associated with the VPC gateway.
-
**Source NAT**: Select this option to enable the source NAT
service on the VPC private gateway.
See `Section 15.27.5.1, “Source NAT on Private
Gateway” <#sourcenat-private-gateway>`__.
-
**ACL**: Controls both ingress and egress traffic on a VPC private
gateway. By default, all the traffic is blocked.
See `Section 15.27.5.2, “ACL on Private
Gateway” <#acl-private-gateway>`__.
The new gateway appears in the list. You can repeat these steps to
add more gateway for this VPC.
Source NAT on Private Gateway
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You might want to deploy multiple VPCs with the same super CIDR and
guest tier CIDR. Therefore, multiple guest VMs from different VPCs can
have the same IPs to reach a enterprise data center through the private
gateway. In such cases, a NAT service need to be configured on the
private gateway to avoid IP conflicts. If Source NAT is enabled, the
guest VMs in VPC reaches the enterprise network via private gateway IP
address by using the NAT service.
The Source NAT service on a private gateway can be enabled while adding
the private gateway. On deletion of a private gateway, source NAT rules
specific to the private gateway are deleted.
To enable source NAT on existing private gateways, delete them and
create afresh with source NAT.
ACL on Private Gateway
^^^^^^^^^^^^^^^^^^^^^^
The traffic on the VPC private gateway is controlled by creating both
ingress and egress network ACL rules. The ACLs contains both allow and
deny rules. As per the rule, all the ingress traffic to the private
gateway interface and all the egress traffic out from the private
gateway interface are blocked.
You can change this default behaviour while creating a private gateway.
Alternatively, you can do the following:
#.
In a VPC, identify the Private Gateway you want to work with.
#.
In the Private Gateway page, do either of the following:
-
Use the Quickview. See `3 <#quickview>`__.
-
Use the Details tab. See `4 <#details-tab>`__ through .
#.
In the Quickview of the selected Private Gateway, click Replace ACL,
select the ACL rule, then click OK
#.
Click the IP address of the Private Gateway you want to work with.
#.
In the Detail tab, click the Replace ACL button.
|replace-acl-icon.png: button to replace the default ACL behaviour.|
The Replace ACL dialog is displayed.
#.
select the ACL rule, then click OK.
Wait for few seconds. You can see that the new ACL rule is displayed
in the Details page.
Creating a Static Route
^^^^^^^^^^^^^^^^^^^^^^^
CloudStack enables you to specify routing for the VPN connection you
create. You can enter one or CIDR addresses to indicate which traffic is
to be routed back to the gateway.
#.
In a VPC, identify the Private Gateway you want to work with.
#.
In the Private Gateway page, click the IP address of the Private
Gateway you want to work with.
#.
Select the Static Routes tab.
#.
Specify the CIDR of destination network.
#.
Click Add.
Wait for few seconds until the new route is created.
Blacklisting Routes
^^^^^^^^^^^^^^^^^^^
CloudStack enables you to block a list of routes so that they are not
assigned to any of the VPC private gateways. Specify the list of routes
that you want to blacklist in the ``blacklisted.routes`` global
parameter. Note that the parameter update affects only new static route
creations. If you block an existing static route, it remains intact and
continue functioning. You cannot add a static route if the route is
blacklisted for the zone.
Deploying VMs to the Tier
~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC to which you want to deploy the
VMs.
The VPC page is displayed where all the tiers you have created are
listed.
#.
Click Virtual Machines tab of the tier to which you want to add a VM.
|add-vm-vpc.png: adding a VM to a vpc.|
The Add Instance page is displayed.
Follow the on-screen instruction to add an instance. For information
on adding an instance, see the Installation Guide.
Deploying VMs to VPC Tier and Shared Networks
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CloudStack allows you deploy VMs on a VPC tier and one or more shared
networks. With this feature, VMs deployed in a multi-tier application
can receive monitoring services via a shared network provided by a
service provider.
#.
Log in to the CloudStack UI as an administrator.
#.
In the left navigation, choose Instances.
#.
Click Add Instance.
#.
Select a zone.
#.
Select a template or ISO, then follow the steps in the wizard.
#.
Ensure that the hardware you have allows starting the selected
service offering.
#.
Under Networks, select the desired networks for the VM you are
launching.
You can deploy a VM to a VPC tier and multiple shared networks.
|addvm-tier-sharednw.png: adding a VM to a VPC tier and shared
network.|
#.
Click Next, review the configuration and click Launch.
Your VM will be deployed to the selected VPC tier and shared network.
Acquiring a New IP Address for a VPC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When you acquire an IP address, all IP addresses are allocated to VPC,
not to the guest networks within the VPC. The IPs are associated to the
guest network only when the first port-forwarding, load balancing, or
Static NAT rule is created for the IP or the network. IP can't be
associated to more than one network at a time.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC to which you want to deploy the
VMs.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
The following options are displayed.
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
Select IP Addresses.
The Public IP Addresses page is displayed.
#.
Click Acquire New IP, and click Yes in the confirmation dialog.
You are prompted for confirmation because, typically, IP addresses
are a limited resource. Within a few moments, the new IP address
should appear with the state Allocated. You can now use the IP
address in port forwarding, load balancing, and static NAT rules.
Releasing an IP Address Allocated to a VPC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The IP address is a limited resource. If you no longer need a particular
IP, you can disassociate it from its VPC and return it to the pool of
available addresses. An IP address can be released from its tier, only
when all the networking ( port forwarding, load balancing, or StaticNAT
) rules are removed for this IP address. The released IP address will
still belongs to the same VPC.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC whose IP you want to release.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
The following options are displayed.
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
Select Public IP Addresses.
The IP Addresses page is displayed.
#.
Click the IP you want to release.
#.
In the Details tab, click the Release IP button |release-ip-icon.png:
button to release an IP.|
Enabling or Disabling Static NAT on a VPC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A static NAT rule maps a public IP address to the private IP address of
a VM in a VPC to allow Internet traffic to it. This section tells how to
enable or disable static NAT for a particular IP address in a VPC.
If port forwarding rules are already in effect for an IP address, you
cannot enable static NAT to that IP.
If a guest VM is part of more than one network, static NAT rules will
function only if they are defined on the default network.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC to which you want to deploy the
VMs.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
For each tier, the following options are displayed.
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
In the Router node, select Public IP Addresses.
The IP Addresses page is displayed.
#.
Click the IP you want to work with.
#.
In the Details tab,click the Static NAT button. |enable-disable.png:
button to enable Static NAT.| The button toggles between Enable and
Disable, depending on whether static NAT is currently enabled for the
IP address.
#.
If you are enabling static NAT, a dialog appears as follows:
|select-vmstatic-nat.png: selecting a tier to apply staticNAT.|
#.
Select the tier and the destination VM, then click Apply.
Adding Load Balancing Rules on a VPC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In a VPC, you can configure two types of load balancing—external LB and
internal LB. External LB is nothing but a LB rule created to redirect
the traffic received at a public IP of the VPC virtual router. The
traffic is load balanced within a tier based on your configuration.
Citrix NetScaler and VPC virtual router are supported for external LB.
When you use internal LB service, traffic received at a tier is load
balanced across different VMs within that tier. For example, traffic
reached at Web tier is redirected to another VM in that tier. External
load balancing devices are not supported for internal LB. The service is
provided by a internal LB VM configured on the target tier.
Load Balancing Within a Tier (External LB)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A CloudStack user or administrator may create load balancing rules that
balance traffic received at a public IP to one or more VMs that belong
to a network tier that provides load balancing service in a VPC. A user
creates a rule, specifies an algorithm, and assigns the rule to a set of
VMs within a tier.
Enabling NetScaler as the LB Provider on a VPC Tier
'''''''''''''''''''''''''''''''''''''''''''''''''''
#.
Add and enable Netscaler VPX in dedicated mode.
Netscaler can be used in a VPC environment only if it is in dedicated
mode.
#.
Create a network offering, as given in `Section 15.27.11.1.2,
“Creating a Network Offering for External LB” <#ext-lb-offering>`__.
#.
Create a VPC with Netscaler as the Public LB provider.
For more information, see `Section 15.27.2, “Adding a Virtual Private
Cloud” <#add-vpc>`__.
#.
For the VPC, acquire an IP.
#.
Create an external load balancing rule and apply, as given in
`Section 15.27.11.1.3, “Creating an External LB
Rule” <#ext-lb-vpc>`__.
Creating a Network Offering for External LB
'''''''''''''''''''''''''''''''''''''''''''
To have external LB support on VPC, create a network offering as
follows:
#.
Log in to the CloudStack UI as a user or admin.
#.
From the Select Offering drop-down, choose Network Offering.
#.
Click Add Network Offering.
#.
In the dialog, make the following choices:
-
**Name**: Any desired name for the network offering.
-
**Description**: A short description of the offering that can be
displayed to users.
-
**Network Rate**: Allowed data transfer rate in MB per second.
-
**Traffic Type**: The type of network traffic that will be carried
on the network.
-
**Guest Type**: Choose whether the guest network is isolated or
shared.
-
**Persistent**: Indicate whether the guest network is persistent
or not. The network that you can provision without having to
deploy a VM on it is termed persistent network.
-
**VPC**: This option indicate whether the guest network is Virtual
Private Cloud-enabled. A Virtual Private Cloud (VPC) is a private,
isolated part of CloudStack. A VPC can have its own virtual
network topology that resembles a traditional physical network.
For more information on VPCs, see `Section 15.27.1, “About Virtual
Private Clouds” <#vpc>`__.
-
**Specify VLAN**: (Isolated guest networks only) Indicate whether
a VLAN should be specified when this offering is used.
-
**Supported Services**: Select Load Balancer. Use Netscaler or
VpcVirtualRouter.
-
**Load Balancer Type**: Select Public LB from the drop-down.
-
**LB Isolation**: Select Dedicated if Netscaler is used as the
external LB provider.
-
**System Offering**: Choose the system service offering that you
want virtual routers to use in this network.
-
**Conserve mode**: Indicate whether to use conserve mode. In this
mode, network resources are allocated only when the first virtual
machine starts in the network.
#.
Click OK and the network offering is created.
Creating an External LB Rule
''''''''''''''''''''''''''''
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC, for which you want to
configure load balancing rules.
The VPC page is displayed where all the tiers you created listed in a
diagram.
For each tier, the following options are displayed:
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
In the Router node, select Public IP Addresses.
The IP Addresses page is displayed.
#.
Click the IP address for which you want to create the rule, then
click the Configuration tab.
#.
In the Load Balancing node of the diagram, click View All.
#.
Select the tier to which you want to apply the rule.
#.
Specify the following:
-
**Name**: A name for the load balancer rule.
-
**Public Port**: The port that receives the incoming traffic to be
balanced.
-
**Private Port**: The port that the VMs will use to receive the
traffic.
-
**Algorithm**. Choose the load balancing algorithm you want
CloudStack to use. CloudStack supports the following well-known
algorithms:
-
Round-robin
-
Least connections
-
Source
-
**Stickiness**. (Optional) Click Configure and choose the
algorithm for the stickiness policy. See Sticky Session Policies
for Load Balancer Rules.
-
**Add VMs**: Click Add VMs, then select two or more VMs that will
divide the load of incoming traffic, and click Apply.
The new load balancing rule appears in the list. You can repeat these
steps to add more load balancing rules for this IP address.
Load Balancing Across Tiers
^^^^^^^^^^^^^^^^^^^^^^^^^^^
CloudStack supports sharing workload across different tiers within your
VPC. Assume that multiple tiers are set up in your environment, such as
Web tier and Application tier. Traffic to each tier is balanced on the
VPC virtual router on the public side, as explained in
`Section 15.27.11, “Adding Load Balancing Rules on a
VPC” <#add-loadbalancer-rule-vpc>`__. If you want the traffic coming
from the Web tier to the Application tier to be balanced, use the
internal load balancing feature offered by CloudStack.
How Does Internal LB Work in VPC?
'''''''''''''''''''''''''''''''''
In this figure, a public LB rule is created for the public IP
72.52.125.10 with public port 80 and private port 81. The LB rule,
created on the VPC virtual router, is applied on the traffic coming from
the Internet to the VMs on the Web tier. On the Application tier two
internal load balancing rules are created. An internal LB rule for the
guest IP 10.10.10.4 with load balancer port 23 and instance port 25 is
configured on the VM, InternalLBVM1. Another internal LB rule for the
guest IP 10.10.10.4 with load balancer port 45 and instance port 46 is
configured on the VM, InternalLBVM1. Another internal LB rule for the
guest IP 10.10.10.6, with load balancer port 23 and instance port 25 is
configured on the VM, InternalLBVM2.
|vpc-lb.png: Configuring internal LB for VPC|
Guidelines
''''''''''
-
Internal LB and Public LB are mutually exclusive on a tier. If the
tier has LB on the public side, then it can't have the Internal LB.
-
Internal LB is supported just on VPC networks in CloudStack 4.2
release.
-
Only Internal LB VM can act as the Internal LB provider in CloudStack
4.2 release.
-
Network upgrade is not supported from the network offering with
Internal LB to the network offering with Public LB.
-
Multiple tiers can have internal LB support in a VPC.
-
Only one tier can have Public LB support in a VPC.
Enabling Internal LB on a VPC Tier
''''''''''''''''''''''''''''''''''
#.
Create a network offering, as given in `Section 15.27.11.2.5,
“Creating an Internal LB Rule” <#int-lb-vpc>`__.
#.
Create an internal load balancing rule and apply, as given in
`Section 15.27.11.2.5, “Creating an Internal LB
Rule” <#int-lb-vpc>`__.
Creating a Network Offering for Internal LB
'''''''''''''''''''''''''''''''''''''''''''
To have internal LB support on VPC, either use the default offering,
DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB, or create a
network offering as follows:
#.
Log in to the CloudStack UI as a user or admin.
#.
From the Select Offering drop-down, choose Network Offering.
#.
Click Add Network Offering.
#.
In the dialog, make the following choices:
-
**Name**: Any desired name for the network offering.
-
**Description**: A short description of the offering that can be
displayed to users.
-
**Network Rate**: Allowed data transfer rate in MB per second.
-
**Traffic Type**: The type of network traffic that will be carried
on the network.
-
**Guest Type**: Choose whether the guest network is isolated or
shared.
-
**Persistent**: Indicate whether the guest network is persistent
or not. The network that you can provision without having to
deploy a VM on it is termed persistent network.
-
**VPC**: This option indicate whether the guest network is Virtual
Private Cloud-enabled. A Virtual Private Cloud (VPC) is a private,
isolated part of CloudStack. A VPC can have its own virtual
network topology that resembles a traditional physical network.
For more information on VPCs, see `Section 15.27.1, “About Virtual
Private Clouds” <#vpc>`__.
-
**Specify VLAN**: (Isolated guest networks only) Indicate whether
a VLAN should be specified when this offering is used.
-
**Supported Services**: Select Load Balancer. Select
``InternalLbVM`` from the provider list.
-
**Load Balancer Type**: Select Internal LB from the drop-down.
-
**System Offering**: Choose the system service offering that you
want virtual routers to use in this network.
-
**Conserve mode**: Indicate whether to use conserve mode. In this
mode, network resources are allocated only when the first virtual
machine starts in the network.
#.
Click OK and the network offering is created.
Creating an Internal LB Rule
''''''''''''''''''''''''''''
When you create the Internal LB rule and applies to a VM, an Internal LB
VM, which is responsible for load balancing, is created.
You can view the created Internal LB VM in the Instances page if you
navigate to **Infrastructure** > **Zones** > <zone\_ name> >
<physical\_network\_name> > **Network Service Providers** > **Internal
LB VM**. You can manage the Internal LB VMs as and when required from
the location.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Locate the VPC for which you want to configure internal LB, then
click Configure.
The VPC page is displayed where all the tiers you created listed in a
diagram.
#.
Locate the Tier for which you want to configure an internal LB rule,
click Internal LB.
In the Internal LB page, click Add Internal LB.
#.
In the dialog, specify the following:
-
**Name**: A name for the load balancer rule.
-
**Description**: A short description of the rule that can be
displayed to users.
-
**Source IP Address**: (Optional) The source IP from which traffic
originates. The IP is acquired from the CIDR of that particular
tier on which you want to create the Internal LB rule. If not
specified, the IP address is automatically allocated from the
network CIDR.
For every Source IP, a new Internal LB VM is created for load
balancing.
-
**Source Port**: The port associated with the source IP. Traffic
on this port is load balanced.
-
**Instance Port**: The port of the internal LB VM.
-
**Algorithm**. Choose the load balancing algorithm you want
CloudStack to use. CloudStack supports the following well-known
algorithms:
-
Round-robin
-
Least connections
-
Source
Adding a Port Forwarding Rule on a VPC
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC to which you want to deploy the
VMs.
The VPC page is displayed where all the tiers you created are listed
in a diagram.
For each tier, the following options are displayed:
-
Internal LB
-
Public LB IP
-
Static NAT
-
Virtual Machines
-
CIDR
The following router information is displayed:
-
Private Gateways
-
Public IP Addresses
-
Site-to-Site VPNs
-
Network ACL Lists
#.
In the Router node, select Public IP Addresses.
The IP Addresses page is displayed.
#.
Click the IP address for which you want to create the rule, then
click the Configuration tab.
#.
In the Port Forwarding node of the diagram, click View All.
#.
Select the tier to which you want to apply the rule.
#.
Specify the following:
-
**Public Port**: The port to which public traffic will be
addressed on the IP address you acquired in the previous step.
-
**Private Port**: The port on which the instance is listening for
forwarded public traffic.
-
**Protocol**: The communication protocol in use between the two
ports.
-
TCP
-
UDP
-
**Add VM**: Click Add VM. Select the name of the instance to which
this rule applies, and click Apply.
You can test the rule by opening an SSH session to the instance.
Removing Tiers
~~~~~~~~~~~~~~
You can remove a tier from a VPC. A removed tier cannot be revoked. When
a tier is removed, only the resources of the tier are expunged. All the
network rules (port forwarding, load balancing and staticNAT) and the IP
addresses associated to the tier are removed. The IP address still be
belonging to the same VPC.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPC that you have created for the account is listed in the
page.
#.
Click the Configure button of the VPC for which you want to set up
tiers.
The Configure VPC page is displayed. Locate the tier you want to work
with.
#.
Select the tier you want to remove.
#.
In the Network Details tab, click the Delete Network button.
|del-tier.png: button to remove a tier|
Click Yes to confirm. Wait for some time for the tier to be removed.
Editing, Restarting, and Removing a Virtual Private Cloud
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Ensure that all the tiers are removed before you remove a VPC.
#.
Log in to the CloudStack UI as an administrator or end user.
#.
In the left navigation, choose Network.
#.
In the Select view, select VPC.
All the VPCs that you have created for the account is listed in the
page.
#.
Select the VPC you want to work with.
#.
In the Details tab, click the Remove VPC button |remove-vpc.png:
button to remove a VPC|
You can remove the VPC by also using the remove button in the Quick
View.
You can edit the name and description of a VPC. To do that, select
the VPC, then click the Edit button. |edit-icon.png: button to edit a
VPC|
To restart a VPC, select the VPC, then click the Restart button.
|restart-vpc.png: button to restart a VPC|
Persistent Networks
-------------------
The network that you can provision without having to deploy any VMs on
it is called a persistent network. A persistent network can be part of a
VPC or a non-VPC environment.
When you create other types of network, a network is only a database
entry until the first VM is created on that network. When the first VM
is created, a VLAN ID is assigned and the network is provisioned. Also,
when the last VM is destroyed, the VLAN ID is released and the network
is no longer available. With the addition of persistent network, you
will have the ability to create a network in CloudStack in which
physical devices can be deployed without having to run any VMs.
Additionally, you can deploy physical devices on that network.
One of the advantages of having a persistent network is that you can
create a VPC with a tier consisting of only physical devices. For
example, you might create a VPC for a three-tier application, deploy VMs
for Web and Application tier, and use physical machines for the Database
tier. Another use case is that if you are providing services by using
physical hardware, you can define the network as persistent and
therefore even if all its VMs are destroyed the services will not be
discontinued.
Persistent Network Considerations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
Persistent network is designed for isolated networks.
-
All default network offerings are non-persistent.
-
A network offering cannot be editable because changing it affects the
behavior of the existing networks that were created using this
network offering.
-
When you create a guest network, the network offering that you select
defines the network persistence. This in turn depends on whether
persistent network is enabled in the selected network offering.
-
An existing network can be made persistent by changing its network
offering to an offering that has the Persistent option enabled. While
setting this property, even if the network has no running VMs, the
network is provisioned.
-
An existing network can be made non-persistent by changing its
network offering to an offering that has the Persistent option
disabled. If the network has no running VMs, during the next network
garbage collection run the network is shut down.
-
When the last VM on a network is destroyed, the network garbage
collector checks if the network offering associated with the network
is persistent, and shuts down the network only if it is
non-persistent.
Creating a Persistent Guest Network
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To create a persistent network, perform the following:
#.
Create a network offering with the Persistent option enabled.
See the Administration Guide.
#.
Select Network from the left navigation pane.
#.
Select the guest network that you want to offer this network service
to.
#.
Click the Edit button.
#.
From the Network Offering drop-down, select the persistent network
offering you have just created.
#.
Click OK.
.. |1000-foot-view.png: Overview of CloudStack| image:: ./_static/images/1000-foot-view.png
.. |basic-deployment.png: Basic two-machine deployment| image:: ./_static/images/basic-deployment.png
.. |infrastructure_overview.png: Nested organization of a zone| image:: ./_static/images/infrastructure-overview.png
.. |region-overview.png: Nested structure of a region.| image:: ./_static/images/region-overview.png
.. |zone-overview.png: Nested structure of a simple zone.| image:: ./_static/images/zone-overview.png
.. |pod-overview.png: Nested structure of a simple pod| image:: ./_static/images/pod-overview.png
.. |cluster-overview.png: Structure of a simple cluster| image:: ./_static/images/cluster-overview.png
.. |installation-complete.png: Finished installs with single Management Server and multiple Management Servers| image:: ./_static/images/installation-complete.png
.. |change-password.png: button to change a user's password| image:: ./_static/images/change-password.png
.. |provisioning-overview.png: Conceptual overview of a basic deployment| image:: ./_static/images/provisioning-overview.png
.. |vsphereclient.png: vSphere client| image:: ./_static/images/vsphere-client.png
.. |addcluster.png: add a cluster| image:: ./_static/images/add-cluster.png
.. |ConsoleButton.png: button to launch a console| image:: ./_static/images/console-icon.png
.. |DeleteButton.png: button to delete dvSwitch| image:: ./_static/images/delete-button.png
.. |vds-name.png: Name of the dvSwitch as specified in the vCenter.| image:: ./_static/images/vds-name.png
.. |traffic-type.png: virtual switch type| image:: ./_static/images/traffic-type.png
.. |dvSwitchConfig.png: Configuring dvSwitch| image:: ./_static/images/dvSwitch-config.png
.. |Small-Scale Deployment| image:: ./_static/images/small-scale-deployment.png
.. |Large-Scale Redundant Setup| image:: ./_static/images/large-scale-redundant-setup.png
.. |Multi-Node Management Server| image:: ./_static/images/multi-node-management-server.png
.. |Example Of A Multi-Site Deployment| image:: ./_static/images/multi-site-deployment.png
.. |Separate Storage Network| image:: ./_static/images/separate-storage-network.png
.. |NIC Bonding And Multipath I/O| image:: ./_static/images/nic-bonding-and-multipath-io.png
.. |Use the GUI to set the configuration variable to true| image:: ./_static/images/ec2-s3-configuration.png
.. |Use the GUI to set the name of a compute service offering to an EC2 instance type API name.| image:: ./_static/images/compute-service-offerings.png
.. |parallel-mode.png: adding a firewall and load balancer in parallel mode.| image:: ./_static/images/parallel-mode.png
.. |guest-traffic-setup.png: Depicts a guest traffic setup| image:: ./_static/images/guest-traffic-setup.png
.. |networksinglepod.png: diagram showing logical view of network in a pod| image:: ./_static/images/network-singlepod.png
.. |networksetupzone.png: Depicts network setup in a single zone| image:: ./_static/images/network-setup-zone.png
.. |addguestnetwork.png: Add Guest network setup in a single zone| image:: ./_static/images/add-guest-network.png
.. |remove-nic.png: button to remove a NIC| image:: ./_static/images/remove-nic.png
.. |set-default-nic.png: button to set a NIC as default one.| image:: ./_static/images/set-default-nic.png
.. |EditButton.png: button to edit a network| image:: ./_static/images/edit-icon.png
.. |edit-icon.png: button to edit a network| image:: ./_static/images/edit-icon.png
.. |addAccount-icon.png: button to assign an IP range to an account.| image:: ./_static/images/addAccount-icon.png
.. |eip-ns-basiczone.png: Elastic IP in a NetScaler-enabled Basic Zone.| image:: ./_static/images/eip-ns-basiczone.png
.. |add-ip-range.png: adding an IP range to a network.| image:: ./_static/images/add-ip-range.png
.. |httpaccess.png: allows inbound HTTP access from anywhere| image:: ./_static/images/http-access.png
.. |autoscaleateconfig.png: Configuring AutoScale| image:: ./_static/images/autoscale-config.png
.. |EnableDisable.png: button to enable or disable AutoScale.| image:: ./_static/images/enable-disable-autoscale.png
.. |gslb.png: GSLB architecture| image:: ./_static/images/gslb.png
.. |gslb-add.png: adding a gslb rule| image:: ./_static/images/add-gslb.png
.. |ReleaseIPButton.png: button to release an IP| image:: ./_static/images/release-ip-icon.png
.. |EnableNATButton.png: button to enable NAT| image:: ./_static/images/enable-disable.png
.. |egress-firewall-rule.png: adding an egress firewall rule| image:: ./_static/images/egress-firewall-rule.png
.. |AttachDiskButton.png: button to attach a volume| image:: ./_static/images/vpn-icon.png
.. |vpn-icon.png: button to enable VPN| image:: ./_static/images/vpn-icon.png
.. |addvpncustomergateway.png: adding a customer gateway.| image:: ./_static/images/add-vpn-customer-gateway.png
.. |edit.png: button to edit a VPN customer gateway| image:: ./_static/images/edit-icon.png
.. |delete.png: button to remove a VPN customer gateway| image:: ./_static/images/delete-button.png
.. |createvpnconnection.png: creating a VPN connection to the customer gateway.| image:: ./_static/images/create-vpn-connection.png
.. |remove-vpn.png: button to remove a VPN connection| image:: ./_static/images/remove-vpn.png
.. |reset-vpn.png: button to reset a VPN connection| image:: ./_static/images/reset-vpn.png
.. |mutltier.png: a multi-tier setup.| image:: ./_static/images/multi-tier-app.png
.. |add-vpc.png: adding a vpc.| image:: ./_static/images/add-vpc.png
.. |add-tier.png: adding a tier to a vpc.| image:: ./_static/images/add-tier.png
.. |replace-acl-icon.png: button to replace an ACL list| image:: ./_static/images/replace-acl-icon.png
.. |add-new-gateway-vpc.png: adding a private gateway for the VPC.| image:: ./_static/images/add-new-gateway-vpc.png
.. |replace-acl-icon.png: button to replace the default ACL behaviour.| image:: ./_static/images/replace-acl-icon.png
.. |add-vm-vpc.png: adding a VM to a vpc.| image:: ./_static/images/add-vm-vpc.png
.. |addvm-tier-sharednw.png: adding a VM to a VPC tier and shared network.| image:: ./_static/images/addvm-tier-sharednw.png
.. |release-ip-icon.png: button to release an IP.| image:: ./_static/images/release-ip-icon.png
.. |enable-disable.png: button to enable Static NAT.| image:: ./_static/images/enable-disable.png
.. |select-vmstatic-nat.png: selecting a tier to apply staticNAT.| image:: ./_static/images/select-vm-staticnat-vpc.png
.. |vpc-lb.png: Configuring internal LB for VPC| image:: ./_static/images/vpc-lb.png
.. |del-tier.png: button to remove a tier| image:: ./_static/images/del-tier.png
.. |remove-vpc.png: button to remove a VPC| image:: ./_static/images/remove-vpc.png
.. |edit-icon.png: button to edit a VPC| image:: ./_static/images/edit-icon.png
.. |restart-vpc.png: button to restart a VPC| image:: ./_static/images/restart-vpc.png