<!DOCTYPE chapter 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="multi_site_deployment">
    <title>Multi-Site Deployment</title>
    <para>The &PRODUCT; platform scales well into multiple sites through the use of zones. The following diagram shows an example of a multi-site deployment.</para>
    <mediaobject>
        <imageobject>
            <imagedata fileref="./images/multi-site-deployment.png" />
        </imageobject>
        <textobject><phrase>Example Of A Multi-Site Deployment</phrase></textobject>
    </mediaobject>
    <para>Data Center 1 houses the primary Management Server as well as zone 1. The MySQL database is replicated in real time to the secondary Management Server installation in Data Center 2.</para>
    <mediaobject>
        <imageobject>
            <imagedata fileref="./images/separate-storage-network.png" />
        </imageobject>
        <textobject><phrase>Separate Storage Network</phrase></textobject>
    </mediaobject>
    <para>This diagram illustrates a setup with a separate storage network. Each server has four NICs, two connected to pod-level network switches and two connected to storage network switches.</para>
    <para>There are two ways to configure the storage network:</para>
    <itemizedlist>
        <listitem><para> Bonded NIC and redundant switches can be deployed for NFS.  In NFS deployments, redundant switches and bonded NICs still result in one network (one CIDR block+ default gateway address).</para></listitem>
        <listitem><para> iSCSI can take advantage of two separate storage networks (two CIDR blocks each with its own default gateway). Multipath iSCSI client can failover and load balance between separate storage networks.</para></listitem>
    </itemizedlist>
    <mediaobject>
        <imageobject>
            <imagedata fileref="./images/nic-bonding-and-multipath-io.png" />
        </imageobject>
        <textobject><phrase>NIC Bonding And Multipath I/O</phrase></textobject>
    </mediaobject>
    <para> This diagram illustrates the differences between NIC bonding and Multipath I/O (MPIO). NIC bonding configuration involves only one network. MPIO involves two separate networks.</para>
</section>
