警告

NOTICE: THIS DOCUMENTATION SITE HAS BEEN SUPERSEDED.

For the current documentation site goto: http://docs.cloudstack.apache.org

Host Citrix XenServer Installation

如果你想用Citrix XenServer作为hypervisor运行虚拟机,安装XenServer 6.0或XenServer 6.0.2版本。你需要按照以下步骤来完成初次安装。如果你想从之前的旧版本升级,请参阅 升级XenServer版本

XenServer主机的系统要求

  • 主机必须通过下列任一版本的兼容性认证。请查看Citrix硬件兼容性指导: http://hcl.xensource.com

    • XenServer 5.6 SP2
    • XenServer 6.0
    • XenServer 6.0.2
    • XenServer 6.1.0
    • XenServer 6.2.0
    • XenServer 6.5.0
  • 如果你想使用以前装的某台主机,你必须重新安装Citrix XenServer.

  • 必须支持HVM(Intel-VT或者AMD-V)

  • 确保安装了所有系统补丁供应商提供的所有系统补丁。请随时关注供应商的技术支持渠道,一旦发布补丁,请尽快打上补丁。CloudStack不会跟踪或提醒你安装这些程序。安装最新的补丁对主机至关重要。虚拟化供应商可能不会对过期的系统提供技术支持。

  • 集群中的主机必须是相同架构。CPU的型号、数量和功能参数必须相同。

  • 必须支持HVM(BIOS中要打开Intel-VT或者AMD-V)

  • 64位x86 CPU(多核性能更佳)

  • 硬件虚拟化支持

  • 4GB 内存

  • 36GB本地磁盘空间

  • 至少一块网卡

  • 静态分配的IP

  • 在部署CloudStack时,Hypervisor主机不能运行任何虚拟机

警告

The lack of up-to-date hotfixes can lead to data corruption and lost VMs.

XenServer安装步骤

  1. From https://www.citrix.com/English/ss/downloads/, download the appropriate version of XenServer for your CloudStack version (see “System Requirements for XenServer Hosts”). Install it using the Citrix XenServer Installation Guide.

    较旧版本的XenServer:

    下载最新版本的XenServer不需要使用Citrix账户。如果你要下载旧版本的XenServer,你需要注册一个账户。

配置XenServer dom0内存

配置XenServer dom0占用更大的内存可以使XenServer运行更多的虚拟机。我们建议修改为2940MB。如何来做这些更改,请看 http://support.citrix.com/article/CTX126531。这篇文档是针对XenServer 5.6的,但同样适用于XenServer6.0。

用户名和密码

CloudStack中同一群集下的所有XenServer主机必须拥有同样的用户名和密码。

时间同步

主机必须配置NTP。同一提供点中的所有主机时间必须相同。

  1. 安装NTP.

    # yum install ntp
    
  2. 编辑NTP配置文件指定NTP服务器。

    # vi /etc/ntp.conf
    

    在文件中添加一行或多行你想使用的服务器地址. 例如:

    server 0.xenserver.pool.ntp.org
    server 1.xenserver.pool.ntp.org
    server 2.xenserver.pool.ntp.org
    server 3.xenserver.pool.ntp.org
    
  3. 重启NTP客户端。

    # service ntpd restart
    
  4. 确保机器重启之后NTP会自动启动。

    # chkconfig ntpd on
    

安装 CloudStack XenServer 支持包(CSP)

(可选)

要在XenServer上启用安全组、弹性负载均衡和弹性IP,请下载安装CloudStack XenServer支持包(CSP)。安装完XenServer之后,在每台XenServer主机上执行下列步骤。

For XenServer 6.1:

CSP functionality is already present in XenServer 6.1

  1. Run the below command

    xe-switch-network-backend bridge
    
  2. update sysctl.conf with the following

    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-arptables = 1
    
    $ sysctl -p /etc/sysctl.conf
    

For XenServer 6.0.2, 6.0, 5.6 SP2:

  1. 请从下列链接之一下载CSP至XenServer主机:

    适用于XenServer 6.0.2:

    http://download.cloud.com/releases/3.0.1/XS-6.0.2/xenserver-cloud-supp.tgz

    适用于XenServer 5.6 SP2:

    http://download.cloud.com/releases/2.2.0/xenserver-cloud-supp.tgz

    适用于XenServer 6.0:

    http://download.cloud.com/releases/3.0/xenserver-cloud-supp.tgz

  2. 解压文件:

    # tar xf xenserver-cloud-supp.tgz
    
  3. 执行下列脚本:

    # xe-install-supplemental-pack xenserver-cloud-supp.iso
    
  4. 如果XenServer主机所在的区域使用的是基本网络模式 ,请禁用Open vSwitch (OVS):

    # xe-switch-network-backend  bridge
    

    操作完成之后重启主机。

现在可以在CloudStack中添加XenServer。

为XenServer配置主存储

CloudStack原生支持NFS,iSCSI和本地存储。如果使用其中的一种存储类型,则不需要创建XenServer存储库(“SR”)。

但是,如果你想使用其他技术的存储,如FC存储,你必须自行设置SR。请按以下步骤操作来设置SR。如果你要设置的主机存在于XenServer池中,请在master主机上执行这些操作。如果是单台节点主机,则在该XenServer主机上操作即可。

  1. 通过光纤通道将集群中的所有主机连接至光纤存储设备

  2. 重新扫描SCSI总线。使用下列命令或者在XenCenter中使用HBA rescan按钮来完成扫描。

    # scsi-rescan
    
  3. 在所有主机上重复步骤2.

  4. 检查确保已经识别到新的SCSI磁盘。

    # ls /dev/disk/by-id/scsi-360a98000503365344e6f6177615a516b -l
    

    输出结果如下所示,指定的文件名稍许不同(scsi-<scsiID>):

    lrwxrwxrwx 1 root root 9 Mar 16 13:47
    /dev/disk/by-id/scsi-360a98000503365344e6f6177615a516b -> ../../sdc
    
  5. 在所有主机上重复步骤4

  6. 在存储服务器中,运行下列命令获取新添加SR的唯一ID标识。

    # uuidgen
    

    输出结果如下所示,指定的ID不同:

    e6849e96-86c3-4f2c-8fcc-350cc711be3d
    
  7. 创建FC SR 。在name-label中,输入刚才获取的ID。

    # xe sr-create type=lvmohba shared=true
    device-config:SCSIid=360a98000503365344e6f6177615a516b
    name-label="e6849e96-86c3-4f2c-8fcc-350cc711be3d"
    

    这条命令会获取SR的ID,以下面为例(你的UUID不同):

    7a143820-e893-6c6a-236e-472da6ee66bf
    
  8. 使用下面的命令为SR创建通俗易懂的描述, uuid参数使用使用之前命令返回的SR ID. 在名称描述中,设置任何你自己喜欢的描述。

    # xe sr-param-set uuid=7a143820-e893-6c6a-236e-472da6ee66bf name-description="Fiber Channel storage repository"
    

    记录这些值,之后在CloudStack中添加存储时会用到(查看 “添加主存储”)。在添加主存储对话框中的协议一项,选择PreSetup。在SR Name-Label中,输入之前设置的 name-label(在本示例中为e6849e96-86c3-4f2c-8fcc-350cc711be3d)。

  9. (可选)如果想在FC SAN上启用多路径I/O,请参考SAN供应商提供的文档。

XenServer iSCSI多路径设置(可选)

在Citrix XenServer上配置存储库时,你可以启用多路径I/O,它是通过在服务器与SAN设备之间提供冗余的物理组件实现,提供了更高的可靠性。要启用多路径,请使用 XenServer文档中提供的SAN驱动程序。从下面链接开始:

你同样可以咨询SAN提供商提供关于配置Citrix存储库多路径的建议。

记录这些值,之后在CloudStack中添加存储时将会用到(查看 “添加主存储”)。在添加主存储对话框中的协议一项,选择PreSetup。在SR Name-Label中,输入之前创建的SR名称。

如果遇到任何困难, 请通过SAN供应商团队获得支持. 如果仍然无法解决你的问题, 请联系技术支持.

XenServer物理网络设置

XenServer安装完成后, 需要对网络做一些额外的设置。此时, 你应该对主机上的网卡及每个网络传输的流量有一个整体规划。网络连接必须满足你的规划.

如果你计划使用网卡绑定,那么所有主机上的网卡的连接必须相同。比如,如果群集中的一台主机eth0为专用绑定,那么其他主机上的eth0也必须为专用绑定。

分配给管理网络的IP必须是静态IP。它可以通过DHCP保留或者在主机上指定。

CloudStack使用XenServer上的不同网卡或绑定来配置不同流量类型。你可以在管理服务器上通过输入XenServer适配器标签来控制这些流量。CloudStack中的标签名称就是物理接口或绑定的名称。在简单的网络中,可以不填写标签。

在XenServer环境中配置网络时,必须正确的配置网络流量标签,确保CloudStack将虚拟接口绑定到正确的物理设备上。XenServer的网络标签必须与配置CloudStack的网络时指定的XenServer流量标签一致。运行以下命令来设置:

xe network-param-set uuid=<network id> name-label=<CloudStack traffic label>

使用专用的XenServer网卡来配置公用网络(可选)

CloudStack支持公共网络使用第二块网卡(或者是2块网卡绑定,在 XenServer中的网卡绑定(可选) 有描述)。如果没有使用绑定,公共网络可以使用群集中不同主机上的不同网卡。比如,公共网络可以使用节点A上的eth0和节点B上的eth1。但是,用于公共网络的名称标签在所有主机上必须一致。举个例子,我们在XenServer上设定了网络标签”cloud-public”。在安装完管理服务器之后,你必须使用( “cloud-public”)作为对应的CloudStack的网络流量标签;这个在 `”管理服务器的安装” <installation.html#management-server-installation>`_中有介绍。

如果你使用双网卡绑定作为公共网络,请参阅 XenServer中的网卡绑定(可选)

如果你指定单网卡作为公共网络,在加入CloudStack环境之前按照下面的流程配置每个主机。

  1. 运行xe network-list,查找公共网络。通常它的名字就是public。找到之后记录UUID。可以称之为<UUID-Public>。

  2. 运行以下命令。

    # xe network-param-set name-label=cloud-public uuid=<UUID-Public>
    

XenServer配置多个来宾网络(可选)

CloudStack支持在XenServer上使用多个来宾网络。在XenServer中为每个网络都被分配名称标签。例如,你可能有两个名称分别为”cloud-guest”和”cloud-guest2”的网络。在配置好管理服务器并且运行后,你必须使用这些标签将这些网络添加到CloudStack中,以便CloudStack能够识别到这些网络。

在将主机添加到CloudStack之前,请在每个新主机上执行以下操作:

  1. 运行xe network-list,找出来宾网络。并记录UUID。可以称为<UUID-Guest>。

  2. 运行下面的命令, 替换你自己的名称标签和UUID.

    # xe network-param-set name-label=<cloud-guestN> uuid=<UUID-Guest>
    
  3. 对每个额外的来宾网络都重复这些步骤,注意每次要使用不同的名称标签和UUID。

XenServer设置单独的存储网络(可选)

在绑定网卡之前,你可以有选择的配置一个独立的存储网络。使用1到2个网卡,上述给出了两块网卡绑定的示例。配置一个独立的存储网络是管理的职责。

为存储网络设置一个与其他网络不同的名称标签。

让独立的存储网络工作正常,必须可以通过它的接口ping通主存储设备的IP。比如,如果eth0是管理网络的网卡,ping -I eth0 <primary storage device IP>必须是不通的。在所有的部署环境里,通过管理网络必须能ping通辅助存储设备的IP。如果辅助存储设备是在存储网络中,那么通过存储网络同样也要能ping通它。

你可以设置两个独立的存储网络。例如,使用两块独立网卡实现iSCSI多路径。当然,两个网络都需要自己的名称标签。

如果没有做绑定,管理员必须为所有主机上(主、从节点)的存储网络设置名称标签。

此处示例配置eth5访问172.16.0.0/24的存储网络。

# xe pif-list host-name-label='hostname' device=eth5
uuid(RO): ab0d3dd4-5744-8fae-9693-a022c7a3471d
device ( RO): eth5
#xe pif-reconfigure-ip DNS=172.16.3.3 gateway=172.16.0.1 IP=172.16.0.55 mode=static netmask=255.255.255.0 uuid=ab0d3dd4-5744-8fae-9693-a022c7a3471d

XenServer中的网卡绑定(可选)

XenServer支持Source Level Balancing (SLB) NIC绑定。两块网卡可被绑定在一起承载公共网络、管理网络和来宾网络流量,或这些网络的组合。单独的存储网络同样可以。以下是一些配置的示例:

  • 管理网络使用2块网卡,公共网络使用2块网卡,存储网络使用2块网卡
  • 管理网络使用2块网卡,公共网络使用1块网卡,存储共用管理网络
  • 管理网络使用2块网卡,共用网络使用2块网卡,存储共用管理网络
  • 管理网络,公共网络,存储网络使用一块网卡

所有的网卡绑定都是可选的

XenServer期望群集中所有的节点都拥有相同的网络布线,以及相同的绑定。在安装完成后第一台主机将成为Master,而随后加入到群集中的其他主机都将成为Slave。Master主机上的网卡绑定设置会覆盖其他主机的网络配置。在Master和Slaver上设置网卡绑定的步骤不同,重点包括几个部分:

  • 必须在添加至群集的第一台主机上设置网卡绑定。然后必须使用如下的xe命令,使第二台和随后添加至该群集的主机上自动配置与Master主机相同的网卡绑定。
  • 群集中的Slave主机必须与Master主机拥有完全相同的布线。例如,如果eth0在群集中的主机上的专用网络绑定中,那么eth0必须在群集中的所有主机上专用网络绑定中。

管理网络绑定

在将主机添加至CloudStack之前管理员必须绑定管理网络的网卡。

在群集的第一台主机中创建专用绑定

使用下述步骤在XenServer上创建网卡绑定。这些步骤只在群集中第一台主机上运行即可。本示例为cloud-private网络绑定了两块物理网卡(eth0和eth1)。

  1. 找到想要绑定在一起的物理网卡。

    # xe pif-list host-name-label='hostname' device=eth0
    # xe pif-list host-name-label='hostname' device=eth1
    

    如上命令显示了eth0、eth1和对应的UUID。并替换你的网卡编号。上述命令返回的UUID称为slave1-UUID和slave2-UUID。

  2. 为该绑定创建一个新的网络。例如,一个名为“cloud-public”的新网络。

    标签非常重要。因为CloudStack根据配置的名称查找网络。必须对云中所有主机的管理网络使用同样的名称标签(name-label)。

    # xe network-create name-label=cloud-private
    # xe bond-create network-uuid=[uuid of cloud-private created above]
    pif-uuids=[slave1-uuid],[slave2-uuid]
    

现在有了可以被CloudStack识别为管理网络的网卡绑定。

公共网络网卡绑定

可以在单独的公共网络上执行绑定。管理员可以将使用网卡绑定的公共网络与管理网络区分开。

在集群的第一台主机上创建公共网络网卡绑定

以下步骤仅在群集的第一台主机中运行。本示例为cloud-public绑定了两块物理网卡(eth2和eth3)。

  1. 找到想要绑定在一起的物理网卡。

    # xe pif-list host-name-label='hostname' device=eth2
    # xe pif-list host-name-label='hostname' device=eth3
    

    以上命令显示了eth2、eth3和对应的UUID。替换你的网卡编号。将上述命令返回的UUID称为slave1-UUID和slave2-UUID。

  2. 为网卡绑定创建一个新的网络。比如,一个名为”cloud-public”的新网络。

    该标签非常重要。因为CloudStack根据配置的名称来查找网络。必须对云中所有物理主机的公共网络使用同样的名称标签(name-label)。

    # xe network-create name-label=cloud-public
    # xe bond-create network-uuid=[uuid of cloud-public created above]
    pif-uuids=[slave1-uuid],[slave2-uuid]
    

现在有了被CloudStack识别为公共网络的网卡绑定。

在群集中添加更多主机

在master主机添加了(任何)绑定网卡的基础上,可以添加其他的slave主机。对所有添加至群集的其他主机执行下面的命令。他的作用是将这些主机都加入master所在的同一个XenServer池中。

# xe pool-join master-address=[master IP] master-username=root
master-password=[your password]

完成群集内的绑定设置

所有主机添加至资源池后,运行 cloud-setup-bond脚本。此脚本将配置群集中所有主机的网卡绑定。

  1. 将管理服务器中/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/cloud-setup-bonding.sh拷贝到master主机中并确认该脚本可执行。

  2. 运行脚本:

    # ./cloud-setup-bonding.sh
    

现在,群集内所有主机的网卡绑定都已配置正确。

升级XenServer版本

本章节介绍了如何升级CloudStack环境中的XenServer。实际升级的操作在XenServer文档中有详细描述,但是在升级前后有些额外的步骤必须执行。

注解

确保硬件可以被新版本XenServer支持。

升级XenServer:

  1. 升级数据库。在管理服务器节点上:

    1. 备份数据库:

      # mysqldump --user=root --databases cloud > cloud.backup.sql
      # mysqldump --user=root --databases cloud_usage > cloud_usage.backup.sql
      
    2. 需要更改升级后的主机中虚拟机的操作系统类型。

      • 如果是从XenServer 5.6 GA 升级到XenServer 5.6 SP2,更改虚机操作系统类型CentOS 5.5 (32-bit), Oracle Enterprise Linux 5.5 (32-bit)或者Red Hat Enterprise Linux 5.5 (32-bit)为Other Linux (32-bit)。同样这些虚机的64位版本操作系统类型也要改为Other Linux (64-bit)。
      • 如果是从XenServer 5.6 SP2升级到XenServer 6.0.2,更改虚拟操作系统类型CentOS 5.6 (32-bit), CentOS 5.7 (32-bit), Oracle Enterprise Linux 5.6 (32-bit), Oracle Enterprise Linux 5.7 (32-bit), Red Hat Enterprise Linux 5.6 (32-bit)或者Red Hat Enterprise Linux 5.7 (32-bit)为Other Linux (32-bit)。同样这些虚机的64位版本操作系统类型也要改为Other Linux (64-bit)。
      • 如果从XenServer 5.6升级到XenServer 6.0.2,需完成以上所有操作。
    3. 重启管理服务和Usage服务. 只需为所有的集群做一次这样的操作。

      # service cloudstack-management start
      # service cloudstack-usage start
      
  2. 在CloudStack中断开XenServer群集连接。

    1. 使用admin账户登录CloudStack管理界面。
    2. 导航至XenServer群集,点击操作-取消管理。
    3. 查看群集状态直到显示未受管理。
  3. 登录到群集中的任意一台主机,运行下面的命令清除VLAN信息:

    # . /opt/xensource/bin/cloud-clean-vlan.sh
    
  4. 仍旧在这台已经登录的主机中,运行下面的升级准备脚本:

    # /opt/xensource/bin/cloud-prepare-upgrade.sh
    

    故障排除:如果看到 “can’t eject CD,” 错误,请登录到虚拟机将光盘卸载,并重新运行脚本。

  5. 升级群集中所有的XenServer主机。首先升级master节点。

    1. 将该主机上的所有虚拟机动态迁移到其他主机。请参照管理指南了解动态迁移指导。

      故障排除:迁移虚拟机时可能会遇到下面的错误:

      [root@xenserver-qa-2-49-4 ~]# xe vm-migrate live=true host=xenserver-qa-2-49-5 vm=i-2-8-VM
      You attempted an operation on a VM which requires PV drivers to be installed but the drivers were not detected.
      vm: b6cf79c8-02ee-050b-922f-49583d9f1a14 (i-2-8-VM)
      

      解决这个问题,请运行下面的命令:

      # /opt/xensource/bin/make_migratable.sh  b6cf79c8-02ee-050b-922f-49583d9f1a14
      
    2. 重启主机。

    3. 要升级更新版本的XenServer。请执行XenServer文档中的步骤。

    4. 在升级完成之后,将下列文件从管理服务器复制到这台主机,文件所在路径如下:

      复制管理服务器的文件 复制到XenServer主机的路径
      /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py /opt/xensource/sm/NFSSR.py
      /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/setupxenserver.sh /opt/xensource/bin/setupxenserver.sh
      /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/make_migratable.sh /opt/xensource/bin/make_migratable.sh
      /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/cloud-clean-vlan.sh /opt/xensource/bin/cloud-clean-vlan.sh
    5. 执行下列脚本:

      # /opt/xensource/bin/setupxenserver.sh
      

      故障排除:如果看到下面的错误信息,可以忽略它。

      mv: cannot stat `/etc/cron.daily/logrotate`: No such file or directory
      
    6. 将XenServer主机连接至存储库(物理的块设备):

      # for pbd in `xe pbd-list currently-attached=false| grep ^uuid | awk '{print $NF}'`; do xe pbd-plug uuid=$pbd ; done
      

      注解

      如果添加一台主机到这个XenServer资源池中,你必须将这台主机上的所有的虚机迁移到其他主机,然后将这台主机从原来的XenServer资源池中移除。

  6. 重复这些步骤,将每台主机都升级到相同的XenServer版本。

  7. 在XenServer群集中的一台主机上运行下面命令来清除主机标签:

    # for host in $(xe host-list | grep ^uuid | awk '{print $NF}') ; do xe host-param-clear uuid=$host param-name=tags; done;
    

    注解

    当复制和粘贴命令时,请确保没有多余的换行符,因为一些文档查看器可能会在复制时加上换行符。

  8. 在CloudStack中重新连接XenServer群集。

    1. 使用admin账户登录CloudStack管理界面。
    2. 在XenServer群集导航页中,点击操作-管理。
    3. 查看状态以确保所有的主机都恢复正常.
  9. 当所有的主机都是运行状态后, 在集群中的一台主机上运行下列的命令:

    # /opt/xensource/bin/cloud-clean-vlan.sh