<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>
<!-- Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<section id="advanced-zone-configuration">
  <title>Advanced Zone Configuration</title>
  <orderedlist>
    <listitem>
      <para>After you select Advanced in the Add Zone wizard and click Next, you will be asked to
        enter the following details. Then click Next.</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Name.</emphasis> A name for the zone.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">DNS 1 and 2.</emphasis> These are DNS servers for use by guest
            VMs in the zone. These DNS servers will be accessed via the public network you will add
            later. The public IP addresses for the zone must have a route to the DNS server named
            here.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Internal DNS 1 and Internal DNS 2.</emphasis> These are DNS
            servers for use by system VMs in the zone(these are VMs used by &PRODUCT; itself, such
            as virtual routers, console proxies,and Secondary Storage VMs.) These DNS servers will
            be accessed via the management traffic network interface of the System VMs. The private
            IP address you provide for the pods must have a route to the internal DNS server named
            here.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Network Domain.</emphasis> (Optional) If you want to assign a
            special domain name to the guest VM network, specify the DNS suffix.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Guest CIDR.</emphasis> This is the CIDR that describes the IP
            addresses in use in the guest virtual networks in this zone. For example, 10.1.1.0/24.
            As a matter of good practice you should set different CIDRs for different zones. This
            will make it easier to set up VPNs between networks in different zones.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Hypervisor.</emphasis> (Introduced in version 3.0.1) Choose
            the hypervisor for the first cluster in the zone. You can add clusters with different
            hypervisors later, after you finish adding the zone.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Public.</emphasis> A public zone is available to all users. A
            zone that is not public will be assigned to a particular domain. Only users in that
            domain will be allowed to create guest VMs in this zone.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>Choose which traffic types will be carried by the physical network.</para>
      <para>The traffic types are management, public, guest, and storage traffic. For more
        information about the types, roll over the icons to display their tool tips, or see <xref
          linkend="advanced-zone-network-traffic-types"/>. This screen starts out with one network
        already configured. If you have multiple physical networks, you need to add more. Drag and
        drop traffic types onto a greyed-out network and it will become active. You can move the
        traffic icons from one network to another; for example, if the default traffic types shown
        for Network 1 do not match your actual setup, you can move them down. You can also change
        the network names if desired.</para>
    </listitem>
    <listitem>
      <para>(Introduced in version 3.0.1) Assign a network traffic label to each traffic type on
        each physical network. These labels must match the labels you have already defined on the
        hypervisor host. To assign each label, click the Edit button under the traffic type icon
        within each physical network. A popup dialog appears where you can type the label, then
        click OK.</para>
      <para>These traffic labels will be defined only for the hypervisor selected for the first
        cluster. For all other hypervisors, the labels can be configured after the zone is
        created.</para>
    </listitem>
    <listitem>
      <para>Click Next.</para>
    </listitem>
    <listitem>
      <para>Configure the IP range for public Internet traffic. Enter the following details, then
        click Add. If desired, you can repeat this step to add more public Internet IP ranges. When
        done, click Next.</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Gateway.</emphasis> The gateway in use for these IP
            addresses.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Netmask.</emphasis> The netmask associated with this IP
            range.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">VLAN.</emphasis> The VLAN that will be used for public
            traffic.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Start IP/End IP.</emphasis> A range of IP addresses that are
            assumed to be accessible from the Internet and will be allocated for access to guest
            networks.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>In a new zone, &PRODUCT; adds the first pod for you. You can always add more pods later.
        For an overview of what a pod is, see <xref linkend="about-pods"/>.</para>
      <para>To configure the first pod, enter the following, then click Next:</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Pod Name.</emphasis> A name for the pod.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Reserved system gateway.</emphasis> The gateway for the hosts
            in that pod.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Reserved system netmask.</emphasis> The network prefix that
            defines the pod's subnet. Use CIDR notation.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Start/End Reserved System IP.</emphasis> The IP range in the
            management network that &PRODUCT; uses to manage various system VMs, such as Secondary
            Storage VMs, Console Proxy VMs, and DHCP. For more information, see <xref
              linkend="system-reserved-ip-addresses"/>.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>Specify a range of VLAN IDs to carry guest traffic for each physical network (see VLAN
        Allocation Example ), then click Next.</para>
    </listitem>
    <listitem>
      <para>In a new pod, &PRODUCT; adds the first cluster for you. You can always add more clusters
        later. For an overview of what a cluster is, see <xref linkend="about-clusters"/>.</para>
      <para>To configure the first cluster, enter the following, then click Next:</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Hypervisor.</emphasis> (Version 3.0.0 only; in 3.0.1, this
            field is read only) Choose the type of hypervisor software that all hosts in this
            cluster will run. If you choose VMware, additional fields appear so you can give
            information about a vSphere cluster. For vSphere servers, we recommend creating the
            cluster of hosts in vCenter and then adding the entire cluster to &PRODUCT;. See Add
            Cluster: vSphere .</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Cluster name.</emphasis> Enter a name for the cluster. This
            can be text of your choosing and is not used by &PRODUCT;.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>In a new cluster, &PRODUCT; adds the first host for you. You can always add more hosts
        later. For an overview of what a host is, see <xref linkend="about-hosts"/>.</para>
      <note>
        <para>When you deploy &PRODUCT;, the hypervisor host must not have any VMs already
          running.</para>
      </note>
      <para>Before you can configure the host, you need to install the hypervisor software on the
        host. You will need to know which version of the hypervisor software version is supported by
        &PRODUCT; and what additional configuration is required to ensure the host will work with
        &PRODUCT;. To find these installation details, see:</para>
      <itemizedlist>
        <listitem>
          <para>Citrix XenServer Installation for &PRODUCT;</para>
        </listitem>
        <listitem>
          <para>VMware vSphere Installation and Configuration</para>
        </listitem>
        <listitem>
          <para>KVM Installation and Configuration</para>
        </listitem>
        <!-- <listitem>
          <para>Oracle VM (OVM) Installation and Configuration</para>
      </listitem> -->
      </itemizedlist>
      <para>To configure the first host, enter the following, then click Next:</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Host Name.</emphasis> The DNS name or IP address of the
            host.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Username.</emphasis> Usually root.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Password.</emphasis> This is the password for the user named
            above (from your XenServer or KVM install).</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Host Tags.</emphasis> (Optional) Any labels that you use to
            categorize hosts for ease of maintenance. For example, you can set to the cloud's HA tag
            (set in the ha.tag global configuration parameter) if you want this host to be used only
            for VMs with the "high availability" feature enabled. For more information, see
            HA-Enabled Virtual Machines as well as HA for Hosts, both in the Administration
            Guide.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>In a new cluster, &PRODUCT; adds the first primary storage server for you. You can
        always add more servers later. For an overview of what primary storage is, see <xref
          linkend="about-primary-storage"/>.</para>
      <para>To configure the first primary storage server, enter the following, then click
        Next:</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Name.</emphasis> The name of the storage device.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Protocol.</emphasis> For XenServer, choose either NFS, iSCSI,
            or PreSetup. For KVM, choose NFS, SharedMountPoint, CLVM, and RBD. For vSphere choose either VMFS
            (iSCSI or FiberChannel) or NFS. The remaining fields in the screen vary depending on
            what you choose here.</para>
          <informaltable frame="all">
            <tgroup cols="2" align="left" colsep="1" rowsep="1">
              <colspec colname="c1"/>
              <colspec colname="c2"/>
              <tbody>
                <row>
                  <entry><para>NFS</para></entry>
                  <entry>
                    <itemizedlist>
                      <listitem>
                        <para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
                          the storage device.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Path.</emphasis> The exported path from the
                          server.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
                          list of tags for this storage device. It should be an equivalent set or
                          superset of the tags on your disk offerings.</para>
                      </listitem>
                    </itemizedlist>
                    <para>The tag sets on primary storage across clusters in a Zone must be
                      identical. For example, if cluster A provides primary storage that has tags T1
                      and T2, all other clusters in the Zone must also provide primary storage that
                      has tags T1 and T2.</para>
                  </entry>
                </row>
                <row>
                  <entry><para>iSCSI</para></entry>
                  <entry>
                    <itemizedlist>
                      <listitem>
                        <para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
                          the storage device.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Target IQN.</emphasis> The IQN of the target.
                          For example, iqn.1986-03.com.sun:02:01ec9bb549-1271378984.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Lun.</emphasis> The LUN number. For example,
                          3.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
                          list of tags for this storage device. It should be an equivalent set or
                          superset of the tags on your disk offerings.</para>
                      </listitem>
                    </itemizedlist>
                    <para>The tag sets on primary storage across clusters in a Zone must be
                      identical. For example, if cluster A provides primary storage that has tags T1
                      and T2, all other clusters in the Zone must also provide primary storage that
                      has tags T1 and T2.</para>
                  </entry>
                </row>
                <row>
                  <entry><para>preSetup</para></entry>
                  <entry>
                    <itemizedlist>
                      <listitem>
                        <para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
                          the storage device.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">SR Name-Label.</emphasis> Enter the name-label
                          of the SR that has been set up outside &PRODUCT;.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
                          list of tags for this storage device. It should be an equivalent set or
                          superset of the tags on your disk offerings.</para>
                      </listitem>
                    </itemizedlist>
                    <para>The tag sets on primary storage across clusters in a Zone must be
                      identical. For example, if cluster A provides primary storage that has tags T1
                      and T2, all other clusters in the Zone must also provide primary storage that
                      has tags T1 and T2.</para>
                  </entry>
                </row>
                <row>
                  <entry><para>SharedMountPoint</para></entry>
                  <entry>
                    <itemizedlist>
                      <listitem>
                        <para><emphasis role="bold">Path.</emphasis> The path on each host that is
                          where this primary storage is mounted. For example, "/mnt/primary".</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
                          list of tags for this storage device. It should be an equivalent set or
                          superset of the tags on your disk offerings.</para>
                      </listitem>
                    </itemizedlist>
                    <para>The tag sets on primary storage across clusters in a Zone must be
                      identical. For example, if cluster A provides primary storage that has tags T1
                      and T2, all other clusters in the Zone must also provide primary storage that
                      has tags T1 and T2.</para>
                  </entry>
                </row>
                <row>
                  <entry><para>VMFS</para></entry>
                  <entry>
                    <itemizedlist>
                      <listitem>
                        <para><emphasis role="bold">Server.</emphasis> The IP address or DNS name of
                          the vCenter server.</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Path.</emphasis> A combination of the datacenter
                          name and the datastore name. The format is "/" datacenter name "/"
                          datastore name. For example, "/cloud.dc.VM/cluster1datastore".</para>
                      </listitem>
                      <listitem>
                        <para><emphasis role="bold">Tags (optional).</emphasis> The comma-separated
                          list of tags for this storage device. It should be an equivalent set or
                          superset of the tags on your disk offerings.</para>
                      </listitem>
                    </itemizedlist>
                    <para>The tag sets on primary storage across clusters in a Zone must be
                      identical. For example, if cluster A provides primary storage that has tags T1
                      and T2, all other clusters in the Zone must also provide primary storage that
                      has tags T1 and T2.</para>
                  </entry>
                </row>
              </tbody>
            </tgroup>
          </informaltable>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>In a new zone, &PRODUCT; adds the first secondary storage server for you. For an
        overview of what secondary storage is, see <xref linkend="about-secondary-storage"/>.</para>
      <para>Before you can fill out this screen, you need to prepare the secondary storage by
        setting up NFS shares and installing the latest &PRODUCT; System VM template. See Adding
        Secondary Storage :</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">NFS Server.</emphasis> The IP address of the server or fully qualified domain name of the server.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Path.</emphasis> The exported path from the server.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>Click Launch.</para>
    </listitem>
  </orderedlist>
</section>
