
CloudStack 文档 快速链接
欢迎阅读CloudStack安装文档¶
选择部署架构¶
选择部署架构¶
部署CloudStack的具体架构会因规模及用途的不同而变化。这一章节会包含一些典型的部署构架:用于测试和试验的小型架构,以及用于生产环境的大型全冗余架构。
小型部署¶
这个图演示了CloudStack在小型部署时的网络结构。
防火墙提供了到Internet的连接.此防火墙被配置成NAT模式,它会将来自Internet的HTTP访问和API调用转发到管理服务器。而管理服务器的网络属于管理网络。
一个二层交换机连接所有的物理服务器和存储服务器。
单一的NFS服务器需要能同时提供主存储和辅助存储。
管理服务器连接至管理网络
大规模冗余设置¶
这个图演示了CloudStack在大规模部署时的网络结构。
三层交换层处于数据机房的核心位置。应该部署类似VRRP的冗余路由协议实现设备热备份。通常,高端的核心交换机上包含防火墙模块。如果三层交换机上没有集成防火墙功能,也可以使用独立防火墙设备。防火墙一般会配置成NAT模式,它能提供如下功能:
将来自Internet的HTTP访问和API调用转发到管理节点服务器。管理服务器的网络属于管理网络.
当云跨越多个区域(Zone)时,防火墙之间应该启用site-to-site VPN,以便让不同区域中的服务器之间可以直接互通。
layer-2的接入交换层连接到每个提供点(POD),也可以用多个交换机堆叠来增加端口数量。无论哪种情况下,都应该部署冗余的二层交换机。
管理服务器集群(包括前端负载均衡节点,管理节点及MYSQL数据库节点)通过两个负载均衡节点接入管理网络。
辅助存储服务器接入管理网络。
每一个机柜提供点(POD)包括存储和计算节点服务器。每一个存储和计算节点服务器都需要有冗余网卡连接到不同的 layer-2 接入交换机上。
独立的存储网络¶
在前面章节中,提及了大规模冗余部署,存储的数据流量过大可能使得管理网络过载。部署时可选择将存储网络分离出来。存储协议如iSCSI,对网络延迟非常敏感。独立的存储网络能够使其不受来宾网络流量波动的影响。
多节点管理服务器¶
CloudStack管理服务器可以部署一个或多个前端服务器并连接单一的MySQL数据库。可视需求使用一对硬件负载均衡对Web请求进行分流。另一备份管理节点可使用远端站点的MySQL复制数据以增加灾难恢复能力。
系统管理人员必须决定如下事项:
是否需要使用负载均衡器。
需要部署多少台管理节点服务器。
如何部署MYSQL复制以便启用灾难恢复。
多站点部署¶
运用CloudStack的区域技术可以很容易的将其扩散为多站点模式。下图就显示了一个多站点部署的示例
在数据中心1内有主管理节点和区域1。MySQL数据库实时复制到数据中心2内的辅助管理节点中。
这个图展示了使用独立存储网络的设计。每一个物理服务器有四块网卡,其中两块连接到提供点级别的交换机,而另外两块网卡连接到用于存储网络的交换机。
有两种方式配置存储网络:
为NFS配置网卡绑定和冗余交换机。在NFS部署中,冗余的交换机和网卡绑定仍然处于同一网络。(同一个CIDR 段 + 默认网关地址)
iSCSI能同时利用两个独立的存储网络(两个拥有各自默认网关的不同CIDR段)。支持iSCSI多路径的客户端能在两个独立的存储网络中实现故障切换和负载均衡。
此图展示了网卡绑定与多路径IO(MPIO)之间的区别,网卡绑定的配置仅涉及一个网段,MPIO涉及两个独立的网段。
选择Hypervisor¶
CloudStack支持多种流行的Hypervisor,你可以在所有的主机上使用一种,也可以使用不同的Hypervisor,但在同一个群集内的主机必须使用相同的Hypervisor。
你可能已经安装并运行了特定的hypervisor节点,在这种情况下,你的Hypervisor选择已经确定了。如果还处于初步规划阶段,那么就需要决定那种Hypervisor能切合你的需求。各种Hypervisor的利弊讨论不在本文档之列。但无论如何,CloudStack可以支持每种Hypervisor的那些功能的详细信息还是能够帮到你的。下面的表格就提供了这些信息:
功能特点 |
XenServer 6.0.2 | vSphere 4.1/5.0 | KVM - RHEL 6.2 | 裸设备 |
---|---|---|---|---|
网络限速 |
是 |
是 |
否 |
无 |
在区域内用于基本网络模式的安全组 |
是 |
否 |
是 |
否 |
iSCSI | 是 |
是 |
是 |
无 |
光纤通道 |
是 |
是 |
是 |
无 |
本地磁盘 |
是 |
是 |
是 |
是 |
高可用 |
是 |
是(原生) |
是 |
无 |
本地磁盘快照 |
是 |
是 |
是 |
无 |
用本地盘作为数据磁盘 |
否 |
否 |
否 |
无 |
工作负载均衡 |
否 |
DRS-分布式资源调度 |
否 |
无 |
手工在主机之间进行虚拟机的热迁移 |
是 |
是 |
是 |
无 |
使用本地链路与虚拟路由器(VR)直接通讯来保护管理网络的IP流量 |
是 |
否 |
是 |
无 |
最佳实践¶
部署云计算服务是一项挑战。这需要在很多不同的技术之间做出选择,CLOUDSTACK以其配置灵活性可以使用很多种方法将不同的技术进行整合和配置。这个章节包含了一些在云计算部署中的建议及需求。
这些内容应该被视为建议而不是绝对性的。然而,我们鼓励想要部署云计算的朋友们,除了这些建议内容之外,最好从CLOUDSTACK的项目邮件列表中获取更多建议指南性内容。
实施最佳实践¶
强烈建议在系统部署至生产环境之前,有一个完全模拟生产环境的集成系统。对于已经在CloudStack中做了自定义修改的系统来说,更为重要了。
应该为安装,学习和测试系统预留充足的时间。简单网络模式的安装可以在几个小时内完成。但首次尝试安装高级网络模式通常需要花费几天的时间,完全安装则需要更长的时间。正式生产环境上线前,通常需要4-8周用以排除集成过程中的问题,你也可从cloudstack-users的邮件列表里得到更多帮助。
最佳实践安装¶
每一个主机都应该配置为只接受已知设备的连接,如CLOUDSTACK管理节点或相关的网络监控软件。
如果需要达到一定的高密度,可以在每个机柜提供点里部署多个集群。
主存储的挂载点或是LUN不应超过6TB大小。每个集群中使用多个小一些的主存储比只用一个超大主存储的效果要好。
在主存储上输出共享数据时,可用限制访问IP地址的方法避免数据丢失。更多详情,可参考”Linux NFS on Local Disks and DAS” “Linux NFS on iSCSI”这些章节。
网卡绑定技术可以明显的增加系统的可靠性。
当有大量服务器支持相当多的虚拟机时,推荐在存储访问的网络上采用将10G的带宽。
主机可创建的虚拟机的能力,主要取决于提供给客户虚拟机的内存。因为主机的存储和CPU均可超配,但内存却基本不可以。所以内存是在系统容量设计时的主要限制因素。
(XenServer)可以为Xenserver的dom0分配更多的内存来让其支持更多的虚拟机。我们推荐为dom0设置的内存数值为2940 MB。至于具体操作,可以参见如下URL:http://support.citrix.com/article/CTX126531。这篇文章可同时适用于XenServer 5.6和6.0版本。
维护最佳实践¶
监视主机的磁盘空间。很多主机故障的原因都是日志将主机的硬盘空间占满导致的。
要监控每个集群里的虚拟机总量,如果达到了hypervisor所能承受的最大虚拟机数量时,就要禁止向此集群分配虚机。并且,要确定预留一定的安全迁移容量,以防止群集中有主机故障,这将增大其他主机运行虚拟机压力,就像是重新部署一批虚拟机一样。咨询你选择 hypervisor的文档,找到每台主机所能支持的最大虚拟机数量,并将此数值作为默认限制配置在CLOUDSTACK的全局设置里。监控每个群集中虚拟机的活动,保持虚拟机数量在安全线内,以防止偶然的主机故障。例如:如果集群里有N个主机,如果要让集群中一主机在任意时间停机,那么,此集群最多允许的虚拟机数量值为:(N-1) * (每宿主机最大虚拟量数量限值)。一旦达到此数量,必须在CLOUDSTACK的UI里禁止向此群集增加新的虚拟机。
警告
不及时更新相关系统补丁可能会导致虚拟机数据损失或消失。
必须保证应用了hypervisor提供商提供的所有补丁。通过提供商提供的渠道,随时追踪hypervisor开发商的补丁发布情况,并且在有最新补丁发布之后,第一时间进行更新。CLOUDSTACK并不会提醒你hypervisor开发商的系统补丁更新情况。保持hypervisor的补丁更新是很重要的。hypervisor开发商也可能会拒绝为没有更新补丁的系统提供支持。
快速安装指南¶
基于CentOS的快速安装指南¶
概述¶
我们真正要构建什么?¶
构建基础架构即服务(IaaS)云是一个很复杂的工作,它定义了过多的选项,甚至新接触云平台的管理员都很容易混乱。此篇操作手册的目的就是为减少安装CloudStack时所发生的问题并提供最直接的帮助。
整体过程概述¶
This runbook will focus on building a CloudStack cloud using KVM with CentOS 6.5 with NFS storage on a flat layer-2 network utilizing layer-3 network isolation (aka Security Groups), and doing it all on a single piece of hardware.
KVM或Kernel-based Virtual Machine是一种基于LInux内核的虚拟化技术。KVM支持本地虚拟化,主机的CPU处理器需支持硬件虚拟化扩展。
安全组起到类似分布式防火墙的作用,它可以对一组虚拟机进行访问控制。
先决条件¶
完成此操作手册你需要如下条件:
- At least one computer which supports and has enabled hardware virtualization.
- The CentOS 6.5 x86_64 minimal install CD
一个C类(/24)网络,网关为 xxx.xxx.xxx.1,网络中不能存在DHCP服务器,所有运行Cloudstack的主机需使用静态IP地址。
环境¶
首先,需要先准备要Cloudstack的安装环境,以下将详细描述准备步骤。
操作系统¶
Using the CentOS 6.5 x86_64 minimal install ISO, you’ll need to install CentOS on your hardware. The defaults will generally be acceptable for this installation.
当安装完成后,需要以root身份通过SSH连接新安装的主机,注意不要以root账户登录生产环境,请在完成安装和配置后关闭远程登录。
网络配置¶
默认情况下新安装的机器并未启用网络,您需要根据实际环境进行配置。由于网络中不存在DHCP服务器,您需要手工配置网络接口。为了实现快速简化安装的目标,这里假定主机上只有eth0一个网络接口。
使用root用户登录本地控制台。检查文件 /etc/sysconfig/network-scripts/ifcfg-eth0,默认情况,其内容如下所示:
DEVICE="eth0"
HWADDR="52:54:00:B9:A6:C0"
NM_CONTROLLED="yes"
ONBOOT="no"
但是根据以上配置您无法连接到网络,对于Cloudstack也同样不适合;您需修改配置文件,指定IP地址,网络掩码等信息,如下例所示:
注解
注意,不要在你的配置中使用示例中的Hardware地址(也叫MAC地址)。该地址为网络接口所特有的,请保留你配置文件中已经提供的HWADDR字段。
DEVICE=eth0
HWADDR=52:54:00:B9:A6:C0
NM_CONTROLLED=no
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.16.10.2
NETMASK=255.255.255.0
GATEWAY=172.16.10.1
DNS1=8.8.8.8
DNS2=8.8.4.4
注解
IP Addressing - Throughout this document we are assuming that you will have a /24 network for your CloudStack implementation. This can be any RFC 1918 network. However, we are assuming that you will match the machine address that we are using. Thus we may use 172.16.10.2 and because you might be using the 192.168.55.0/24 network you would use 192.168.55.2
配置文件准备完毕后,需要运行命令启动网络。
# chkconfig network on
# service network start
主机名¶
Cloudstack要求正确设置主机名,如果安装时您接受了默认选项,主机名为localhost.localdomain,输入如下命令可以进行验证
# hostname --fqdn
在此处将返回:
localhost
为了纠正这个问题,需设置主机名,通过编辑/etc/hosts 文件,将其更改为类似如下内容:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.10.2 srvr1.cloud.priv
更改配置文件后,重启网络服务:
# service network restart
通过hostname –fqdn命令重新检查主机名,并确认返回了正确的FQDN
SELinux¶
当前的CloudStack需要将SELinux设置为permissive才能正常工作,您需要改变当前配置,同时将该配置持久化,使其在主机重启后仍然生效。
在系统运行状态下将SELinux配置为permissive需执行如下命令:
# setenforce 0
为确保其持久生效需更改配置文件/etc/selinux/config,设置为permissive,如下例所示:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
NTP¶
为了同步云平台中主机的时间,需要配置NTP,但NTP默认没有安装。因此需要先安装NTP,然后进行配置。通过以下命令进行安装:
# yum -y install ntp
实际上默认配置项即可满足的需求,仅需启用NTP并设置为开机启动,如下所示:
# chkconfig ntpd on
# service ntpd start
配置ClouStack软件库¶
配置主机使用CloudStack软件库。
注解
Apache CloudStack官方发布源代码。因此没有可用的“官方”安装文件。完整的安装指南介绍了如何获取源代码,以及制作RPM包和yum软件库。本指南尽可能简化这些操作,所以直接使用社区提供的yum软件库。
添加CloudStack软件仓库,创建/etc/yum.repos.d/cloudstack.repo文件,并添加如下信息。
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.3/
enabled=1
gpgcheck=0
NFS¶
本文档将配置的环境使用NFS做为主存储和辅助存储,需配置两个NFS共享目录,在此之前需先安装nfs-utils:
# yum -y install nfs-utils
接下来需配置NFS提供两个不同的挂载点。通过编辑/etc/exports文件即可简单实现。确保这个文件中包含下面内容:
/secondary *(rw,async,no_root_squash)
/primary *(rw,async,no_root_squash)
注意配置文件中指定了系统中两个并不存在的目录,下面需要创建这些目录并设置合适的权限,对应的命令如下所示:
# mkdir /primary
# mkdir /secondary
CentOS 6.x 版本默认使用NFSv4,NFSv4要求所有客户端的域设置匹配,这里以设置cloud.priv为例,请确保文件/etc/idmapd.conf中的域设置没有被注释掉,并设置为以下内容:
在/etc/sysconfig/nfs文件中取消如下选项的注释:
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
接下来还需配置防火墙策略,允许NFS客户端访问。编辑文件/etc/sysconfig/iptables
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 172.16.10.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT
通过以下命令重新启动iptables服务:
# service iptables restart
最后需要配置NFS服务为开机自启动,执行如下命令:
# service rpcbind start
# service nfs start
# chkconfig rpcbind on
# chkconfig nfs on
管理服务器安装¶
接下来进行CloudStack管理节点和相关工具的安装。
数据库安装和配置¶
首先安装MySQL,并对它进行配置,以确保CloudStack运行正常。
运行如下命令安装:
# yum -y install mysql-server
MySQL安装完成后,需更改其配置文件/etc/my.cnf。在[mysqld]下添加下列参数:
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
正确配置MySQL后,启动它并配置为开机自启动:
# service mysqld start
# chkconfig mysqld on
安装¶
现在将要开始安装管理服务器。执行以下命令:
# yum -y install cloudstack-management
在程序执行完毕后,需初始化数据库,通过如下命令和选项完成:
# cloudstack-setup-databases cloud:password@localhost --deploy-as=root
当该过程结束后,您应该可以看到类似信息:”CloudStack has successfully initialized the database.”。
数据库创建后,最后一步是配置管理服务器,执行如下命令:
# cloudstack-setup-management
上传系统模板¶
CloudStack通过一系列系统虚拟机提供功能,如访问虚拟机控制台,如提供各类网络服务,以及管理辅助存储的中的各类资源。该步骤会获取系统虚拟机模板,用于云平台引导后系统虚拟机的部署。
然后需要下载系统虚拟机模板,并把这些模板部署于刚才创建的辅助存储中;管理服务器包含一个脚本可以正确的操作这些系统虚拟机模板:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /secondary -u http://download.cloud.com/templates/4.3/systemvm64template-2014-01-14-master-kvm.qcow2.bz2 -h kvm -F
以上是管理服务器的安装和配置过程;在配置CloudStack之前,仍需配置hypervisor。
KVM配置和安装¶
本文档使用KVM作为hypervisor,下文将回顾最如何配置hypervisor主机,其中大部分配置工作已在配置管理节点时完成;接下来描述如何安装agent。您可以应用相同的步骤添加额外的KVM节点到CloudStack环境中。
先决条件¶
本文档描述的环境使用管理服务器同时作为计算节点,这意味着很多先决步骤已经在搭建管理服务器时完成;但为了清晰起见,仍然列出相关步骤:
你不需要在管理节点上执行这些操作,当然,如果您需要添加额外的主机以上步骤仍然需要执行。
配置KVM¶
KVM中我们有两部分需要进行配置, libvirt和QEMU.
配置Libvirt¶
CloudStack使用libvirt管理虚拟机。因此正确的配置libvirt至关重要。Libvirt属于cloudstack-agent的依赖组件,应提前安装好。
为了实现动态迁移,libvirt需要监听使用非加密的TCP连接。还需要关闭libvirts尝试使用组播DNS进行广播。这些都是在 /etc/libvirt/libvirtd.conf文件中进行配置。
设置下列参数:
listen_tls = 0 listen_tcp = 1 tcp_port = "16059" auth_tcp = "none" mdns_adv = 0
仅仅在libvirtd.conf中启用”listen_tcp”还不够,我们还必须修改/etc/sysconfig/libvirtd中的参数:
取消如下行的注释:
#LIBVIRTD_ARGS="--listen"
重启libvirt服务
# service libvirtd restart
KVM配置完成¶
- For the sake of completeness you should check if KVM is running OK on your machine:
# lsmod | grep kvm kvm_intel 55496 0 kvm 337772 1 kvm_intel
以上内容是针对KVM的安装和配置,下面将介绍如何使用CloudStack用户界面配置云平台。
配置¶
如上文所述,该手册所描述的环境将使用安全组提供网络隔离,这意味着您的安装环境仅需要一个扁平的二层网络,同样意味着较为简单的配置和快速的安装。
访问用户界面¶
要访问CloudStack的WEB界面,仅需在浏览器访问 http://172.16.10.2:8080/client ,使用默认用户’admin’和密码’password’来登录。第一次登录可以看到欢迎界面,提供两个选项设置CloudStack。请选择继续执行基本配置安装。
此时您会看到提示,要求为admin用户更改密码,请更新密码后继续。
配置区域¶
区域是Cloudstack中最大的组织单位,下面将要讲述如何创建,此时屏幕中显示的是区域添加页面,这里需要您提供5部分信。
名称 - 提供描述性的名称,这里以”Zone1”为例
公共DNS1 - 我们输入8.8.8.8。
公共DNS 2 - 我们输入8.8.4.4。
内部DNS 1 - 我们同样输入8.8.8.8。
内部DNS 2 - 我们同样输入8.8.4.4。
注解
CloudStack分为内部和公共DNS。内部DNS只负责解析内部主机名,比如NFS服务器的DNS名称。公共DNS为虚拟机提供公共IP地址解析。你可以指定同一个DNS服务器,但如果这样做,你必须确保内部和公共IP地址都能路由到该DNS服务器。在我们的案例中对内部资源不使用DNS名称,因此这里将其设置为与外部DNS一致用以简化安装,从而不必为此再安装一台DNS服务器。
配置提供点¶
到这里我们已经添加了一个区域,下一步会显示添加提供点所需信息:
提供点名称 - 使用Pod1
网关 - 使用172.16.10.1作为网关
子网掩码 - 使用255.255.255.0
系统预留 起始/结束 IP - 使用172.16.10.10-172.16.10.20
来宾网络网关 - 使用172.16.10.1
来宾网络掩码 - 使用255.255.255.0
来宾网络 起始/结束IP - 使用172.16.10.30-172.16.10.200
群集¶
添加区域后,仅需再为配置群集提供如下信息。
群集名称 - 使用Cluster1
Hypervisor - 选择KVM
此时向导会提示您为集群添加第一台主机,需提供如下信息:
主机名 - 由于没有设置DNS服务器,所以这里输入主机IP地址 172.16.10.2。
用户名 - 我们使用root
密码 - 输入root用户的密码
主存储¶
在配置群集时,按提示输入主存储的信息。选择NFS作为存储类型,并在如下区域中输入相应的值:
名称 - 使用 ‘Primary1’
服务器 - 使用的IP地址为 172.16.10.2
路径 - 使用之前定义的 /primary
辅助存储¶
如果添加的是一个新的区域,您需提供辅助存储相关信息 - 如下所示:
NFS服务器 - 使用的IP地址为 172.16.10.2
路径 - 输入 /secondary
现在,点击启动开始配置云-完成安装所需的时间取决于你的网络速度。
到这里,你的Apache CloudStack云就已经安装完成了。
常规安装¶
安装¶
谁应该读本文¶
如果您已经完成设计阶段,计划部署一个复杂的云,或是准备对用基础安装向导搭建的试验云进行扩展,请选择此项。在后续过程中,您可以使用CloudStack中更强大的功能,例如高级VLAN网络、高可用、负载均衡器和防火墙等额外网络设备,以及支持Citrix XenServer、KVM、VMware vSphere等多种虚拟化平台。
最低系统需求¶
管理服务器,数据库和存储系统需求。¶
运行管理服务器和mysql数据库的机器必须满足以下要求。主存储和辅助存储可以通过本地存储或NFS配置在一台机器上。管理服务器可以安装在虚拟机中。
操作系统:
推荐:CentOS/RHEL 6.3+ 或 Ubuntu 12.04(.1)
64位 x86架构CPU(多核CPU性能更佳)
4GB 内存
250GB本地硬盘 (更大的容量性能更佳;推荐500GB)
至少1块网卡
静态分配的IP地址
使用hostname命令能返回的完全合格的域名
主机/Hypervisor系统需求¶
主机是以虚拟机形式运行云服务。每台主机需满足如下要求:
必须支持HVM(启用Intel-VT或AMD-V)。
64位 x86架构CPU(多核CPU性能更佳)
硬件虚拟化支持
4GB 内存
36GB本地磁盘空间
至少1块网卡
注解
如果主机使用DHCP,请确保这些主机使用的DHCP服务和CloudStack创建的虚拟路由器提供的DHCP服务不冲突。
虚拟机软件需打好最新的补丁
当部署CloudStack时,hypervisor主机不能有任何已在运行的虚拟机。
集群中的主机必须是同构的。CPU的型号、数量和功能参数必须相同。
根据所使用虚拟化软件的不同主机可能有另外的需求。详情请查看你所选用虚拟化软件安装部分的需求清单
警告
如果你按照本指南的步骤并确定你满足了所选用虚拟机软件的 要求。宿主机应该就可以在CloudStack中正常工作了。比如XenServer的要求列表在Citrix XenServer安装部分。
配置包仓库¶
CloudStack是唯一一种源自官方镜像源文件的分布式平台。尽管如此,CloudStack社区的成语可以构建便捷的二进制代码,使用户能够在无需构建源代码的情况下安装Apache CloudStack。
如果你不能按照步骤使用源码构建你自己的包 “从源码编译RPM包” 或 “编译DEB包” 你会发现预先构建的DEB和RPM包在 下载 页面.
注解
该仓库同时包含管理服务器和KVM Hypervisor的包
DEB包库¶
你可以按照以下指令在你的apt源中增加DEB包库。请注意只有来自 Ubuntu 12.04 LTS (precise)的包可以在此时构建。
用你准备好的编辑器打开(或创建) /etc/apt/sources.list.d/cloudstack.list
.将社区提供的仓库添加到该文件:
$ deb http://cloudstack.apt-get.eu/ubuntu precise 4.3
我们现在必须添加公钥并信任密钥。
$ wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -
现在升级本地的apt缓存
$ apt-get update
你的DEB包库现在将被配置并准备使用。
RPM 包仓库¶
这里有一个CloudStack的RPM包库,所以你可以轻易地安装在RHEL基础平台上。
如果你使用基于RPM的系统,你需要添加Yum库,以便可以用Yum安装CloudStack.
Yum库信息在``/etc/yum.repos.d``中。你可以看到一些 ``.repo``文件在这个目录中,每个都代表一个特定的仓库。
添加CloudStack库,创建 ``/etc/yum.repos.d/cloudstack.repo``并插入以下信息
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.3/
enabled=1
gpgcheck=0
现在你可以通过Yum安装CloudStack 。
管理服务器安装¶
管理服务器安装概述¶
本节介绍管理服务器的安装. 根据你云环境中管理服务器节点个数的不同, 安装步骤有两处稍有不同.
一个单独的管理服务器节点, MySQL也装在这个节点上.
多个管理服务器节点, MySQL装在与所有管理服务都不相同的节点上.
无论哪种方案, 所有系统的要求都要符合系统需求里的描述.
警告
出于安全的目的,确保公共网络无法访问管理服务器的8096或者8250端口。
安装管理服务器的步骤:
准备操作系统
(仅限XenServer)下载并安装vhd-util.
安装第一台管理服务器
安装并配置MySQL数据库。
准备NFS共享存储
准备并启动额外的管理服务器(可选)
准备系统虚拟机模板
准备操作系统¶
要在主机上安装管理服务器,需要按下列步骤准备操作系统. 这些步骤必须在每个要安装的管理服务器节点上执行.
以root身份登录进入系统。
检查全称域名.
hostname --fqdn
该命令会返回完整主机名,例如”management1.lab.example.org”。如果没有,请编辑 /etc/hosts。
确保机器可以连接到互联网.
ping www.cloudstack.org
启用NTP服务以确保时间同步.
注解
NTP服务用来在你的云中同步服务器时钟。
安装NTP.
yum install ntp
apt-get install openntpd
在每一个安装管理服务器的节点上重复所有这些步骤.
在第一台主机上安装管理服务器¶
安装的第一步,不论你在一台或多台主机上安装管理服务器,在单个节点上安装这些软件。
注解
If you are planning to install the Management Server on multiple nodes for high availability, do not proceed to the additional nodes yet. That step will come later.
CloudStack管理服务器可以用RMP或者DEB包来安装,这些包会依赖运行管理服务器的所有需要的东西。
在Ubuntu上安装¶
apt-get install cloudstack-management
警告
There is a known bug in the 4.3.0 release. You need to install an additional package by hand:
apt-get install libmysql-java
This bug has been fixed in master and upcoming 4.4 release and will also be fixed in bug fix releases 4.3.x
下载vhd-util¶
这个步骤仅适用于安装了XenServer的hypervisor主机。
在设置管理服务器前,下载 `vhd-util<http://download.cloud.com.s3.amazonaws.com/tools/vhd-util>`_.
如果管理服务器是RHEL或者是CentOS,复制 vhd-util到`/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver`
如果管理服务器是Ubuntu系统,复制vhd-util到`/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver`
安装数据库服务器¶
CloudStack管理服务器使用一个MySQL数据库服务来存储自身数据。当你在一个独立的节点上安装管理服务器,你可以在本地安装MySQL服务器。对于在多重节点上安装,我们假设MySQL也运行在一个已经分隔开的节点上。
CloudStack已经在MySQL 5.1和5.5上被测试过。这些平台版本包含RHEL/CentOS和Ubuntu.
在管理服务器节点上安装数据库。¶
本节将会介绍如何将MySQL与管理服务器安装在同一台机器上. 这种方法是针对只有一个管理服务器的部署. 如果你部署了多台管理服务器节点, 你最好使用单独的一个节点来部署MySQL数据库. 参阅 在单独的节点上安装数据库。.
使用你部署的软件仓库安装MySQL:.
yum install mysql-server
apt-get install mysql-server
编辑MySQL的配置文件 。根据你操作系统的不同, 文件是/etc/my.cnf 或者/etc/mysql/my.cnf.
在[mysqld]区域插入下列行。
你可以把这几行放在datadir行下. 参数max_connections应该设置为 350 乘以你部署管理服务器节点的个数. 这个示例假定你只部署了一台管理服务器.
注解
在Ubuntu上,你也可以创建 /etc/mysql/conf.d/cloudstack.cnf文件并在此添加如下目录。不要忘记在文件第一行加[mysqld]。
innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 max_connections=350 log-bin=mysql-bin binlog-format = 'ROW'
启动或者重启MySQL使新的配置生效。
在RHEL/CentOS上,MySQL在安装完后不会自动启动。手工启动它。
service mysqld start
在Ubuntu上,重启MySQL.
service mysql restart
(仅限CentOS 和 RHEL平台,对Ubuntu不作要求)
警告
在RHEL和CentOS上, MySQL默认并未设置root用户的密码. 强烈建议您设置超级用户密码作为安全预防措施。
运行以下命令进行安全配置。你可以对所有的问题回答”Y”。
mysql_secure_installation
CloudStack的会被安全机制阻止,例如SELinux。确保关闭SELinux 和 Agent具有所必需的权限。
配置SELinux(RHEL和CentOS):
检查你的机器是否安装了SELinux。如果没有,请跳过此部分。
在RHEL或者CentOS中,SELinux是默认安装并启动的。你可以使用下条命令验证:
$ rpm -qa | grep selinux
在/etc/selinux/config文件中设置变量SELINUX为“permissive”。这样能确保对SELinux的设置在系统重启之后依然生效。
在RHEL 或者CentOS平台上:
vi /etc/selinux/config
修改如下行
SELINUX=enforcing
修改为:
SELINUX=permissive
执行该命令无需系统重启就会将SELinux的运行模式设置为permissive。
$ setenforce permissive
设置数据库. 下列的命令会在数据库中创建”cloud”用户.
dbpassword,为 “cloud”的用户设置的密码。你也可以选择不设置密码,尽管并不推荐。
deploy-as, 指定安装数据库的用户名和密码. 在下面的命令中, root用户部署了数据库并创建了cloud用户.
(可选)encryption_type, 使用file或web来告知数据库通过哪种技术对密码进行加密. 默认是file. 参考 关于密码和密钥加密.
(可选)management_server_key,在CloudStack属性文件中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅: 关于密码和密钥加密.
(可选)database_key,在CloudStack数据库中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅: 关于密码和密钥加密.
(可选)management_server_ip, 你可以明确的指定群集管理服务器的IP。如果不指定,默认使用本机IP。
cloudstack-setup-databases cloud:<dbpassword>@localhost \ --deploy-as=root:<password> \ -e <encryption_type> \ -m <management_server_key> \ -k <database_key> \ -i <management_server_ip>
当脚本完成后,你将会看到类似这样的信息:”Successfully initialized the database”
注解
If the script is unable to connect to the MySQL database, check the “localhost” loopback address in
/etc/hosts
. It should be pointing to the IPv4 loopback address “127.0.0.1” and not the IPv6 loopback address::1
. Alternatively, reconfigure MySQL to bind to the IPv6 loopback interface.如果你的KVM Hypervisor和管理服务器在同一台的机器上,编辑 /etc/sudoers并添加以下行:
Defaults:cloud !requiretty
现在数据库已经设置好, 你可以完成管理服务器的设置. 这个命令将会设置iptables, sudoers并启动管理服务.
# cloudstack-setup-management
你应该看到这样的信息: “Management Server setup is done.”
在单独的节点上安装数据库。¶
This section describes how to install MySQL on a standalone machine, separate from the Management Server. This technique is intended for a deployment that includes several Management Server nodes. If you have a single-node Management Server deployment, you will typically use the same node for MySQL. See “Install the Database on the Management Server Node”.
注解
管理服务器不要求为MySQL节点指定特定的分支。你可以选择使用任何一个操作系统的分支。建议与管理服务器使用相同的分支,但不做强制要求。参阅 “管理服务器, 数据库和存储系统要求”.
使用你部署的软件仓库安装MySQL:.
yum install mysql-server
apt-get install mysql-server
编辑MySQL的配置文件 (根据你操作系统的不同, 文件为/etc/my.cnf 或者/etc/mysql/my.cnf) 并在 [mysqld] 章节插入下面几行. 你可以把这几行放在datadir行下. 参数max_connections应该设置为 350 乘以你部署管理服务器节点的个数. 这个示例假定你只部署了一台管理服务器.
注解
在Ubuntu上,你也可以创建 /etc/mysql/conf.d/cloudstack.cnf文件并在此添加如下目录。不要忘记在文件第一行加[mysqld]。
innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 max_connections=700 log-bin=mysql-bin binlog-format = 'ROW' bind-address = 0.0.0.0
启动或者重启MySQL使新的配置生效。
在RHEL/CentOS上,MySQL在安装完后不会自动启动。手工启动它。
service mysqld start
在Ubuntu上,重启MySQL.
service mysql restart
(仅限CentOS 和 RHEL平台,对Ubuntu不作要求)
警告
在RHEL 和 CentOS上,MySQL默认并未设置root用户的密码。强烈建议您设置超级用户密码作为安全预防措施。运行以下命令进行安全配置。你可以对所有问题回答”Y”, “Disallow root login remotely?”问题除外。设置数据库需要root远程登录。
mysql_secure_installation
如果系统中存在防火墙,打开TCP的3306端口用于建立MySQL连接。
在Ubuntu上,默认防火墙是UFW。用以下命令打开端口:
ufw allow mysql
在RHEL/CentOS上:
编辑/etc/sysconfig/iptables文件并在INPUT链中添加下列行。
-A INPUT -p tcp --dport 3306 -j ACCEPT
现在重新加载iptables规则。
service iptables restart
返回到第一个管理服务器root用户的shell中。
设置数据库。按照如下命令在数据库中创建cloud用户。
dbpassword,为 “cloud”的用户设置的密码。你也可以选择不设置密码。
deploy-as, 指定安装数据库的用户名和密码. 在下面的命令中, root用户部署了数据库并创建了cloud用户.
(可选)encryption_type, 使用file或web来告知数据库通过哪种技术对密码进行加密. 默认是file. 参考 关于密码和密钥加密.
(可选)management_server_key,在CloudStack属性文件中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅关于密码和密钥加密。
(可选)database_key,在CloudStack数据库中使用加密的机密参数替代默认密码。默认为:password。强烈推荐您使用更安全的值替代它。参阅: 关于密码和密钥加密.
(可选)management_server_ip, 你可以明确的指定群集管理服务器的IP。如果不指定,默认使用本机IP。
cloudstack-setup-databases cloud:<dbpassword>@<ip address mysql server> \ --deploy-as=root:<password> \ -e <encryption_type> \ -m <management_server_key> \ -k <database_key> \ -i <management_server_ip>
当脚本完成后,你将会看到类似这样的信息:”Successfully initialized the database”
关于密码和密钥加密¶
CloudStack存储一些敏感密码和密钥用于提供安全保证。这些值总是自动被加密。
数据库密钥
数据库密码
SSH密钥
计算节点root密码
VPN密码
用户API密钥
VNC密码
CloudStack使用java简单的加密库(JASYPT)。数据值加密和解密通过使用一个存储在一个CloudStack带有数据库密码的内部属性文件中的密钥。上述列出的其他加密的值,例如SSH密钥,也在CloudStack内部数据库中。
当然,数据库密钥本身不是公开存储的-它必须被加密。那么,CloudStack如何阅读它呢?从外部源启动管理服务时必须提供第二个密钥。这个密钥可以提供两种方式中的一种:从文件加载或者由CloudStack的管理员提供。CloudStack数据库中都有一个配置设置使它知道这些方法将被调用。如果加密类型设置为 “file,” 密钥 必须存在于文件的已知位置中。如果加密类型设置为 “web,” 管理员运行 com.cloud.utils.crypt.EncryptionSecretKeySender工具,which relays the key to the Management Server over a known port.
加密类型,数据库密钥和管理服务器密钥在CloudStack初始化的过程中设置。它们全部是CloudStack数据库设置脚本的参数(cloud-setup-databases).默认值是file,password和password。当然,强烈建议你修改这些密钥。
更改默认密码加密¶
创建或更新用户密码会被加密。CloudStack允许你定义管理员和用户登录的默认密码和授权机制。这两种配置列表都已经介绍过了—userPasswordEncoders 和 userAuthenticators。userPasswordEncoders允许你配置优先顺序进行密码编码,而userAuthenticators允许你配置的调用身份验证方案来验证用户密码。
此外,纯文本的用户认证方已经修改为:在检查数据库记录之前,不对获取的密码进行md5值校验。仅对提供的登录密码执行检索。 由于客户端不再对密码进行散列(hash),所以不再对比存储的密码散列值和获取的密码的哈希值。下面的方法决定用于用户创建或修改过程中提供的密码进行编码时使用什么编码方案。
在创建新用户时,用户密码是按照``ComponentContext.xml`` 或 nonossComponentContext.xml
文件中 UserPasswordEncoders
属性中指定的顺序对有效的编码器进行编码。该文件中的 UserAuthenticators
属性也指定了认证方案的顺序。如果使用了Non-OSS(非开源软件)组件,例如要部署VMware环境,修改 nonossComponentContext.xml
文件中的 UserPasswordEncoders
和 UserAuthenticators
列表。针对OSS(开源软件),例如XenServer和KVM,则修改 ComponentContext.xml
文件。建议对这两个文件做统一的修改。当添加新的认证器和解释器时,你可以添加至该列表。做的过程中,确保已经在这些文件中指定认证器和解释器。管理员可以更改这两个属性的排序和计划作为首选的排列顺序。如果适用的话,在 client/tomcatconf/nonossComponentContext.xml.in
或 client/tomcatconf/componentContext.xml.in
文件中修改下面的列表中可用的属性的顺序:
<property name="UserAuthenticators">
<list>
<ref bean="SHA256SaltedUserAuthenticator"/>
<ref bean="MD5UserAuthenticator"/>
<ref bean="LDAPUserAuthenticator"/>
<ref bean="PlainTextUserAuthenticator"/>
</list>
</property>
<property name="UserPasswordEncoders">
<list>
<ref bean="SHA256SaltedUserAuthenticator"/>
<ref bean="MD5UserAuthenticator"/>
<ref bean="LDAPUserAuthenticator"/>
<ref bean="PlainTextUserAuthenticator"/>
</list>
</property>
在上述排序中,SHA256Salt首次使用 UserPasswordEncoders
.如果这个模块已经找到并且编码后返回一个有效值,编码密码存储在用户表密码列中。如果因某些原因失败,接下来将尝试MD5UserAuthenticator,并按照规定继续。对于 UserAuthenticators
, SHA256Salt授权首先被使用。如果成功,用户将登陆进入管理服务器。如果失败,下一步将尝试md5,并继续尝试直到成功。如果他们没起作用,用户将返回一个无效的确认信息。
准备和启动额外的管理服务器。¶
在你的次级以及以后的管理服务器上,你将安装管理服务器软件,连接到数据库,并启动管理服务器的操作系统。
执行这些步骤 “准备操作系统” 和 “从源码编译RPM包” 或 “编译DEB包” 视情况而定.
这个步骤仅适用于安装了XenServer的hypervisor主机。
下载 vhd-util
复制vhd-util到/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver目录下。
确保必要的服务已经启动并设置为开机启动。
# service rpcbind start # service nfs start # chkconfig nfs on # chkconfig rpcbind on
配置数据库客户端。注意不使用 –deploy-as 参数在这种情况下。 (关于该命令参数更详细的信息, 参阅 在单独的节点上安装数据库。.)
# cloudstack-setup-databases cloud:dbpassword@dbhost -e encryption_type -m management_server_key -k database_key -i management_server_ip
配置操作系统,并启动管理服务:
# cloudstack-setup-management
管理服务应该运行在这个节点上。
在每个额外的管理服务器上重复这些步骤。
确保为管理服务器配置负载均衡。参阅: “管理服务器负载均衡”.
准备系统虚拟机模板¶
辅助存储必须应用一个使用于生成CloudStack中虚拟机系统的模板。
注解
当复制粘贴一个命令时,确保这个命令在执行前作为一个独立的行被粘贴。一些文档可能会引入不必要的文本换行。
在管理服务器上,运行一个或多个cloud-install-sys-tmplt命令检索和解压系统虚拟机模版。运行这个命令在每个你希望最终用户在这个区域中运行的hypervisor类型。
如果辅助存储挂点不是 /mnt/secondary,替换你自己的挂载点名称。
如果在设置数据库时,配置CloudStack数据库加密类型是”web”,你现在必须添加参数-s <management-server-secret-key>。参阅 关于密码和密钥加密。
这个过程每次运行30分钟,运行时要求本地文件系统剩余大约5GB的空间。
对于Hyper-V:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/4.3/systemvm64template-2014-06-23-master-hyperv.vhd.bz2 -h hyperv -s <optional-management-server-secret-key> -F
对于XenServer:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/4.3/systemvm64template-2014-06-23-master-xen.vhd.bz2 -h xenserver -s <optional-management-server-secret-key> -F
对于vSphere:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/4.3/systemvm64template-2014-06-23-master-vmware.ova -h vmware -s <optional-management-server-secret-key> -F
对于KVM:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/4.3/systemvm64template-2014-06-23-master-kvm.qcow2.bz2 -h kvm -s <optional-management-server-secret-key> -F
对于LXC:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/4.3/systemvm64template-2014-06-23-master-kvm.qcow2.bz2 -h lxc -s <optional-management-server-secret-key> -F
在Ubuntu上,使用如下路径:
# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt
如果你使用独立的NFS服务器,执行这一步骤。如果你使用管理服务器作为NFS服务器,你必须确保不执行这一步骤。
当脚本完成后,卸载辅助存储并移除创建的目录。
# umount /mnt/secondary # rmdir /mnt/secondary
在每个辅助存储服务器上重述如下步骤。
安装完成!下一步¶
恭喜!你现在已经安装好了CloudStack管理服务器和用于持久化系统数据的数据库。
下面你将做什么?
即使没有增加任何云的基础设施,你可以运行登陆界面感受其提供的内容并与CloudStack进行持续的交互。参见登陆用户界面
当你已经准备好了,添加云基础架构和尝试运行一些虚拟机,你将会观察到CloudStack如何管理基础设施。参阅:提供你的云基础设置
源码安装¶
从源码编译¶
CloudStack官方总是以源代码形式发布。你可以找到 “方便的二进制文件”, 这些源都是规范的发布版本。在本节将包括获取和编译发行版源代码,使用Maven、创建Debian或rpm软件包来进行部署。
请注意,直接从源代码构建和部署一个IaaS通常不是最有效的方式。然而,我们仍将介绍这种方法,就像构建RPMs或Debian软件包来部署CloudStack一样。
本节中的指令仅限定于特定的版本。也就是说,从源码编译4.0.x系列和4.1.x系列的方法是不同的。
如果你正在使用一个非发行版的CloudStack,请查阅该版本主目录下的INSTALL.md文件。
获得发行版¶
下载CloudStack最新发行版,可以在 Apache CloudStack 项目下载页面:.
之前的版本同样可以通过archive.apache.org获得。请参阅下载页面上的存档版本的更多信息。
你会注意到在’最新发行版’下方有几个链接。一个链接以 tar.bz2
文件结尾,以及PGP/GPG签名,MD5和ShA512文件。
tar.bz2
文件包含使用Bzip2压缩的源代码。- The
.asc
file is a detached cryptographic signature that can be used to help verify the authenticity of the release. - The
.md5
file is an MD5 hash of the release to aid in verify the validity of the release download. - The
.sha
file is a SHA512 hash of the release to aid in verify the validity of the release download.
验证下载的版本¶
有很多机制可以检查下载的发行版的真实性和有效性。
GPG¶
CloudStack项目提供了发行版的分离GPG签名。运行如下命令检查签名:
$ gpg --verify apache-cloudstack-4.3.0-src.tar.bz2.asc
如果签名是有效的,你会看到一行包含“Good signature”的信息。
MD5¶
除了加密签名,CloudStack还提供了MD5校验和,用于验证下载的发行版。您可以通过执行下面的命令验证这个哈希值:
$ gpg --print-md MD5 apache-cloudstack-4.3.0-src.tar.bz2 | diff - apache-cloudstack-4.3.0-src.tar.bz2.md5
如果成功完成,你应该看不到任何输出。如果有任何输出,则说明你本地生成的哈希值与服务器上获取的是不同的。
SHA512¶
除了MD5校验和,CloudStack还提供了SHA512加密哈希,用于验证下载的发行版。您可以通过执行下面的命令验证这个哈希值:
$ gpg --print-md SHA512 apache-cloudstack-4.3.0-src.tar.bz2 | diff - apache-cloudstack-4.3.0-src.tar.bz2.sha
如果命令成功完成,你应该看不到任何输出。如果有任何输出,则说明你本地生成的哈希值与服务器上获取的不同。
编译Apache CloudStack的先决条件¶
编译CloudStack所需的先决条件很多,本文假定在Linux系统上编译,使用RPMs或DEBs包管理。
如下是编译CloudStack的最低需求:
Maven (版本 3)
Java (OpenJDK 1.6 或 Java 7/OpenJDK 1.7)
Apache网页服务器常用工具(ws-commons-util)
- MySQL
MySQLdb (提供python数据库API)
Tomcat 6 (非 6.0.35)
- genisoimage
rpmbuild 或 dpkg-dev
提取的源代码¶
提取CloudStack发行版源代码相对简单,使用如下命令:
$ tar -jxvf apache-cloudstack-4.3.0-src.tar.bz2
你现在可以进入该目录:
$ cd ./apache-cloudstack-4.3.0-src
编译DEB包¶
除了引导依赖项,还需要安装几个其他的依赖包。请注意,我们推荐使用的Maven 3,在Ubuntu 12.04.1 LTS目前不支持。所以,还需要添加一个包含Maven 3 的PPA库。运行命令“add-apt-repository”,系统将提示您继续添加GPG密钥后继续。
$ sudo apt-get update
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:natecarlson/maven3
$ sudo apt-get update
$ sudo apt-get install ant debhelper openjdk-6-jdk tomcat6 libws-commons-util-java genisoimage python-mysqldb libcommons-codec-java libcommons-httpclient-java liblog4j1.2-java maven3
虽然我们做了一些定义,并且可能已经安装了引导的前提条件,但仍有一些在编译时需要解决的先决条件。CloudStack使用Maven进行依赖性解析。您可以通过运行以下命令,来解决编译CloudStack时的依赖性:
$ mvn3 -P deps
现在我们已经解决了依赖关系,可以使用如下命令编译CloudStack和创建DEB包:
$ dpkg-buildpackage -uc -us
该命令将创建如下debian软件包。应该有如下这些内容:
cloudstack-common-4.3.0.amd64.deb
cloudstack-management-4.3.0.amd64.deb
cloudstack-agent-4.3.0.amd64.deb
cloudstack-usage-4.3.0.amd64.deb
cloudstack-awsapi-4.3.0.amd64.deb
cloudstack-cli-4.3.0.amd64.deb
cloudstack-docs-4.3.0.amd64.deb
设置APT仓库¶
软件包创建完成后,你需要将软件包拷贝至可以提供HTTP服务的系统上。创建用于存放软件包的目录,并使用 dpkg-scanpackages
命令创建包含归档结构信息的 Packages.gz
文件。在系统中添加这个仓库源,最后使用该APT安装软件包。
第一步是确保你已经安装了 dpkg-dev 软件。一般在使用 debhelper 程序之前就已经安装了。如果你是在其他系统中生成的 Packages.gz
文件,请确保它已经被安装。
$ sudo apt-get install dpkg-dev
下一步是将DEB文件复制到提供HTTP服务的目录中。在示例中,我们使用 ``/var/www/cloudstack/repo``作为示例 ,你也可以更改为更适合你的目录。
sudo mkdir -p /var/www/cloudstack/repo/binary
sudo cp *.deb /var/www/cloudstack/repo/binary
sudo cd /var/www/cloudstack/repo/binary
sudo dpkg-scanpackages . /dev/null | tee Packages | gzip -9 > Packages.gz
注解
你可以忽略缺少覆盖文件的警告信息。
现在你应该可以通过HTTP访问 binary
目录中所有的DEB安装包和 Packages.gz
文件。(在进行下一步前,你需要使用 wget
或 curl
命令测试。)
配置使用APT仓库源的主机¶
现在,我们已经创建了仓库,然后配置你的服务器来使用APT仓库源。你可以在 /etc/apt/sources.list.d
目录中添加仓库文件。使用你喜欢的编辑器来创建``/etc/apt/sources.list.d/cloudstack.list`` 文件并加入类似如下信息:
deb http://server.url/cloudstack/repo binary ./
现在,您已经准备好软件仓库,然后更新以下,使得APT知道从哪里找到CloudStack的软件包。
$ sudo apt-get update
现在可以翻到在Ubuntu上安装CloudStack的一章去了。
从源码编译RPM包¶
正如先前 `“编译Apache CloudStack的先决条件 <#prerequisites-for-building-apache-cloudstack>`_所说,在编译CloudStack之前需要安装一些先决条件。这里假设你使用的是64位的CentOS或Red Hat Enterprise Linux.
# yum groupinstall "Development Tools"
# yum install java-1.6.0-openjdk-devel.x86_64 genisoimage mysql mysql-server ws-commons-util MySQL-python tomcat6 createrepo
接下来,你将需要安装编译CloudStack时依赖的Maven。 使用 Maven 3, 所以你需要 提取 Maven 3 压缩包 并解压到你的主目录 (或任何你喜欢的目录):
$ tar zxvf apache-maven-3.0.4-bin.tar.gz
$ export PATH=/usr/local/apache-maven-3.0.4/bin:$PATH
Maven还需要知道Java程序路径,和JAVA_HOME环境变量输出的设置:
$ export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/
验证Maven是否被正确安装:
$ mvn --version
如果想确保环境变量将在注销或重启后仍保留。一定要更新 ~/.bashrc
中的PATH和JAVA_HOME 变量。
编译CloudStack的RPM包相当简单。假设你已经下载了源码并解压压缩文件到一个本地目录中,你可以在几分钟之内完成编译。
注解
打包方式的变化。如果你之前创建过CloudStack软件包,你会意识到自从该项目开始使用Apache Maven,这个步骤发生了很大变化。请一定要密切关注本节中的步骤。
生成RPM包¶
现在我们已经满足先决条件和源码,然后进入 packaging/centos63/ 目录。
$ cd packaging/centos63
使用 package.sh
脚本生成RPM包:
$./package.sh
这会需要一些时间,生成的软件包会在 dist/rpmbuild/RPMS/x86_64/
目录中。
你应该看到目录中的RPM包:
cloudstack-agent-4.3.0.el6.x86_64.rpm
cloudstack-awsapi-4.3.0.el6.x86_64.rpm
cloudstack-cli-4.3.0.el6.x86_64.rpm
cloudstack-common-4.3.0.el6.x86_64.rpm
cloudstack-docs-4.3.0.el6.x86_64.rpm
cloudstack-management-4.3.0.el6.x86_64.rpm
cloudstack-usage-4.3.0.el6.x86_64.rpm
创建yum仓库¶
RPMs是一个有用的包装格式 - 通过网络上YUM仓库来使用是非常简单的。下一步是使用这些软件包创建YUM仓库:
$ mkdir -p ~/tmp/repo
$ cp dist/rpmbuild/RPMS/x86_64/*rpm ~/tmp/repo/
$ createrepo ~/tmp/repo
~/tmp/repo
中的文件和目录现在可以上传到WEB服务器中作为YUM仓库。
配置你的系统使用新的yum仓库¶
现在你的yum仓库中拥有了RPM包和元数据,我们为需要安装CloudStack的机器创建一个名为``/etc/yum.repos.d/cloudstack.repo``的文件,内容如下:
[apache-cloudstack]
name=Apache CloudStack
baseurl=http://webserver.tld/path/to/repo
enabled=1
gpgcheck=0
完成这一步,您可以轻松地在整个网络中的机器上安装CloudStack。
编译 Non-OSS¶
如果你需要支持VMware,NetAPP,F5,NetScaler,SRX或其他非开源软件(nonoss)插件。你需要下载一些独立的组件并遵循从源代码构建稍微不同的过程。
警告
因为许可的问题,一些CloudStack支持的插件不能与CloudStack一起发行。一些原因是,所需要的一些库或JAR文件都有专用的许可。另外一些是因为所需要第三方产品库的许可证不能与Apache的许可相兼容,见`针对第三方产品的Apache许可指南 <http://www.apache.org/legal/resolved.html#category-x>`_.
为了编译NON-OSS插件,你需要安装必要的JAR在``deps`` 目录中。
由于这些模块需要的依赖项不能和CloudStack一起发行,你需要自行下载。最新的依赖项都列在wiki页面中:*如何编译CloudStack*
你可能还需要下载`vhd-util <http://download.cloud.com.s3.amazonaws.com/tools/vhd-util>`_, 也是由于授权问题而被移除。 复制vhd-util到该目录:
scripts/vm/hypervisor/xenserver/
.一旦你复制过来所有的依赖项,你就可以开始使用
noredist
选项编译CloudStack了。
$ mvn clean
$ mvn install -Dnoredist
一旦你创建了CloudStack的
noredist
配置文件,你可以使用 “从源码编译RPM包” 或 “编译DEB包” 指令打包。
配置¶
配置CloudStack安装¶
这一章节的内容将会告诉你如何增加地域,区域,提供点,集群,主机,存储和网络。如果你不熟悉这些概念,可以参阅: *云基础设施的概念*.
安装步骤概述¶
当管理节点服务器安装结束并正常运行之后,你可以开始将计算资源池纳入其管理范围。关于CloudStack云计算系统是如何组织构架的,请参阅:“Cloud Infrastructure Overview”.
准备云基础架构,或是进行扩展时,请遵从如下步骤:
定义地域(可选),参阅 增加地域(可选)。
在地域内增加一个区域,参阅 增加一个区域。
在区域内增一个机柜提供点(可选)。参阅 添加一个机柜提供点。
在提供点内增群集(可选)。参阅 添加群集。
在群集内增加主机(可选)。参阅 添加一个宿主机。
为群集增加主存储。参阅 添加主存储。
为区域增加辅助存储。参阅 添加二级存储。
初始化并测试云计算环境。参阅 初始化及测试。
当你完成这些步骤以后, 你将部署如下的一个基本结构:
增加地域(可选)¶
在部署云的过程中将云资源按地域组织起来是是一个可选的步骤。关于地域的描述,可以参阅 “关于地域”.
第一个地域:默认地域¶
如果你没有执行任何操作来定义地域, 那么云环境中所有的资源域都会组织到一个默认的地域里. 这个地域的ID是1。当然,你可以通过CloudStack的WEB UI来编辑此默认地域的名称和URL网址。
增加一个地域¶
通过下面的步骤来添加除默认地域外的第二个地域.
每一个地域都有专属的CloudStack实例。因此,当你要部署一个新的地域时,首先要做的就是在一个或多个节点上安装管理节点服务器。在按照安装指南安装此节点的数据库时,需要在命令行上加上参数
-r <region_id>
。默认的地域的region ID为1,故而第一个新增地域的region ID应该为2.# cloudstack-setup-databases cloud:<dbpassword>@localhost --deploy-as=root:<password> -e <encryption_type> -m <management_server_key> -k <database_key> -r <region_id>
在安装过程结束后, 管理服务器应该是运行状态. 请确保管理服务器安装完成并正确运行.
现在,开始在 CloudStack内加入一个新的地域。
以系统管理员身份登陆CloudStack的第一个地域(登陆<region.1.IP.address>:8080/client)
在左边的导航栏中,点击区域(为文档翻译中地域的概念,英文为region,下同)
点击增加地域,在弹出的对话框里,输入以下字段:
ID–唯一标识号,这个ID与安装管理服务器过程中,设置数据库时的数字相同;例如ID为2。
名称–为新的地域提供一个描述性名称。
端点–可以登录到新地域中管理服务器的URL。端点的格式为<region.2.IP.address>:8080/client。
现在,执行一次相同的操作,在地域2中加入默认地域1.
将帐号,用户,域信息数据表从地域1的数据库拷贝到地域2数据库中。
接下来的操作,你需要确保已设置好MYSQL数据库的root用户密码,这也是CloudStack推荐的操作。
首先,运行这个命令拷贝数据库的内容:
# mysqldump -u root -p<mysql_password> -h <region1_db_host> cloud account user domain > region1.sql
然后,运行这条命令将数据放入地域2的MYSQL数据库:
# mysql -u root -p<mysql_password> -h <region2_db_host> cloud < region1.sql
删除项目帐户. 在地域2的数据库中运行如下命令:
# mysql> delete from account where type = 5;
设置默认区域为空白(NULL):
# mysql> update account set default_zone_id = null;
重新启动地域2中的管理节点服务。
增加第三个或是更多的地域¶
增加第三个或是更多地域的操作与增加第二个地域的操作类似,但是,你必须重复这几个特定的操作步骤:
在每个额外的地域中安装CloudStack管理节点,并在安装数据库时为其设置不同的地域ID(region ID)。
cloudstack-setup-databases cloud:<dbpassword>@localhost --deploy-as=root:<password> -e <encryption_type> -m <management_server_key> -k <database_key> -r <region_id>
一旦新地域的CloudStack管理服务器处于运行状态,在CloudStack WEB UI中使用添加地域按钮增加新的地域。以下以新增地域3作为示例:
以系统管理员身份登陆第一个地域的CloudStack(登陆URL:<region.1.IP.address>:8080/client),在增加地域时,输入地域ID ,名称,端点<region.3.IP.address>:8080/client。
以系统管理员身份登陆第二个地域的CloudStack(登陆URL:<region.2.IP.address>:8080/client),在增加地域时,输入地域的ID,名称,端点<region.3.IP.address>:8080/client。
在新的地域里,也同样增加所有的已存在的域域,例如,如果新地域是第三个CLOUDSTACK地域,刚需要其WEB UI里增加前两个地域信息:
以系统管理员身份登陆CLOUDSTACK(登陆URL:<region.3.IP.address>:8080/client)。
在增加地域的选择里,输入地域1的ID,名称,端口(1,region 1,<region.1.IP.address>:8080/client)
在增加地域的选择里,输入地域2的ID,名称,端口(2,region 2,<region.2.IP.address>:8080/client)
将帐号,用户,域信息数据表从已存在的地域的数据库拷贝到新的地域里。
接下来的操作,你需要确保已设置好MYSQL数据库的root用户密码,这也是CloudStack推荐的操作。
首先,运行这个命令拷贝数据库的内容:
# mysqldump -u root -p<mysql_password> -h <region1_db_host> cloud account user domain > region1.sql
然后,运行这个命令将数据库的内容放到新的地域数据库当中去(如地域3):
# mysql -u root -p<mysql_password> -h <region3_db_host> cloud < region1.sql
在地域3上运行这些命令,以便删除项目管理帐号:
mysql> delete from account where type = 5;
设置默认区域为空白(NULL):
mysql> update account set default_zone_id = null;
在新地域里重启CLOUDSTACK管理节点的服务。
删除一个地域¶
登陆到CLOUDSTACK的WEB UI,点击区域导航栏,选择你想删除的地域,然后,删除。例如,如果你想删除地域3:
登陆:<region.1.IP.address>:8080/client。
在左边的导航栏中,点击区域(为文档翻译中地域的概念,英文为region,下同)
选择你想删除的区域。
点击删除区域按钮。
在地域2里重复这些步骤:<region.2.IP.address>:8080/client。
增加一个区域¶
当你要增加一个新的区域时,你会被提示需要同时配置物理网络以前第一个机柜提供点,集群,宿主机,主存储,二级存储。
以系统管理员身份登陆CloudStack WEB用户界面,参阅 “登录用户界面”.
在左右的导航栏时,选择基础架构
在区域栏里,点击查看全部
点击添加区域,向导界面就会出现。
选择一种网络类型:
基本. 类似AWS风格的网络。单一网段,每个VM都得到此网段的一个IP。客户虚拟机之间主要以安全组形式在网络第三层之间实现隔离。(IP地址源过滤)
高级 为更复杂的网络拓扑而设计。这种网络模型可以实现更灵活的客户虚拟机网络配置,并且可以提供防火墙,VPN,负载均衡这些高级功能。
根据选择的基本或高级区域的不同步骤会存在差异。选择适合你的步骤继续:
基本区域配置¶
当你选择了基本区域之后,你需要输入以下细节信息,才能进入下一步。
名称. 为这个区域命名
DNS 1 和 2. 这些DNS是提供给区域里的客户虚拟机使用的。这些DNS服务器IP访问是通过随后添加的公网进行的。此区域的公网IP地址必须能够路由到这些DNS服务器。
内部 DNS 1 和内部 DNS 2. 区域内的系统虚拟机会用到这些DNS服务器(系统虚拟机是CLOUDSTACK本身会用到的虚拟机如虚拟路由器-VR,控制台代理虚拟机-CPVM,二级存储虚拟机-SSVM),这些系统虚拟机通过管理网络访问这个DNS服务器。为机柜提供点配置的私有IP地址必须能路由到这些内部DNS服务器。
**Hypervisor.**(在version 3.0.1介绍过) 需要为区域内的第一个集群选择一种hypervisor。当你完成添加区域的配置之后,也可以为另外的集群配置不同的hypervisor。
网络方案。 你需要客户虚拟机可用的网络方案及服务
网络方案
描述
DefaultSharedNetworkOfferingWithSGService 如果你希望通过安全组来隔离客户虚拟机流量,选择这个选项。(参看通过安全组隔离虚拟机这一章节。)
DefaultSharedNetworkOffering 如果你需要安全组,选择这个选项。
DefaultSharedNetscalerEIPandELBNetworkOffering 如果,你在CLOUDSTACK内安装了Citrix NetScaler应用,并且你需要Elastic IP和Elastic Load Balancing这些功能的话,选择这个选项。EIP 和ELB技术在安全组启用的情况下,可以提供1:1的NAT映射和负载均衡功能。
网络域 (可选) 如果你想为客户虚机网络定义一个域名,在此处输入后缀名。
公有区域. 一个公有区域可以被所有用户使用。而非公有区域会有一个指定的域名,只有指定域名中的用户才可以在那个区域里创建客户虚拟机。
选择在物理网络里需要承载的流量类型。
流量类型分为管理流量,公网流量,来宾客户流量,和存储流量。关于这些流量的更多信息,可以点击相关图标得到一些帮助。这个屏幕显示的是已分配好的流量类型。如果要继续增加,可以拖动相关流量类型到网络里,当然,也可以将网络更改成你认为合适的名字。
为物理网络上承载的每一种CLOUDSTACK网络流量类型赋予一个标签。这些标签必须与你已在宿主机上设置的(网桥)标签名一致。如果要编辑标签,点击流量类型上的编辑按钮,在弹出的对话框中输入相应名称,然后再点击OK即可。
这些流量类型标签只是定义了区域内的第一个集群的hypervisor。对于其它hypervisor,则这个标签可以在区域创建完成之后配置。
点击下一步
(只针对NetScaler) 如果你选择的网络方案是针对NetScaler的,则还要一个额外的选项需要填写。在填写了关于NetScaler的细节信息之后,点击下一步继续。
IP地址. 针对NetScaler的NSIP(NetScaler的IP地址)。
用户名/密码. 访问此设备的认证许可。CLOUDSTACK使用这些认证信息访问此设备。
类型. 需要添加的NetScaler设备的类型。它必须是NetScaler VPX, NetScaler MPX, or NetScaler SDX当中的一种。至于这三种类型的比较,可以参看NetScaler负载均衡这一章节内容。
公网接口. NetScaler接口配置为公网的一部分。
内网接口 NetScaler接口配置为内网的一部分。
重试次数 认为操作失败前的最大重试次数,默认为2次。
容量,共享NetScaler设备的最大客户网络或帐号的数量。
专用 当标示为专用之后,则这个设备只为一个帐号使用。当选择专用之后,容量的数值不再可任意设置—明显的,它的数量只能为1.
(只针对NetScaler) 设置公网的IP范围。此IP范围用作启用了EIP和ELB技术的网络方案的NAT映射。输入这些细节信息,点击增加。如果有必要,你可以重复输入多个公网IP范围。当这一切完成之后,点击下一步继续。
网关 为这些IP地址定义网关。
子网掩码 定义这些IP地址的子网掩码。
VLAN 公网流量的VLAN号。
开始IP/结束IP. 定义公网IP范围,这些IP用来访问公网或是从公网访问客户虚拟机。
在一个新的区域,CLOUSTACK总是会为你添加第一个机柜提供点。当然,在区域设置完成之后,你可以添加理多的机柜提供点。关于机柜提供点的详细,参看此URL:“About Pods”.
开始配置第一个机柜提供点,输入以下这些信息,然后点击下一步继续。
机柜提供点名称 为此机柜提供点命名。
保留系统的网关 这个机柜提供点内宿主机的网关。
保留系统的子网掩码. 定义此机柜提供点的子网前缀,用CIDR标示。
开始/结束系统保留的IP. 这些IP地址是CLOUDSTACK给各种管理用的系统虚拟机使用的。如SSVM,CPVM,DHCP(VR)等。如需更多详情,请参看系统保留IP这一章节
为客户来宾配置网络,提供好如下信息,然后点击下一步。
来宾网关. 客户来宾虚拟机使用的网关。
来宾子网掩码. 客户来宾虚拟机使用的子网掩码。
客户来宾开始/结束IP. 输入CLOUDSTACK用来分配给客户来宾使用的起止IP地址。
我们强烈推荐使用多网卡,因为多网卡就可以配置不同的子网。
如果一个网卡已在使用,则这些IP地址的CIDR必须和机柜提供点的CIDR一致。
在一个新的机柜提供点里,CLOUDSTACK会为你加第一个群集。当然,你也可以以后再添加其它的群集。如果想多了解群集,你可以参看群集的相关章节。
配置第一个群集,输入以下这些信息,然后点击下一步。
Hypervisor. (只针对Version 3.0.0;在3.0.1中,这一栏是只读的)选择一种在这个群集中运行的hypervisor。如果你选择宾是VMWARE,则需要提供关于VSPHERE群集的信息。对于VSHPERE服务器,我们建议先在VCENTER里将群集设备好,然后作为群集整体加入CLOUDSTACK。参看Add Cluster: vSphere。
群集名称. 你要为此群集提供一个CLOUDSTACK之前没有使用的名称。
在一个新的群集里,CLOUDSTACK会添加第一个宿主机。当然,之后你可以添加更多的宿主机。关于宿主机的概念,可以参看About Hosts的章节。
注解
当你往CLOUDSTACK里新增一个hypervisor宿主机时,此宿主机上一定不能有虚拟机在运行(全新的宿主机)。
当你在配置宿主机之后,你需要在宿主机上安装hypervisor软件。你也需要事先了解CLOUDSTACK所能支持的hypervisor种类及版本,以及是否需要额外的配置信息。关于这些配置的详细信息,参看:
Citrix XenServer安装及配置
VMware vSphere安装及配置
KVM vSphere安装及配置
配置第一个宿主机,输入以下信息,然后点击下一步:
宿主机名称. 宿主机的IP地址或DNS解析名称。
用户名. 用户名为root。
密码。 上面用户名的密码(主要针对XenServer 和 KVM的安装)
主机标签(可选). 此标签用于将主机分类,以便更好的后期维护。比如,如果你只想此宿主机用于具有HA(high availability)高可用性能的虚拟机,那么,你可以将此宿主机设置为云里相关的HA标签。(参看全局设置参数里的ha.tag),关于HA的更多信息,请参看HA虚拟机和HA宿主机的相关章节。
在一个新的群集里,CLOUDSTACK会添加第一个主存储。当然,你也可以在随后添加更多的主存储。关于主存储的细节,可以参看相关章节:Primary Storage
配置第一个主存储,输入以下信息,然后点击下一步:
名称 存储设备的名称
协议 对于XenServer,选择NFS, iSCSI, 或 PreSetup.对于KVM,选择NFS, SharedMountPoint,CLVM, 或RBD.对于VSPHERE,选择VMFS(iSCSI 或FiberChannel)或NFS。本栏的其它选择依你选项不同而不同。
添加高级区域¶
当你选择高级区域以后,你需要提供以下信息,然后点击下一步。
名称. 为这个区域命名
DNS 1 和 2. 这些DNS是提供给区域里的客户虚拟机使用的。这些DNS服务器IP访问是通过随后添加的公网进行的。此区域的公网IP地址必须能够路由到这些DNS服务器。
内网 DNS 1 和内网 DNS 2. 区域内的系统虚拟机会用到这些DNS服务器(系统虚拟机是CLOUDSTACK本身会用到的虚拟机如虚拟路由器-VR,控制台代理虚拟机-CPVM,二级存储虚拟机-SSVM),这些系统虚拟机通过管理网络访问这个DNS服务器。为机柜提供点配置的私有IP地址必须能路由到这些内部DNS服务器。
网络域 (可选) 如果你想为客户虚机网络定义一个域名,在此处输入后缀名。
客户虚拟机CIDR. 这个CIDR指的是在这个区域内的虚拟客户机的网络,比如10.1.1.0/24。最好能为不同的区域配置不同的CIDR,因为这样可以更方便的在不同的区域中建立相关的VPN。
**Hypervisor.**(在version 3.0.1介绍过) 需要为区域内的第一个集群选择一种hypervisor。当你完成添加区域的配置之后,也可以为另外的集群配置不同的hypervisor。
公有区域. 一个公有区域可以被所有用户使用。而非公有区域会有一个指定的域名,只有指定域名中的用户才可以在那个区域里创建客户虚拟机。
选择在物理网络里需要承载的流量类型。
流量类型分为管理流量,公网流量,来宾客户流量,和存储流量。关于这些流量的更多信息,可以点击相关图标得到一些帮助,或是参看以下帮助 “高级区域网络流量类型”。这个屏幕显示的是已分配好的流量类型。如果你有好几个物理网络,你需要增加更多的配置。拖动不同的网络流量类型到灰色的网络中,此网络将变成活跃可用的。你可以将流量图标在不同的网络中移动。比如,如果默认的网络1中的流量不是你实际的配置部署的话,我可以移动和更改。当然,也可以将网络更改成你认为合适的名字。
(在3.0.1版本中介绍过)为每一种不同的物理网络分配不同的网络流量标签。这些标签必须和你在hypervisor主机中定义的标签一致。更改标签名,可以在每一个物理网络里点击相应的流量标签的编辑按钮,一个对话框会跳出来,输入合适的标签之后,点击下一步。
这些流量类型标签只是定义了区域内的第一个集群的hypervisor。对于其它hypervisor,则这个标签可以在区域创建完成之后配置。
(只针对VMWARE)如果你的环境中有Nexus分布式虚拟交换机(dvSwitch),则必须为每一种物理网络上的流量类型的标签指定为相应的局域网端口配置名称(Ethernet port profile names).关于Nexus dvSwitch更多信息,可以查看安装指南的相关章节。如果你的环境中有VMware的分布式虚拟交换机(dvSwitch),,则必须为每一种物理网络上的流量类型的标签指定为相应的虚拟交换机名称(Switch name)。关于这方面的更多信息,参看安装指南当中的关于VMware Datacenter的相关章节。
点击下一步
配置公网IP地址范围,输入以下细节,然后点击添加。如果需要,你可以重复此过程以便添加更多的公网IP地址。当这一切完成之后,点击下一步。
网关 为这些IP地址定义网关。
子网掩码 定义这些IP地址的子网掩码。
VLAN 公网流量的VLAN号。
开始IP/结束IP. 为客户机的网络配置一个可供互联网访问进出的IP地址范围。
在一个新的区域,CLOUSTACK总是会为你添加第一个机柜提供点。当然,在区域设置完成之后,你可以添加理多的机柜提供点。关于机柜提供点的详细,参看此URL:“About Pods”.
开始配置第一个机柜提供点,输入以下这些信息,然后点击下一步继续。
机柜提供点名称 为此机柜提供点命名。
保留系统的网关 这个机柜提供点内宿主机的网关。
保留系统的子网掩码. 定义此机柜提供点的子网前缀,用CIDR标示。
开始/结束系统保留的IP. 这些IP地址是CLOUDSTACK给各种管理用的系统虚拟机使用的。如SSVM,CPVM,DHCP(VR)等。如需更多详情,请参看:“系统保留IP地址”.
定义每个物理网络上的客户流量的VLAN ID范围(参看 VLAN 分配示例 ),然后点击下一步。
在一个新的机柜提供点,CLOUDSTACK会添加第一个群集。当然,随后你可以添加更多的群集。关于什么是群集,参阅 “关于群集”.
配置第一个群集,输入以下这些信息,然后点击下一步。
Hypervisor. (只针对Version 3.0.0;在3.0.1中,这一栏是只读的)选择一种在这个群集中运行的hypervisor。如果你选择宾是VMWARE,则需要提供关于VSPHERE群集的信息。对于VSHPERE服务器,我们建议先在VCENTER里将群集设备好,然后作为群集整体加入CLOUDSTACK。参看Add Cluster: vSphere。
群集名称. 你要为此群集提供一个CLOUDSTACK之前没有使用的名称。
在一个新的群集,CLOUDSTACK会添加好第一个宿主机,随后,你也可以自行添加更多的宿主机。关于什么是宿主机,参阅 “关于主机”.
注解
当你开始部署CLOUDSTACK时,hypervisor宿主机必须不能有已在运行的虚拟机。
当你在配置宿主机之后,你需要在宿主机上安装hypervisor软件。你也需要事先了解CLOUDSTACK所能支持的hypervisor种类及版本,以及是否需要额外的配置信息。关于这些配置的详细信息,参看:
Citrix XenServer安装指南
VMware vSphere安装及配置
KVM的安装和配置
配置第一个宿主机,输入以下信息,然后点击下一步:
宿主机名称. 宿主机的IP地址或DNS解析名称。
用户名. 通常为root
密码。 上面用户名的密码(主要针对XenServer 和 KVM的安装)
主机标签. (可选)此标签用于将主机分类,以便更好的后期维护。比如,如果你只想此宿主机用于具有HA(high availability)高可用性能的虚拟机,那么,你可以将此宿主机设置为云里相关的HA标签。(参看全局设置参数里的ha.tag),关于HA的更多信息,请参看HA虚拟机和HA宿主机的相关章节。
在一个新的群集,CLOUDSTACK会添加好第一台主存储服务器,随后,你也可以自行添加更多的存储服务器。关于什么是主存储服务器,参阅 “关于主存储”.
配置第一个主存储,输入以下信息,然后点击下一步:
名称 存储设备的名称
协议 对于XenServer,选择NFS, iSCSI, 或 PreSetup.对于KVM,选择NFS, SharedMountPoint,CLVM, 或RBD.对于VSPHERE,选择VMFS(iSCSI 或FiberChannel)或NFS。本栏的其它选择依你选项不同而不同。
NFS 服务器 存储设备的IP地址或DNS解析名称。
路径. 服务器输出的存储路径。
标签. (可选项)以逗号分隔的一系列存储设备的标签。它应该是磁盘方案中标签的等价集合或者父集。
iSCSI 服务器 存储设备的IP地址或DNS解析名称。
Target IQN. ISCSI target的IQN编号,格式如:iqn.1986-03.com.sun:02:01ec9bb549-1271378984。
Lun. LUN编号。比如:3。
标签. (可选项)以逗号分隔的一系列存储设备的标签。它应该是磁盘方案中标签的等价集合或者父集。
preSetup 服务器 存储设备的IP地址或DNS解析名称。
SR 名称标签 输入在CLOUDSTACK外部设置好的SR的名称标签。
标签. (可选项)以逗号分隔的一系列存储设备的标签。它应该是磁盘方案中标签的等价集合或者父集。
SharedMountPoint **路径.**每一个主机的主存储的挂载路径。格式如 “/mnt/primary”。
标签. (可选项)以逗号分隔的一系列存储设备的标签。它应该是磁盘方案中标签的等价集合或者父集。
VMFS 服务器 vCenter服务器的IP地址或DNS名称。
路径 这是一个datacenter name 和 datastore name集成在一起的名字。格式如”/” datacenter name “/” datastore name. 示例: “/cloud.dc.VM/cluster1datastore”.
标签. (可选项)以逗号分隔的一系列存储设备的标签。它应该是磁盘方案中标签的等价集合或者父集。
在区域的群集中当,主存储的标签都必须是唯一的。比如,如果你在A群集当中提供的主存储的标签为T1和T2,那么,你在同一个区域的另一个群集提供的主存储标签也必须为T1和T2。
在一个新的区域里,CLOUDSTACK会添加第一个二级存储。关于什么是二级存储,请参阅 “关于辅助存储”。
当你在填写这些信息时,你需要准备好二级存储的NFS共享,并且安装好CLOUDSTACK最新的系统虚拟机模板。更多信息,可以查看Adding Secondary Storage :
NFS服务器 NFS服务器的IP地址或相应域名。
路径. 服务器输出的存储路径。
点击启动
添加一个机柜提供点¶
当你添加一个区域时,CLOUDSTACK会添加第一个机柜提供点。用本章节的办法,你可以随时添加更多的机柜提供点。
登陆到CloudStack用户界面。参阅 “登录用户界面”.
在左侧的导航栏里,选择基础架构。在区域栏目里,选择查看全部。然后,点击相应的区域以添加新的机柜提供点。
点击计算和存储标签。在图中的机柜提供点里,点击查看全部。
点击增加提供点。(此处提供点对应于翻译此翻译文档的机柜提供点)
在随后的对话栏里,输入以下细节信息。
名称 机柜提供点名称
网关. 机柜提供点的网关。
网络 定义这个提供点的子网络前缀。用CIDR格式。
开始/结束系统保留的IP. 这些IP地址是CLOUDSTACK给各种管理用的系统虚拟机使用的。如SSVM,CPVM,DHCP(VR)等。如需更多详情,请参看系统保留IP这一章节
点击确定。
添加群集¶
你需要告诉CLOUDSTACK它所能管理的宿主机。宿主机存在于群集内,所以,在为云里添加主机之后,必须先至少存在一个群集。
添加群集:KVM 或者 XenServer¶
这些步骤确保你已在宿主机上安装好hypervisor,并且已登陆CLOUDSTACK的WEB UI。
在左右的导航栏里,点击基础架构。在区域里,点击查看全部。然后点击你想增加群集所在的区域。
点击计算这个标签。
在对话栏的群集里,点击查看全部。
点击增加群集。
选择这个群集的hypervisor类型。
选择你想在哪个机柜提供点增加群集。
为群集输入一个名称。这个名称必须为CLOUDSTACK里没有使用的名字。
点击确定。
添加群集:vSphere¶
对于VSPHERE的主机管理是结合VCENTER和CLOUDSTACK WEB UUI管理界面一起完成的。CLOUDSTACK需要所有的主机都在同一个群集里,但群集可能只是由一个主机构成。作为一个管理员,你必须决定到底是使用一个主机一个群集还是多个主机一个群集。多个主机一个群集,可以实现CLOUDSTACK的一些高级功能,如热迁移等。当然,此群集需要有NFS或ISCSI等这个共享存储支持。
对于VSPHERRE服务器,我们推荐的方案是先在VCENTER里建好群集,然后将整个群集加入到CLOUDSTACK群集中。这个群集需要以下条件:
在一个VSPHOERE群集里不要超过8个主机。
确保在你想加入CLOUDSTACK群集前,VSPHERE没有任何虚拟机。
在CLOUDSTACK中添加一个VSHPERE群集:
在VCENTER里新建一个群集。请参看VCENTER的相关操作指地完成这一。在VCENTER里建立群集的大致过程如下:
登陆到UI界面。
在左右的导航栏里,点击基础架构。在区域里,点击查看全部。然后点击你想增加群集所在的区域。
点击计算标签。在机柜提供点栏里点击查看全部。选择你想添加群集的机柜提供点。
点击查看群集。
点击增加群集。
在Hypervisor里,选择VMware。
提供界面要求的如下信息。这些信息的值可以参考VCENTER中对应的值。
群集名称:输入你在VCENTER中创建的群集名称。比如:”cloud.cluster.2.2.1”
vCenter用户名:输入CLOUDSTACK连接到VCENTER所用的用户名。这个用户名必须要有所有的管理权限。
CPU超配比率: 输入此群集的CPU超配比率。这个比率值决定了群集内每台虚拟机的CPU耗用比率。增加这个数据,则能使用更多的资源。如果不设置此值的话,默认值为1,这就表示没有使用超配。
RAM超配比率:输入RAM的超配比率。这个比率值决定了群集内每台虚拟机的MEM耗用比率。增加这个数据,则能使用更多的资源。如果不设置此值的话,默认值为1,这就表示没有使用超配。
vCenter主机: VCENTER的主机的IP地址或主机名。
vCenter密码: 输入上面用户的密码。
vCenter Datacenter:输入此群集拥有的vCenter Datacenter名称,比如:”cloud.dc.VM”.
重用公共网络流量:启用这个选项,则可以在区域的范围内重用公共网络流量。
公共流量vSwitch类型: 这个选项只有在你启用了Override Public Traffic之后才会显示出来,你可以选择一种合适的虚拟交换机。如果vmware.use.dvswitch这个全局参数设置为true,则默认选项为VMware vNetwork Distributed Virtual Switch.
如果你启用了Nexus dvSwitch,下面关于dvSwitch的数据也需要设置:
Nexus dvSwitch IP地址: Nexus VSM的IP地址
Nexus dvSwitch 用户名:具体有 Nexus VSM 权限的用户名。
Nexus dvSwitch 密码:上面用户名的密码。
重用客户机流量:如果选中此项,则会在全区域范围内重用客户机流量。
Guest Traffic vSwitch Type:只有当the Override Guest Traffic选项启用后才会出现。为此选择一种合适的虚拟交换机类型。
如果全局参数vmware.use.dvswitch为true,则默认的选项为VMware vNetwork Distributed Virtual Switch。
如果你启用了Nexus dvSwitch,下面关于dvSwitch的数据也需要设置:
Nexus dvSwitch IP地址: Nexus VSM的IP地址
Nexus dvSwitch 用户名:具体有 Nexus VSM 权限的用户名。
Nexus dvSwitch 密码:上面用户名的密码。
当群集建好之后,会有稍稍的迟延之后,才会有UI里显示出来。
添加一个宿主机¶
当你在添加一个新的宿主机之后,你必须先在宿主机上安装一种hypervisor。CLOUDSTACK是可以管理多种hypervisor的。
CLOUDSTACK安装指南提供了如何安装配置各种hypervisor的步骤。你可以参考相关章节找到你所使用的hypervisor的安装指南,以及为了加入CLOUDSTACK而需要的额外的配置步骤。
警告
确保你已按CLOUDSTACK的要求,安装并设置好了hypervisor。
现在,可以添加hypervisor主机到CLOUDSTACK了。具体的添加技巧和过程取决于使选用的hypervisor类型。
添加一个宿主机(XenServer 或KVM)¶
XenServer和KVM可以在任何时间被加入CLOUDSTACK群集。
Requirements for XenServer and KVM Hosts¶
警告
确保 hypervisor在加入CLOUDSTACK前没有运行任何虚拟机。
配置需求:
每一个群集必须包含相同的 hypervisor。
对于 XenServer,群集内不要超过8个主机。
对于KVM,每一个群集不要超过16个主机。
硬件方面的需求,请参看CLOUDSTACK安装指南中关于你具体安装的hypervisor的要求。
如果使用了网卡绑定,管理员必须和群集中其它主机一样连接网线到这个新的主机
对于要加入群集的其它主机,运行下面的命令就会将主机加入XenServer计算池内。
# xe pool-join master-address=[master IP] master-username=root master-password=[your password]
注解
当你在拷贝和粘贴这个命令时,请确保所有的命令都在同一行里。有的文档拷贝工具会将这个命令分割为多行。
当所有主机都加入XenServer计算池后,运行cloud-setup-bond脚本。这个脚本将会完成配置工作,并且在群集的新主机里设置相关的绑定。
将脚本从管理节点的/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/cloud-setup-bonding.sh拷贝到主机,确保此脚本可以有执行权限。
运行脚本:
# ./cloud-setup-bonding.sh
如果使用了共享挂载存储,则管理员要确保群集里所有新机方和其它主机一样有相同的存储挂载点。
确保新主机和群集内其它主机有一个的网络设置(客户机,内网,外网网络)。
如果在CLOUDSTACK中使用了OpenVswitch网桥,则在操作前,需要将KVM计算主机上的agent.properties文件的network.bridge.type参数设置为openvswitch。
添加一个新的XenServer或KVM主机¶
如果你还没有这么作,就需要在主机上安装hypervisor软件。你需要知道CLOUDSTACK支持哪些hypervisor,以及主机上还需要哪个特别的配置。可以参看CLOUDSTACK安装指南的相关章节,找到具体的安装信息。
作为管理员登录到CloudStack用户界面。
在左边的导航栏里,点击区域基础架构。在区域里,点击查看全部。然后在相应的区域里添加主机。
点击计算标签。在群集节点里,点击查看全部。
在相应的群集里添加主机。
点击查看主机。(此处主机即可此翻译文档中宿主机的同一概念。)
点击添加主机
提供主机的如下信息。
主机名—此主机的IP地址或DNS名称。
用户名–通常为root用户。
密码—这通常是指XenServer或KVM安装时设置好的密码。
主机标签(可选)。此标签用于将主机分类,以便更好的后期维护。比如,如果你只想此宿主机用于具有HA(high availability)高可用性能的虚拟机,那么,你可以将此宿主机设置为云里相关的HA标签。(参看全局设置参数里的ha.tag),关于HA的更多信息,请参看HA虚拟机和HA宿主机的相关章节。
在主机添加好之后,可能会有稍稍的延迟才会有WEB UI界面中显示出来。
在其它宿主机上复杂此操作过程。
添加一个宿主机(vSphere)¶
对于vSphere主机,我们推荐先在VCENTER里建好群集,然后将整个群集加入CLOUDSTACK。关于如何在VCENTER里添加群集,可以参看VSPHERE的相关内容章节。
添加主存储¶
主存储的系统需求¶
硬件需求
以下的hypervisor都支持标准化的iSCSI, SMB, 或 NFS服务器。
存储服务器应该配置大容量硬盘,且硬盘配置硬件RAID控制器。
最小容量取决于你的需求。
当添加主存储时,存在以下这些限制:
在主机成功加入群集之后才能添加主存储。
当你没有共享的主存储时,则必须将全局参数的system.vm.local.storage.required设置为true,否则,将不能启动虚拟机。
添加主存储¶
当你添加一个新的区域时,主存储作为操作过程的一个步骤已建好。以后,你也可以随时添加主存储。当在添加新的群集或是添加新的主机时都可以添加主存储。
警告
如果提前准备好了主存储,请确认主存储目录里没有任何数据(比如空的SAN卷或NFS共享目录)。将主存储加入CLOUDSTACK时,会清除主存储里的一切数据。
注解
区域级主存储也可以通过CLOUDSTACK的API来添加。(CLOUDSTACK暂不支持通过UI增加区域级主存储)
一旦在区域里添加好主存储,它就能通过CLOUDSTACK的UI界面管理。
登陆CloudStack用户界面。(参阅 “Log In to the UI”)。
在左侧导航栏中,点击基础架构,在区域中,点击 查看更多,然后点击你所需要添加主存储的区域名称。
点击计算这个标签。
在结构图的主存储节点上,点击 查看全部。
点击 添加主存储
提供弹出对话框中所需要的信息。依据你所选协议的不同,所需的信息会有所不同。
范围. 表明存储是对区域中的所有主机可用或者是仅对单一集群中的主机可用。
Pod. (只有在范围域内选择集群时可见)针对存储设备的Pod。
集群. (只有在范围域内选择集群时可见)针对存储设备的集群
名称 存储设备的名称
协议. 对XenServer主机而言,可以选择NFS,iSCSI或者PreSetup。对KVM而言,可以选择NFS或者ShareMountPoint。对vSphere而言,可以选择NFS或VMFS(iSCSI或FiberChannel,对Hyper-V而言,选择SMB。
服务器(针对NFS,iSCSI或PreSetup) 存储设备的IP地址和DNS
服务器(针对VMFS). vCenter 服务器的IP地址和DNS
路径(对NFS). 对NFS协议,这是从服务器上导出的路径
路径(对VMFS). 在vSphere中,这是数据中心名称以及数据存储名称的结合。格式如下:”/” 数据中心名称 “/” 数据存储名称”。例如:”/cloud.dc.VM/cluster1datastore”.
路径(对SharedMountPoint). 对KVM而言,这是每一个主机上挂载的主存储的路径。例如:”/mnt/primary”.
SMB 用户名 (for SMB/CIFS),仅在选择了 SMB/CIFS时可用。此账户针对SMB拥有必要的权限。用户必须是Hyper-V管理组的成员。
SMB 密码 (for SMB/CIFS),仅在选择了 SMB/CIFS时可用。此密码与账户关联。
SMB Domain(for SMB/CIFS),仅在选择了 SMB/CIFS时可用。SMB共享的活动目录域
SR标签名(针对PreSetup). 输入被设为外部CloudStack SR的标签名
目标IQN(for iSCSI). 在iSCSI中,这是目标的IQN。例如,iqn.1986-03.com.sun:02:01ec9bb549-1271378984.
Lun # (for iSCSI). 在iSCSI中,这是LUN的号码,例如: 3.
标签(可选). 对此类存储设备以逗号分隔的标签列表。相当于在你磁盘提供者的标签集合或超集。
在区域的群集中当,主存储的标签都必须是唯一的。比如,如果你在A群集当中提供的主存储的标签为T1和T2,那么,你在同一个区域的另一个群集提供的主存储标签也必须为T1和T2。
点击确定。
配置存储插件¶
注解
基于特定插件的存储(如SolidFire)必须通过CloudStack API(以下会有说明)进行添加。暂时不支持通过UI添加此类型的主存储(尽管大多数的配置通过UI设置)
注解
同时,特定的存储插件,如SolidFire存储插件,只能应用于数据盘(通过硬盘方案)
注解
SolidFire存储插件是CloudStack标准安装的一部分,不需要另做其他准备工作。
基于SolidFire插件添加的主存储能够使CloudStack提供较好的QoS保证。
使用硬盘方案时,管理员可以建立一个当用户创建数据盘时可动态创建SolidFire卷的使用环境,从而保证了性能。SolidFire卷关联至一个(只有一个)CloudStack卷,因此CloudStack卷的性能不会因其他用户过度使用系统而变化。
创建存储池的API已经被扩展到支持插件式存储供应商。下面给出了当向基于SolidFire插件的CloudStack添加存储时可使用的参数列表。
- command=createStoragePool
scope=区域
zoneId=【你的区域ID】
name=【主存储的名称】
hypervisor=任意
- provider=SolidFire
capacityIops=【来自SAN的全部IOPS号】
capacityBytes=【来自SAN的全部字节数】
url参数有时是唯一的,他的值可以包含额外的键值对。
url=【键值对下面有详细说明(值由url编码,例如,’=’编码后为‘%3D’】
MVIP%3D【管理虚拟IP地址】,后面可以使用端口号
SVIP%3D【管理虚拟IP地址】,后面可以使用端口号
clusterAdminUsername%3D[集群管理员用户名]
clusterAdminPassword%3D[集群管理员密码]
clusterDefaultMinIops%3D[卷的最小IOPS号,在管理员或用户没有给出此号时使用]
clusterDefaultMaxIops%3D【卷的最大IOPS号,在管理员或用户没有给出此号时使用】
clusterDefaultBurstIopsPercentOfMaxIops%3D【最小的IOPS * clusterDefaultBurstIopsPercentOfMaxIops 参数,可以是十进值】
添加二级存储¶
二级存储的系统需求¶
二级存储器或Linux NFS服务器
- SMB/CIFS (Hyper-V)
(可选)OpenStack Object Storage (Swift) (参见 http://swift.openstack.org)
最少100GB容量
二级存储必须与他服务的客户虚拟机在同一个区域。
每一个二级存储服务器必须对区域的所有主机可用。
添加二级存储¶
当你创建一个新的区域时,第一个二级存储作为创建的一部分 。为了添加更多的服务器,你可以随时添加二级存储服务器到已创建的区域中。
警告
确保二级存储服务器上没有存储任何数据。添加服务器到CloudStack时,会损坏服务器上原有已存的数据
为了准备区域的二级存储,你应当在管理节点安装时创建并挂载了NFS共享目录。参见 “准备NFS共享目录”.
如果你正在使用Hyper-V主机,确保你已经创建了一个SMB共享目录。
确保你在安装管理节点时,准备了系统虚拟机模板,参见 “准备系统虚拟机模板”.
以根管理员身份登录CloudStack界面。
在左侧导航栏中,点击基础架构
在二级存储中,点击 查看全部。
点击添加二级存储。
填写以下内容:
名称–需要给二级存储一个描述性名称。
提供者。选择S3,Swift,NFS或者CIFS。此时会出现需要填写的相关内容。根据提供者的不同,需要的内容会有所不同。要了解更多,可参考提供者文档(如S3或Swift网站)。NFS可用于区域存储,其他的可用于地域存储。对 Hyper-V,选择 SMB/CIFS。
警告
地域中不支持多类二级存储共存。每一个地域只能使用NFS,S3或Swift其中的一种。
创建NFS二级暂存区,必须要勾选此项。
警告
即使UI允许你不勾选此项,也不要这样做。此项以及下面的三项内容是必须要填写的。即使二级存储提供商使用了Swift或S3,在每个区域中NFS暂存区仍是需要的。
区域,即二级暂存区所在的区域。
SMB Username:仅当选择了SMB/CIFS时可用。此账户针对SMB拥有必要的权限。用户必须是Hyper-V管理组的成员。
SMB Password:仅当选择了SMB/CIFS时可用。此密码与账户关联。
SMB Domain:仅当选择了SMB/CIFS时可用。是SMB共享目录活动哉的一部分。
NFS服务器。二级暂存区的区域名称。
路径。二级暂存区所在区域的路径
为每一个区域添加二级暂存区¶
每一个区域至少有一个NFS存储区。每个区域允许存在多个NFS服务器。按以下步骤为区域添加一个二级暂存区
以根管理员身份登录CloudStack界面。
在左侧导航栏中,点击基础架构
在二级存储中,点击 查看全部。
在选择视图中,选择二级暂存区
点击添加二级暂存区按钮
填写对话框中的内容,然后点击确定
区域,即二级暂存区所在的区域。
NFS服务器。二级暂存区的区域名称。
路径。二级暂存区所在区域的路径
初始化及测试¶
在所有配置完成后,CloudStack会执行初始化。根据网络速度的不同,可能会需要30分钟或更多的时间。当初始化完成后,管理员控制面板会出现在CloudStack的界面中。
确保系统已经准备完成。在左侧导航栏中,选择 模板 ,点击CentOS 5.5 (64bit) no Gui (KVM) template,查看其状态是否为 下载完成。在状态没有变成下载完成前,不要继续操作。
点击实例标签,筛选我的实例。
点击添加实例,并完成向导指示的步骤。
选择你刚才添加的区域。
在模板选择中,选择在虚拟机中使用的模板。如果是初次安装,可能仅提供了CentOS的模板。
选择服务方案。确保已有的硬件允许你开始选择服务方案。
在数据盘方案中,如果可以,添加另一块数据盘。此盘可用,但并未在客户机中挂。例如,基于XenServer的Linux,重启虚拟机后会在/dev/xvdb中看见客户机。如果操作系统内核中使能了PV,重启并不是必要的一步。
在默认网络中,为客户机选择主网络。在试用安装中,这里可能只有一个选项。
可以给你的虚拟机一个名字或组名,允许使用你喜欢的描述性文字。
点击启动虚拟机,你的虚拟机将会被创建并被启动。可能会需要一点时间来下载模板并完成启动。你可以在实例页观察虚拟的过程。
为了使用虚拟机,点击通讯视图按钮以启动一个通讯窗口.
关于使用虚拟机的更多信息,包括如何允许进入虚拟机的网络流量,开始,停止,删除虚拟机以及从一个主机上迁移虚拟,参看管理员手册中的使用虚拟部分。
恭喜!你已经完了CloudStack的安装。
如果决定扩展你的部署,可以增加更多的主机,主存储,区域,资源池以及集群。
配置参数¶
关于配置参数¶
CloudStack提供了各类设置,可以用来限制某性配置功能,打开或关闭云中的某些功能。一旦你的管理服务器运行后,你可能需要设置一些参数,依赖于你打开了哪些参数。也可以在全局设置中使用默认值,他们都会在云中全部起作用,除非在低级别配置时配置有错误。你也可以设置局部参数,在账户,区域,集群,主存储级别时,允许覆盖全局配置参数
每一个CloudStack的功能文档,都会引导你到应用参数名,下表给出了一些更有用的参数。
值域 |
值 |
---|---|
management.network.cidr | CIDR描述了管理存在的CIDR。在使用vSphere部署时,此项必须设置。推荐其他部署时也同样设置。例如:192.168.3.0/24 |
xen.setup.multipath | 对于XenServer节点,此 是/否 变量指示CloudStack允许XenServer主机的iSCSI的多路径。默认值为否。如果希望CloudStack允许多路径,请置为是。如果值为是,基于NFS部署的XenServer主机允许多路径。当然这不会影响NFS的操作并且没有任何危害。 |
secstorage.allowed.internal.sites | 这用来保护内部网络避免通过使用模板下载功能暴力尝试下载文件。可以用逗号分隔多个CIDR。如果需要网址来匹配CIDR,二级存储虚拟机会使用私有网络来获取网址。其他网址则会通过公共接口。建议将其设成1或2个内部用来保存模板的地址,如:192.168.1.66/32 |
use.local.storage | 用来决定CloudStack是否使用主机本地的存储存放数据盘,模板,快照。CloudStack默认不使用本地存储。如果你想使用本地存储时可设置为是,并且你也知道选择本地存储的可信赖以及随时读取的功能。 |
host | 这是管理服务器的IP地址。如果你部署了多台管理服务器,你应该在这里输入一个内网可以访问到的负载均衡IP地址。 |
default.page.size | 通过CloudStack API命令返回每页中显示条目的最大值。在云级别中适用此限制,不同的云之间会有所不同。通过使用page和pagesize参数调用特定的API,将其修改为较小的值。要了解更多,请参阅开发指南。默认值:500 |
ha.tag | 这个标签标示一个在全云中使用的特定主机,作为专用高可用性主机。被标示的主机仅用作使能的高可用性虚拟机,他们在其他主机失败时启动。例如,在向云中添加一个新主机时可以标明主机的标签为ha.tag,将其设为高可用性主机。 |
vmware.vcenter.session.timeout | 通过使用这个参数来决定虚拟中心连接的失效时间。默认值是20分钟。增大此值,以避免在VMware部署中的错误,因为VMware的操作可能会需要超过20分钟的时间。 |
设定全局配置参数¶
通过以下几步来设定全局配置参数。在整个CloudStack的部署过程,默认值会起作用。
以管理员登录界面。
在左侧导航栏中,点击全局设置
在选择视图中,选择以下一个:
全局设置。这会显示参数值,并附有简单的说明。
虚拟化能力。这会显示虚拟化版本以及所支持的最大用户数。
使用搜索框来缩小你所赶兴趣的内容。
在动作栏,点击编辑按钮可修改一个值。如果查看虚拟化能力,必须先点击虚拟化名称以显示编辑页。
设定全局参数¶
使用以下几步来设置本地配置参数,包括账号,区域,集群或主存储。这些值会覆盖全局配置值。
以管理员登录界面。
在左侧导航栏中,点击基础架构或账户,取决于你想设定的内容。
找到你想使用的特定资源的名称。例如,如果你在基础架构中,在区域,集群,主存储上点击查看全部,
点击你想限定的资源名称。
点击设定标签
使用搜索框来缩小你所赶兴趣的内容。
在动作栏,点击编辑按钮可修改一个值。
全局配置参数的精细设置¶
以下全局配置参数更加精细。以下列出的参数有三个不同的范围,账户,集群和区域。
值域 |
值域 |
值 |
---|---|---|
账户 |
remote.access.vpn.client.iprange | 应当给远程访问vpn的客户分配一个ip范围。范围中的第一个ip被vpn 服务器所使用。 |
账户 |
allow.public.user.templates | 如果值为否,用户将不能创建公共模板。 |
账户 |
use.system.public.ips | 如果值为是,并且如果账户有一个或多个专用的公用ip范围,在账户专用的IP用完以后,可以从系统池中获取ip. |
账户 |
use.system.guest.vlans | 如果值为是,并且如果账户有一个或多个专用的客户VLAN范围,在账户专用的VLAN用完后,可从系统池中获取VLAN。 |
集群 |
cluster.storage.allocated.capacity.notificationthreshold | 百分比,其值从0到1,分配存储的利用率超过设定值,系统将会发送警告 |
集群 |
cluster.storage.capacity.notificationthreshold | 百分比,其值从0到1,可用存储的比率超过设定值,系统将会发送警告 |
集群 |
cluster.cpu.allocated.capacity.notificationthreshold | 百分比,其值从0到1,cpu的使用率超过设定值,系统将会发送警告 |
集群 |
cluster.memory.allocated.capacity.notificationthreshold | 百分比,其值从0到1,内存的使用率超过设定值,系统将会发送警告 |
集群 |
cluster.cpu.allocated.capacity.disablethreshold | 百分比,其值从0到1,cpu的使用率超过设定值后,分配器将关闭进一步的使用。设定相应通知限值要低于此值,以便能够被提前通知到。 |
集群 |
cluster.memory.allocated.capacity.disablethreshold | 百分比,其值从0到1,内存的使用率超过设定值后,分配器将关闭进一步的使用。设定相应通知限值要低于此值,以便能够被提前通知到。 |
集群 |
cpu.overprovisioning.factor | 用来进行cpu过度提供计算。可利用的cpu是实际cpu容量与cpu过度提供因子的乘积。 |
集群 |
mem.overprovisioning.factor | 用来进行内存过度提供计算。 |
集群 |
vmware.reserve.cpu | 当未过载使用时说明是否预留cpu。防止cpu过载,cpu总是有预留的。 |
集群 |
vmware.reserve.mem | 当未过载使用时说明是否预留内存。防止内存过载,内存总是有预留的。 |
区域 |
pool.storage.allocated.capacity.disablethreshold | 百分比,其值从0到1,已分配存储的使用率超过设定值后,分配器将关闭存储池,因为可用于分配的存储要小于限值。 |
区域 |
pool.storage.capacity.disablethreshold | 百分比,其值从0到1,已分配存储的使用率超过设定值后,分配器将关闭存储池,因为可用于分配的存储要小于限值。 |
区域 |
storage.overprovisioning.factor | 用来进行存储过载计算,可利用的存储是实际存储容量与存储过载因子的乘积。 |
区域 |
network.throttling.rate | 在网络中允许的默认每秒传输数据容量,单位MB |
区域 |
guest.domain.suffix | 在具有路由的虚拟网络中的虚拟机的默认域名 |
区域 |
router.template.xen | XenServer的默认路由模板名称 |
区域 |
router.template.kvm | kvm的默认路由模板名称 |
区域 |
router.template.vmware | VMware的默认路由模板名称 |
区域 |
enable.dynamic.scale.vm | 打开或关闭动态规模虚拟机 |
区域 |
use.external.dns | 忽略内部DNS,使用外部DNS1和DNS2 |
区域 |
blacklisted.routes | 黑名单中的路由不能用于虚拟机的私有网关来创建静态路由 |
Hypervisor安装¶
Hypervisor安装¶
KVM Hypervisor主机安装¶
KVM Hypervisor 主机系统要求¶
KVM包含在多种基于Linux的操作系统中。尽管不作要求,但是我们推荐以下发行版:
- CentOS / RHEL: 6.3
- Ubuntu: 12.04(.1)
KVM hypervisors主要要求在于libvirt和Qemu版本。不管您使用何种Linux版本,请确保满足以下要求:
libvirt: 0.9.4 或更高版本
Qemu/KVM: 1.0 或更高版本
CloudStack中的默认使用Linux本身的桥接(bridge模块)方式实现。也可选择在CloudStack中使用OpenVswitch,具体要求如下:
libvirt: 0.9.11 或更高版本
openvswitch: 1.7.1或更高版本
此外,硬件要求如下:
同一集群中主机必须使用相同版本的Linux系统。
同一群集中的所有节点架构必须一致。CPU的型号、数量和功能参数必须相同。
必须支持HVM(Intel-VT或者AMD-V)
64位x86 CPU(多核性能更佳)
4GB内存
至少一块网卡
在部署CloudStack时,Hypervisor主机不能运行任何虚拟机
KVM安装概述¶
如果你想使用 KVM hypervisor来运行虚拟机,请在你的云环境中安装KVM主机。本章节不会复述KVM的安装文档。它提供了KVM主机与CloudStack协同工作所要准备特有的步骤。
警告
在我们开始之前,请确保所有的主机都安装了最新的更新包。
警告
不建议在主机中运行与CloudStack无关的服务。
安装KVM主机的过程:
准备操作系统:
安装和配置libvirt
配置安全策略 (AppArmor 和 SELinux)
安装和配置Agent
准备操作系统:¶
主机的操作系统必须为运行CloudStack Agent和KVM实例做些准备。
使用root用户登录操作系统。
检查FQN完全合格/限定主机名。
$ hostname --fqdn
该命令会返回完全合格/限定主机名,例如”kvm1.lab.example.org”。如果没有,请编辑 /etc/hosts。
请确保主机能够访问互联网。
$ ping www.cloudstack.org
启用NTP服务以确保时间同步.
注解
NTP服务用来同步云中的服务器时间。时间不同步会带来意想不到的问题。
安装NTP
$ yum install ntp
$ apt-get install openntpd
在所有主机中重复上述步骤。
安装和配置Agent¶
CloudStack使用Agent来管理KVM实例。Agent与管理服务器通讯并控制主机上所有的虚拟机。
首先我们安装Agent:
在RHEL/CentOS上:
$ yum install cloudstack-agent
在Ubuntu上:
$ apt-get install cloudstack-agent
现在主机已经为加入群集做好准备。后面的章节有介绍,请参阅 添加一个宿主机。强烈建议在添加主机之前阅读此部分内容。
配置KVM虚拟机的CPU型号(可选)¶
此外,CloudStack Agent允许主机管理员控制KVM实例中的CPU型号。默认情况下,KVM实例的CPU型号为只有少数CPU特性且版本为xxx的QEMU Virtual CPU。指定CPU型号有几个原因:
通过主机CPU的特性最大化提升KVM实例的性能;
确保所有机器的默认CPU保持一致,消除对QEMU变量的依赖。
在大多数情况下,主机管理员需要每个主机配置文件(/etc/cloudstack/agent/agent.properties)中指定guest虚拟机的CPU配置。这将通过引入两个新的配置参数来实现:
guest.cpu.mode=custom|host-model|host-passthrough
guest.cpu.model=from /usr/share/libvirt/cpu_map.xml(only valid when guest.cpu.mode=custom)
更改CPU型号有三个选择:
custom: 您可以指定一个在/usr/share/libvirt/cpu_map.xml文件中所支持的型号名称。
host-model: libvirt可以识别出在/usr/share/libvirt/cpu_map.xml中与主机最接近的CPU型号,然后请求其他的CPU flags完成匹配。如果虚拟机迁移到其他CPU稍有不同的主机中,保持好的可靠性/兼容性能提供最多的功能和最大限度提示的性能。
host-passthrough: libvirt 会告诉KVM没有修改过CPU passthrough的主机。与host-model的差别是不仅匹配flags特性,还要匹配CPU的每一个特性。他能提供最好的性能, 同时对一些检查CPU底层特性的应用程序很重要,但这样会带来一些迁移的代价:虚拟机只会迁移到CPU完全匹配的主机上。
这里有一些示例:
custom
guest.cpu.mode=custom guest.cpu.model=SandyBridge
host-model
guest.cpu.mode=host-model
host-passthrough
guest.cpu.mode=host-passthrough
注解
host-passthrough可能会导致迁移失败,如果你遇到这个问题,你应该使用 host-model或者custom
安装和配置libvirt¶
CloudStack使用libvirt管理虚拟机。因此正确地配置libvirt至关重要。CloudStack-agent依赖于Libvirt,应提前安装完毕。
为了实现动态迁移libvirt需要监听不可靠的TCP连接。还要关闭libvirts尝试使用组播DNS进行广播。这些都可以在 /etc/libvirt/libvirtd.conf文件中进行配置。
设定下列参数:
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
除了在libvirtd.conf中打开”listen_tcp”以外,我们还必须修改/etc/sysconfig/libvirtd中的参数:
在RHEL或者CentOS中修改
/etc/sysconfig/libvirtd
:取消如下行的注释:
#LIBVIRTD_ARGS="--listen"
在Ubuntu中:修改
/etc/default/libvirt-bin
在下列行添加 “-l”
libvirtd_opts="-d"
如下所示:
libvirtd_opts="-d -l"
重启libvirt服务
在RHEL/CentOS上:
$ service libvirtd restart
在Ubuntu上:
$ service libvirt-bin restart
配置安全策略¶
CloudStack的会被例如AppArmor和SELinux的安全机制阻止。必须关闭安全机制并确保 Agent具有所必需的权限。
配置SELinux(RHEL和CentOS):
检查你的机器是否安装了SELinux。如果没有,请跳过此部分。
在RHEL或者CentOS中,SELinux是默认安装并启动的。你可以使用如下命令验证:
$ rpm -qa | grep selinux
在
/etc/selinux/config
中设置SELINUX变量值为 “permissive”。这样能确保对SELinux的设置在系统重启之后依然生效。在RHEL/CentOS上:
vi /etc/selinux/config
查找如下行
SELINUX=enforcing
修改为
SELINUX=permissive
然后使SELinux立即运行于permissive模式,无需重新启动系统。
$ setenforce permissive
配置AppArmor(Ubuntu)
检查你的机器中是否安装了AppArmor。如果没有,请跳过此部分。
Ubuntu中默认安装并启动AppArmor。使用如下命令验证:
$ dpkg --list 'apparmor'
在AppArmor配置文件中禁用libvirt
$ ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
$ ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
$ apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
$ apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
配置网络桥接¶
警告
本章节非常重要,请务必彻底理解。
注解
本章节详细介绍了如何使用Linux自带的软件配置桥接网络。如果要使用OpenVswitch,请看下一章节。
为了转发流量到实例,至少需要两个桥接网络: public 和 private。
By default these bridges are called cloudbr0 and cloudbr1, but you do have to make sure they are available on each hypervisor.
最重要的因素是所有hypervisors上的配置要保持一致。
网络示例¶
配置网络有很多方法。在基本网络模式中你应该拥有2个 (V)LAN,一个用于管理网络,一个用于公共网络。
假设hypervisor中的网卡(eth0)有3个VLAN标签:
VLAN 100 作为hypervisor的管理网络
- VLAN 200 for public network of the instances (cloudbr0)
VLAN 300 作为实例的专用网络 (cloudbr1)
在VLAN 100 中,配置Hypervisor的IP为 192.168.42.11/24,网关为192.168.42.1
注解
Hypervisor与管理服务器不需要在同一个子网!
配置网络桥接¶
配置方式取决于发行版类型,下面给出RHEL/CentOS和Ubuntu的配置示例。
注解
本章节的目标是配置两个名为 ‘cloudbr0’和’cloudbr1’的桥接网络。这仅仅是指导性的,实际情况还要取决于你的网络布局。
网络桥接所需的软件在安装libvirt时就已被安装,继续配置网络。
首先配置eth0:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
确保内容如下所示:
DEVICE=eth0
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
现在配置3个VLAN接口:
vi /etc/sysconfig/network-scripts/ifcfg-eth0.100
DEVICE=eth0.100
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
IPADDR=192.168.42.11
GATEWAY=192.168.42.1
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth0.200
DEVICE=eth0.200
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
BRIDGE=cloudbr0
vi /etc/sysconfig/network-scripts/ifcfg-eth0.300
DEVICE=eth0.300
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
BRIDGE=cloudbr1
配置VLAN接口以便能够附加桥接网络。
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0
现在只配置一个没有IP的桥接。
DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
STP=yes
同样建立cloudbr1
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr1
DEVICE=cloudbr1
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
STP=yes
配置完成之后重启网络,通过重启检查一切是否正常。
警告
在发生配置错误和网络故障的时,请确保可以能通过其他方式例如IPMI或ILO连接到服务器。
在安装libvirt时所需的其他软件也会被安装,所以只需配置网络即可。
vi /etc/network/interfaces
如下所示修改接口文件:
auto lo
iface lo inet loopback
# The primary network interface
auto eth0.100
iface eth0.100 inet static
address 192.168.42.11
netmask 255.255.255.240
gateway 192.168.42.1
dns-nameservers 8.8.8.8 8.8.4.4
dns-domain lab.example.org
# Public network
auto cloudbr0
iface cloudbr0 inet manual
bridge_ports eth0.200
bridge_fd 5
bridge_stp off
bridge_maxwait 1
# Private network
auto cloudbr1
iface cloudbr1 inet manual
bridge_ports eth0.300
bridge_fd 5
bridge_stp off
bridge_maxwait 1
配置完成之后重启网络,通过重启检查一切是否正常。
警告
在发生配置错误和网络故障的时,请确保可以能通过其他方式例如IPMI或ILO连接到服务器。
配置使用OpenVswitch网络¶
警告
本章节非常重要,请务必彻底理解。
为了转发流量到实例,至少需要两个桥接网络: public 和 private。
By default these bridges are called cloudbr0 and cloudbr1, but you do have to make sure they are available on each hypervisor.
最重要的因素是所有hypervisors上的配置要保持一致。
准备¶
将系统自带的网络桥接模块加入黑名单,确保该模块不会与openvswitch模块冲突。请参阅你所使用发行版的modprobe文档并找到黑名单。确保该模块不会在重启时自动加载或在下一操作步骤之前卸载该桥接模块。
以下网络配置依赖ifup-ovs和ifdown-ovs脚本,安装openvswitch后会提供该脚本。安装路径为位/etc/sysconfig/network-scripts/。
网络示例¶
配置网络有很多方法。在基本网络模式中你应该拥有2个 (V)LAN,一个用于管理网络,一个用于公共网络。
假设hypervisor中的网卡(eth0)有3个VLAN标签:
VLAN 100 作为hypervisor的管理网络
- VLAN 200 for public network of the instances (cloudbr0)
VLAN 300 作为实例的专用网络 (cloudbr1)
在VLAN 100 中,配置Hypervisor的IP为 192.168.42.11/24,网关为192.168.42.1
注解
Hypervisor与管理服务器不需要在同一个子网!
配置网络桥接¶
如何配置这些文件取决于你使用的发行版本,在下面的内容中会提供RHEL/CentOS下的示例。
注解
本章节的目标是设置三个名为’mgmt0’, ‘cloudbr0’和’cloudbr1’ 桥接网络。这仅仅是指导性的,实际情况还要取决于你的网络状况。
使用ovs-vsctl命令创建基于OpenVswitch的网络接口。该命令将配置此接口并将信息保存在OpenVswitch数据库中。
首先我们创建一个连接至eth0接口的主桥接。然后我们创建三个虚拟桥接,每个桥接都连接指定的VLAN。
# ovs-vsctl add-br cloudbr
# ovs-vsctl add-port cloudbr eth0
# ovs-vsctl set port cloudbr trunks=100,200,300
# ovs-vsctl add-br mgmt0 cloudbr 100
# ovs-vsctl add-br cloudbr0 cloudbr 200
# ovs-vsctl add-br cloudbr1 cloudbr 300
所需的安装包在安装openvswitch和libvirt的时就已经安装,继续配置网络。
首先配置eth0:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
确保内容如下所示:
DEVICE=eth0
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
必须将基础桥接配置为trunk模式。
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr
DEVICE=cloudbr
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
DEVICETYPE=ovs
TYPE=OVSBridge
现在对三个VLAN桥接进行配置:
vi /etc/sysconfig/network-scripts/ifcfg-mgmt0
DEVICE=mgmt0
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=static
DEVICETYPE=ovs
TYPE=OVSBridge
IPADDR=192.168.42.11
GATEWAY=192.168.42.1
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0
DEVICE=cloudbr0
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
DEVICETYPE=ovs
TYPE=OVSBridge
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr1
DEVICE=cloudbr1
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=OVSBridge
DEVICETYPE=ovs
配置完成之后重启网络,通过重启检查一切是否正常。
警告
在发生配置错误和网络故障的时,请确保可以能通过其他方式例如IPMI或ILO连接到服务器。
配置防火墙¶
hypervisor之间和hypervisor与管理服务器之间要能够通讯。
为了达到这个目的,我们需要开通以下TCP端口(如果使用防火墙):
- 22 (SSH)
- 1798
- 16509 (libvirt)
5900 - 6100 (VNC 控制台)
49152 - 49216 (libvirt在线迁移)
如何打开这些端口取决于你使用的发行版本。在RHEL/CentOS 及Ubuntu中的示例如下。
在RHEL/CentOS中打开端口¶
RHEL 及 CentOS使用iptables作为防火墙,执行以下iptables命令来开启端口:
$ iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT
这些iptables配置并不会持久保存,重启之后将会消失,我们必须手动保存这些配置。
$ iptables-save > /etc/sysconfig/iptables
在Ubuntu中打开端口:¶
Ubuntu中的默认防火墙是UFW(Uncomplicated FireWall),使用Python围绕iptables进行包装。
要打开所需端口,请执行以下命令:
$ ufw allow proto tcp from any to any port 22
$ ufw allow proto tcp from any to any port 1798
$ ufw allow proto tcp from any to any port 16509
$ ufw allow proto tcp from any to any port 5900:6100
$ ufw allow proto tcp from any to any port 49152:49216
注解
默认情况下,Ubuntu中并未启用UFW。在关闭情况下执行这些命令并不能启用防火墙。
Hypervisor对主存储的支持¶
下表显示了针对不同Hypervisors的存储选项和参数。
主存储类型 |
vSphere | XenServer | KVM | Hyper-V |
---|---|---|---|---|
**磁盘、模板和快照的格式** |
VMDK | VHD | QCOW2 | VHD |
支持iSCSI |
VMFS | CLVM | 支持,通过Shared Mountpoint |
不支持 |
支持FC |
VMFS | 支持,通过已有的SR |
支持,通过Shared Mountpoint |
不支持 |
支持NFS |
支持 |
支持 |
支持 |
不支持 |
支持本地存储 |
支持 |
支持 |
支持 |
支持 |
存储超配 |
NFS 和 iSCSI |
NFS | NFS | 不支持 |
SMB/CIFS | 不支持 |
不支持 |
不支持 |
支持 |
XenServer通过在iSCSI和FC卷上使用集群LVM系统来存储VM镜像,并且不支持存储超配。尽管存储本身支持自动精简配置。不过CloudStack仍然支持在有自动精简配置的存储卷上使用存储超配。
KVM支持 “Shared Mountpoint”存储。Shared Mountpoint是群集中每个服务器本地文件系统中的一个路径。群集所有主机中的该路径必须一致,比如/mnt/primary1。并假设Shared Mountpoint是一个集群文件系统如OCFS2。在这种情况下,CloudStack不会把它当做NFS存储去尝试挂载或卸载。CloudStack需要管理员确保该存储是可用的。
在NFS存储中,CloudStack管理超配。这种情况下,使用全局配置参数storage.overprovisioning.factor来控制超配的范围。且不受hyperviso类型约束。
在vSphere, XenServer和KVM中,本地存储是一个可选项。当选择了使用本地存储,所有主机会自动创建本地存储池。想要系统虚拟机 (例如虚拟路由器)使用本地存储,请设置全局配置参数system.vm.use.local.storage为true.
CloudStack支持在一个群集内有多个主存储池。比如,使用2个NFS服务器提供主存储。或原有的1个iSCSI LUN达到一定容量时再添加第二个iSCSI LUN。
为CloudStack安装Citrix XenServer¶
如果你想用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
如果你想使用以前装的某台主机,你必须重新安装Citrix XenServer.
必须支持HVM(Intel-VT或者AMD-V)
确保安装了所有系统补丁供应商提供的所有系统补丁。请随时关注供应商的技术支持渠道,一旦发布补丁,请尽快打上补丁。CloudStack不会跟踪或提醒你安装这些程序。安装最新的补丁对主机至关重要。虚拟化供应商可能不会对过期的系统提供技术支持。
集群中的主机必须是相同架构。CPU的型号、数量和功能参数必须相同。
必须支持HVM(BIOS中要打开Intel-VT或者AMD-V)
64位x86 CPU(多核性能更佳)
硬件虚拟化支持
4GB内存
36GB本地磁盘空间
至少一块网卡
静态分配的IP
在部署CloudStack时,Hypervisor主机不能运行任何虚拟机
警告
缺乏最新补丁更新可能会导致数据和虚拟机丢失。
XenServer安装步骤¶
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。同一提供点中的所有主机时间必须相同。
安装NTP。
# yum install ntp
编辑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
重启NTP客户端。
# service ntpd restart
确保机器重启之后NTP会自动启动。
# chkconfig ntpd on
安装 CloudStack XenServer 支持包(CSP)¶
(可选)
要在XenServer上启用安全组、弹性负载均衡和弹性IP,请下载安装CloudStack XenServer支持包(CSP)。安装完XenServer之后,在每台XenServer主机上执行下列步骤。
请从下列链接之一下载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
解压文件:
# tar xf xenserver-cloud-supp.tgz
执行下列脚本:
# xe-install-supplemental-pack xenserver-cloud-supp.iso
如果XenServer主机所在的区域使用的是基本网络模式 ,请禁用Open vSwitch (OVS):
# xe-switch-network-backend bridge
操作完成之后重启主机。
现在可以在CloudStack中添加XenServer。
为XenServer配置主存储¶
CloudStack原生支持NFS,iSCSI和本地存储。如果使用其中的一种存储类型,则不需要创建XenServer存储库(“SR”)。
但是,如果你想使用其他技术的存储,如FC存储,你必须自行设置SR。请按以下步骤操作来设置SR。如果你要设置的主机存在于XenServer池中,请在master主机上执行这些操作。如果是单台节点主机,则在该XenServer主机上操作即可。
通过光纤通道将集群中的所有主机连接至光纤存储设备
重新扫描SCSI总线。使用下列命令或者在XenCenter中使用HBA rescan按钮来完成扫描。
# scsi-rescan
在所有主机上重复步骤2.
检查确保已经识别到新的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
在所有主机上重复步骤4
在存储服务器中,运行下列命令获取新添加SR的唯一ID标识。
# uuidgen
输出结果如下所示,指定的ID不同:
e6849e96-86c3-4f2c-8fcc-350cc711be3d
创建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
使用下面的命令为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)。
(可选)如果想在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环境之前按照下面的流程配置每个主机。
运行xe network-list,查找公共网络。通常它的名字就是public。找到之后记录UUID。可以称之为<UUID-Public>。
运行以下命令。
# xe network-param-set name-label=cloud-public uuid=<UUID-Public>
XenServer配置多个来宾网络(可选)¶
CloudStack支持在XenServer上使用多个来宾网络。在XenServer中为每个网络都被分配名称标签。例如,你可能有两个名称分别为”cloud-guest”和”cloud-guest2”的网络。在配置好管理服务器并且运行后,你必须使用这些标签将这些网络添加到CloudStack中,以便CloudStack能够识别到这些网络。
在将主机添加到CloudStack之前,请在每个新主机上执行以下操作:
运行xe network-list,找出来宾网络。并记录UUID。可以称为<UUID-Guest>。
运行下面的命令, 替换你自己的名称标签和UUID.
# xe network-param-set name-label=<cloud-guestN> uuid=<UUID-Guest>
对每个额外的来宾网络都重复这些步骤,注意每次要使用不同的名称标签和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)。
找到想要绑定在一起的物理网卡。
# 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。
为该绑定创建一个新的网络。例如,一个名为“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)。
找到想要绑定在一起的物理网卡。
#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。
为网卡绑定创建一个新的网络。比如,一个名为”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脚本。此脚本将配置群集中所有主机的网卡绑定。
将管理服务器中/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/cloud-setup-bonding.sh拷贝到master主机中并确认该脚本可执行。
运行脚本:
# ./cloud-setup-bonding.sh
现在,群集内所有主机的网卡绑定都已配置正确。
升级XenServer版本¶
本章节介绍了如何升级CloudStack环境中的XenServer。实际升级的操作在XenServer文档中有详细描述,但是在升级前后有些额外的步骤必须执行。
注解
确保硬件可以被新版本XenServer支持。
升级XenServer:
升级数据库。在管理服务器节点上:
备份数据库:
# mysqldump --user=root --databases cloud > cloud.backup.sql # mysqldump --user=root --databases cloud_usage > cloud_usage.backup.sql
需要更改升级后的主机中虚拟机的操作系统类型。
如果是从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,需完成以上所有操作。
重启管理服务和Usage服务. 只需为所有的集群做一次这样的操作。
# service cloudstack-management start # service cloudstack-usage start
在CloudStack中断开XenServer群集连接。
使用admin账户登录CloudStack管理界面。
导航至XenServer群集,点击操作-取消管理。
查看群集状态直到显示未受管理。
登录到群集中的任意一台主机,运行下面的命令清除VLAN信息:
# . /opt/xensource/bin/cloud-clean-vlan.sh
仍旧在这台已经登录的主机中,运行下面的升级准备脚本:
# /opt/xensource/bin/cloud-prepare-upgrade.sh
故障排除:如果看到 “can’t eject CD,” 错误,请登录到虚拟机将光盘卸载,并重新运行脚本。
升级群集中所有的XenServer主机。首先升级master节点。
将该主机上的所有虚拟机动态迁移到其他主机。请参照管理指南了解动态迁移指导。
故障排除:迁移虚拟机时可能会遇到下面的错误:
[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
重启主机。
要升级更新版本的XenServer。请执行XenServer文档中的步骤。
在升级完成之后,将下列文件从管理服务器复制到这台主机,文件所在路径如下:
复制管理服务器的文件
复制到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 执行下列脚本:
# /opt/xensource/bin/setupxenserver.sh
故障排除:如果看到下面的错误信息,可以忽略它。
mv: cannot stat `/etc/cron.daily/logrotate`: No such file or directory
将XenServer主机连接至存储库(物理的块设备):
# for pbd in `xe pbd-list currently-attached=false| grep ^uuid | awk '{print $NF}'`; do xe pbd-plug uuid=$pbd ; done
注解
如果添加一台主机到这个XenServer资源池中,你必须将这台主机上的所有的虚机迁移到其他主机,然后将这台主机从原来的XenServer资源池中移除。
重复这些步骤,将每台主机都升级到相同的XenServer版本。
在XenServer群集中的一台主机上运行下面命令来清除主机标签:
# for host in $(xe host-list | grep ^uuid | awk '{print $NF}') ; do xe host-param-clear uuid=$host param-name=tags; done;
注解
当复制和粘贴命令时,请确保没有多余的换行符,因为一些文档查看器可能会在复制时加上换行符。
在CloudStack中重新连接XenServer群集。
使用admin账户登录CloudStack管理界面。
在XenServer群集导航页中,点击操作-管理。
查看状态以确保所有的主机都恢复正常.
当所有的主机都是运行状态后, 在集群中的一台主机上运行下列的命令:
# /opt/xensource/bin/cloud-clean-vlan.sh
为CloudStack安装Hyper-V¶
如果你想使用 Hyper-V hypervisor来运行虚拟机,请在你的云环境中安装Hyper-V。本章节指导不会复制Hyper-V安装文档中的内容。它提供了让Hyper-V与CloudStack协同工作的一些特有的步骤。
Hyper-V主机的系统要求¶
Hyper-V主机所支持的操作系统¶
- Windows Server 2012 R2 Standard
- Windows Server 2012 R2 Datacenter
- Hyper-V 2012 R2
Hyper-V主机的最低要求¶
支持硬件辅助虚拟化的1.4 GHz 64-bit CPU
800MB内存
32GB本地磁盘空间
Gigabit (10/100/1000baseT)网卡
支持的存储¶
主存储:SMB v3,本地存储
辅助存储:SMB
Hyper-V的准备工作清单¶
为了能顺利地安装,在安装之前请收集以下信息:
Hyper-V Requiremen ts | 值 |
描述 |
---|---|---|
服务器角色 |
Hyper-V | After the Windows Server 2012 R2 installation, ensure that Hyper-V is selected from Server Roles. For more information, see Installing Hyper-V. |
共享位置 |
New folders in the /Share director y | 确保为主存储和辅助存储创建了文件夹。SMB共享和主机应该在同一个域内。 If you are using Windows SMB share, the location of the file share for the Hyper-V deployment will be the new folder created in the \Shares on the selected volume. You can create sub-folders for both PRODUCT Primary and Secondary storage within the share location. When you select the profile for the file shares, ensure that you select SMB Share -Applications. This creates the file shares with settings appropriate for Hyper-V. |
域和主机 |
主机都应该加入AD域。 |
|
Hyper-V用户 |
完全控制权限 |
SMB文件共享有完全控制权限 |
虚拟交换机 |
If you are using Hyper-V 2012 R2, manually create an external virtual switch before adding the host to PRODUCT. If the Hyper-V host is added to the Hyper-V manager, select the host, then click Virtual Switch Manager, then New Virtual Switch. In the External Network, select the desired NIC adapter and click Apply. 如果使用Windows 2012 R2,虚拟交换机会自动创建。 |
|
虚拟交换机名称 |
Take a note of the name of the virtual switch. You need to specify that when configuring PRODUCT physical network labels. | |
Hyper-V 域用户 |
|
|
迁移 |
Migratio n | 启用迁移。 |
迁移 |
Delegati on | 如果想使用在线迁移,请启用指派。请在使用在线迁移的主机上启用下列服务:CIFS和Microsoft Virtual System Migration Service。 |
迁移 |
Kerberos | 为在线迁移启用Kerberos。 |
拨号访问网络权限 |
允许访问 |
允许拨号连接访问 |
Hyper-V安装步骤¶
下载操作系统 Windows Server 2012 R2 。
按照 Install and Deploy Windows Server 2012 R2 安装操作系统。
安装后,请确保安装Hyper-V角色。
如果当前环境中没有使用AD域,请部署AD域并添加域用户。
如果存在AD域,确保所有的Hyper-V主机都加入了域。
添加域用户到下列Hyper-V主机的用户组中: Hyper-V Administrators和Local Administrators。
在Hyper-V主机中安装CloudStack代理¶
Hyper-V代理帮助CloudStack操作Hyper-V主机。代理与管理服务器通讯并控制主机上的所有实例。为了让主机与CloudStack之间成功的进行交互,每个Hyper-V主机必须安装Hyper-V代理。Hyper-V代理作为Windows的系统服务运行。按照下里的步骤在每台主机上安装Agent。
CloudStack管理服务器使用HTTPS与Hyper-V代理通讯。为了使管理服务器与主机之间能够使用加密通讯,请在8250端口上绑定自签名证书。
注解
代理的安装程序会自动执行这个操作。在代理的安装过程中可以不选择该选项,它可以在步骤1中手动操作。
为8250端口创建并添加一个自签名证书:
创建一个自签名证书:
# New-SelfSignedCertificate -DnsName apachecloudstack -CertStoreLocation Cert:\LocalMachine\My
该命令创建一个自签名证书并将添加到
LocalMachine\My
证书区域。将创建好的证书绑定到https通信的8250端口:
netsh http add sslcert ipport=0.0.0.0:8250 certhash=<thumbprint> appid="{727beb1c-6e7c-49b2-8fbd-f03dbe481b08}"
Thumbprint是你创建证书的指纹。
按照 `编辑 CloudStack Hyper-V 代理 <https://cwiki.apache.org/confluence/display/CLOUDSTACK/Creating+Hyperv+Agent+Installer>`__编译CloudStack代理程序。
以管理员权限运行安装。
在对话框中输入Hyper-V管理员凭证。
当代理安装完成之后,代理已经作为系统服务启动了。
为Hyper-V配置物理网络¶
需要先对主机连线以及网卡绑定哪种流量做出规划。默认情况下,CloudStack将正在被使用的设备作为默认路由。
如果你使用Hyper-V 2012 R2,在将主机添加到CloudStack中之前,请手动创建一个外部网络虚拟交换机。如果Hyper-V管理器已经添加了Hyper-V主机,选择该主机,然后点击虚拟交换机管理器,新建虚拟交换机。在外部网络,选择所需的网卡然后点击应用。
如果使用Windows 2012 R2,虚拟交换机会自动创建。
为Hyper-V准备存储(可选)¶
CloudStack允许管理员使用SMB共享作为主存储和辅助存储。
创建一个使用SMB v3协议的SMB存储
更多信息,请参考 部署基于SMB的Hyper-V.
同样可以使用Windows创建并发布SMB共享。在Windows Server 2012 R2安装完成之后,在服务器角色中选择安装文件和存储服务以便创建SMB文件共享。更多信息,请参考 通过使用服务器管理器 (SM) 创建 SMB 文件共享系统。
在AD域中添加SMB共享。
SMB共享和通过CloudStack管理的主机必须在同一个域内。管理服务器可以使用域用户凭证访问存储。
在CloudStack中添加存储时,请确保提供的域和凭证是正确的。确保用户可以通过管理服务器访问存储。
VMware vSphere 安装和配置¶
如果计划使用VMware vSphere平台运行虚拟机,请在云中安装vSphere主机。
vSphere主机的系统要求¶
软件要求:¶
vSphere和vCenter版本,4.1或5.0。
建议使用vSphere标准版。但是VMware用户需要考虑vSphere授权对CPU的限制。请参考 http://www.vmware.com/files/pdf/vsphere_pricing.pdf 并与销售代表讨论。
建议使用vCenter标准版。
请确保安装了hypervisor供应商发布的所有补丁程序。随时关注供应商支持信息,一旦发布补丁就立即安装。CloudStack不会跟踪或提醒你安装这些补丁。安装最新的补丁程序对主机至关重要。hypervisor供应商可能不会对过期的系统提供技术支持。
警告
安装一切必要的补丁程序。缺乏最新补丁程序可能会导致数据和虚拟机丢失。
硬件要求:¶
主机必须通过vSphere的兼容性认证。请查看VMware硬件兼容性指南 http://www.vmware.com/resources/compatibility/search.php.
所有主机必须为64位架构并且支持HVM(启用Intel-VT或AMD-V)。
同一群集中的所有节点必须为同一架构。CPU型号、数量和功能参数必须相同。
64位x86 CPU(多核性能更佳)
硬件虚拟化支持
4GB内存
36GB本地磁盘空间
至少一块网卡
静态分配的IP
vCenter服务器的系统要求:¶
处理器 - 2颗2.0GHz的Intel或AMD x86 CPUs, 或更高的处理器。如果数据库跟VC在同一台服务器中,可能会需要更高的处理器。
内存 - 3GB。如果数据库跟VC在同一台服务器中,可能会需要更多内存。
磁盘空间 - 2GB。如果数据库跟VC在同一台服务器中,可能会需要更多的磁盘空间。
Microsoft SQL Server 2005 Express磁盘要求。最多需要 2 GB 的可用磁盘空间解压安装文件。
网络 - 1Gbit或者10Gbit。
更多信息,请参考 “vCenter Server 和 vSphere Client 硬件要求”。
其他要求:¶
必须安装VMware vCenter Standard 4.1或5.0版本,并且能够管理vSphere主机。
必须配置vCenter使用443端口与CloudStack管理服务器通讯。
如果你计划利用之前安装的主机,那么必须重新安装VMware ESXi。
CloudStack要求VMwarevSphere 4.1或者5.0版本,不支持VMware vSphere 4.0版本。
所有主机必须为64位架构并且支持HVM(启用Intel-VT或AMD-V)。同一群集中的所有节点必须为同一架构。CPU型号、数量和功能参数必须相同。
CloudStack 管理网络不能使用独立的虚拟网络。CloudStack使用vCenter的管理网络,并继承vCenter管理网络的配置。 可参考 配置vCenter管理网络.
CloudStack仅支持ESXi,不支持ESX。
所有用于CloudStack的资源只能被CloudStack使用。CloudStack无法与其他管理控制台共享ESXi实例或存储。请不要与其他不受CloudStack管理的ESXi共享同一个存储卷。
将所有目标ESXi hypervisors加入vCenter中独立数据中心之下的群集。
将被CloudStack管理的群集中不应该存在任何VM。且不应该在CloudStack管理的群集中运行任何管理服务器、vCenter或者VM。为CloudStack创建一个独立的群集,并确保群集中不存在VM。
所有必需的vlan必须通过所有网络交换机端口的trunk模式连接到ESXi hypervisor主机。其中包含管理,存储,vMotion和来宾等VLANs。CloudStack管理一段连续的来宾VLANs范围(高级网络;请参阅 网络设置) 。
VMware的准备工作清单¶
为了能顺利地安装,在安装之前请收集以下信息:
vCenter检查清单 中列出的信息
VMware网络清单 中列出的信息
vCenter检查清单¶
你需要关于vCenter的下列信息:
vCenter要求 |
备注 |
---|---|
vCenter用户 |
用户必须拥有管理员权限。 |
vCenter用户的密码 |
上述用户的密码。 |
vCenter数据库名称 |
数据中心名称 |
vCenter群集名称 |
群集名称 |
VMware网络清单¶
你需要以下关于VLAN的信息。
VLAN信息 |
备注 |
---|---|
ESXi VLAN | 全部ESXi hypervisors主机所在的VLAN。 |
ESXi VLAN IP地址 |
ESXi VLAN的IP地址范围。每个虚拟路由器使用该范围内的一个IP。 |
ESXi VLAN网关IP |
|
ESXi VLAN子网掩码 |
|
管理服务器VLAN |
CloudStack管理服务器所在的VLAN。 |
公共网络VLAN |
公共网络的VLAN |
公共网络VLAN的网关 |
|
公共网络VLAN的子网掩码 |
|
公共VLAN IP地址范围 |
CloudStack使用的公共网络IP范围。CloudStack中的虚拟路由器使用这些地址,用于路由专用流量至外部网络。 |
客户使用的VLAN范围 |
连续的不可路由的VLAN范围。每个用户会分配一个VLAN。 |
vSphere安装步骤¶
如果你还没用准备好安装介质,请在VMware网站下载和购买(https://www.vmware.com/tryvmware/index.php?p=vmware-vsphere&lp=1)并按照VMware vSphere安装指南安装。
安装过程中,执行下面几个章节描述的以下配置:
要求
可选项
ESXi主机安装
网卡绑定
配置主机的物理网络,虚拟交换机,vCenter管理网络和扩展的端口范围
存储多路径
准备iSCSI存储
在vCenter中配置集群并添加主机,或不使用集群,直接在vCenter中添加主机。
ESXi主机配置¶
所有ESXi主机都应该在BIOS中启用CPU硬件虚拟化支持。请注意,大多数服务器默认不启用该功能。
物理主机网络¶
您应该准备一个vSphere主机连接的规划。将主机添加至CloudStack之前,需要合理地配置网络。要配置ESXi主机,可以先用vClient将它作为独立主机添加到vCenter。当您在vCenter的导航树中看到该主机时,点击它,选择配置页。
在主机的配置标签页中,点击”硬件/网络”链接转到上图中的网络配置页。
配置虚拟交换机¶
默认情况下,系统会创建虚拟交换机vSwitch0。CloudStack要求云中所有ESXi主机中的虚拟交换机都使用相同的名字。如果你改变了默认虚拟交换机名称,那么你需要改变一个或多个CloudStack配置。
CloudStack允许你使用vCenter为每个ESXi主机配置三个独立的网络。CloudStack通过vSwitch的名称识别网络。允许配置的网络分别为公共网络(与公共互联网之间的流量),来宾网络(来宾-来宾流量)和管理网络(与管理服务器和存储之间的流量)。您可以设置3种网络使用默认的虚拟交换机,或创建1个/2个其他虚拟交换机来承载这些网络流量。
如果您想以这样的方式隔离流量,首先应按照vCenter的指南在vCenter中创建并配置虚拟交换机。请记录每种网络使用的虚拟交换机名称。您需要配置CloudStack使用这些虚拟交换机。
ESXi主机的虚拟交换机默认有56个端口。我们建议设为最大允许数4088。要设置该值,请点击虚拟交换机的“属性…”链接(注意,不是网络的属性)。
在vSwitch属性对话框中,选择vSwitch,点击“编辑”,您将看到以下对话框:
在该对话框中,您可以修改端口数量。修改完后,为使配置生效,需要重启ESXi主机。
配置vCenter管理网络¶
在vSwith属性对话框中,您可以看到一个vCenter管理网络。CloudStack的管理网络也使用该网络。CloudStack要求正确配置vCenter的管理网络。在对话框中点击管理网络,然后点击编辑。
请确保配置以下设置:
VLAN ID设置为期望的ID
启用vMotion。
启用管理流量。
如果ESXi主机具有多个VMKernel端口,并且ESXi没有使用默认的“Management Network”作为管理网络名称,您必须按照以下指南配置管理网络端口组,以便CloudStack可以发现管理网络。
在所有ESXi主机上使用同一个管理网络端口组名称。
在CloudStack管理界面中,点击配置-全局设置,修改vmware.management.portgroup为ESXi主机管理网络的标签。
为CloudStack控制台代理扩展端口范围¶
(仅适用于VMware vSphere 4.x)
为使控制台代理可以和主机一起工作,您需要扩展主机的防火墙端口范围。这是为了使控制台代理可以访问VMware的VM。为扩展端口范围,请登录到每台主机的VMware ESX服务控制台,然后执行以下命令:
esxcfg-firewall -o 59000-60000,tcp,in,vncextras
esxcfg-firewall -o 59000-60000,tcp,out,vncextras
配置vSphere的网卡绑定¶
vSphere主机的网卡绑定可以按照vSphere安装指南完成。
配置vSphere群集使用Nexus 1000v虚拟交换机¶
CloudStack支持在VMware vSphere环境中使用Cisco Nexus 1000v dvSwitch (分布式虚拟交换机)。本章节能帮助你配置vSphere群集使用Nexus 1000v虚拟交换机。关于创建vSphere群集的更多信息,请参考 “VMware vSphere安装和配置”
关于Cisco Nexus 1000v分布式虚拟交换机¶
Cisco Nexus 1000V虚拟交换机是一个内置软件程序的虚拟机。它能跨越多个运行VMware ESXi 4.0或更高版本的主机部署。Nexus虚拟交换机包括两个组件:Virtual Supervisor Module (VSM)和 Virtual Ethernet Module (VEM)。VSM是一个管理交换机的虚拟设备。它单独控制多个VEM。VSM安装在每台VMware ESXi服务器当中提供包转发功能。它为每个虚拟机提供单独的交换机接口。VSM-VEM架构与物理交换机的管理机制(单独或者高可用模式)和多线卡架构类似。
Nexus 1000v交换机使用vEthernet端口配置文件为虚拟机提供简单的网络。它有两种类型的端口配置文件:Ethernet端口配置文件和vEthernet端口配置文件。Ethernet端口配置文件应用到物理上联端口-ESXi服务器上面的物理网卡的端口。vEthernet端口配置文件关联到ESXi服务器上运行的虚拟机的虚拟网卡。端口配置文件可以帮助网络管理员快速的为其他虚机定义同样的网络策略。VSM创建的Ethernet端口策略在vCenter服务器上显示为端口组。
先决条件和指南¶
本章节探讨了在CloudStack中使用Nexus虚拟交换机的先决条件与指南。在配置Nexus虚拟交换机之前,请确保你的系统符合下列条件:
在vCenter中配置ESXi(ESXi 4.1或更高)群集。
CloudStack只能管理存在当前vCenter数据中心管理之下的每一个群集。
Cisco Nexus 1000v虚拟交换机安装在vCenter数据中心所包含的群集主机。这将确保CloudStack不必处理跨现存虚拟交换机之间的虚拟网卡或网络的动态迁移。如何安装Nexus 1000v VSM和VEM 模块,请参考 Cisco Nexus 1000V Installation and Upgrade Guide。
Nexus 1000v VSM不能部署在由CloudStack管理的vSphere主机上。
当每个VSM实例的VEM模块达到最大数量时,需要在添加额外的VSM实例之前引入更多的ESXi主机。每个VSM实例的VEM模块数量限制为64个。
CloudStack期望ESXi主机的管理网络被配置在标准的vSwitch之上并且在标准的vSwitch中搜索该网络。因此,确保在配置期间不要把管理网络迁移到Nexus 1000v上。
所有信息在ref:`nexus-vswift-preconf`中:
Nexus 1000v虚拟交换机预配置¶
要顺利配置 Nexus 1000v交换机,请在开始之前收集下列信息:
vCenter凭证
Nexus 1000v VSM IP地址
Nexus 1000v VSM 凭证
以太网端口配置文件名称
需要vCenter以下信息:
Nexus vSwitch要求 |
值 |
备注 |
---|---|---|
vCenter IP | vCenter IP地址 |
|
HTTPS端口号 |
443 | 默认配置使用443端口;如果需要,可以更改为其他端口。 |
vCenter用户ID |
拥有管理员权限的vCenter用户。在CloudStack中配置虚拟交换时需要提供vCenter用户ID。 |
|
vCenter 密码 |
上述vCenter用户的密码。在CloudStack中配置虚拟交换机时需要提供vCenter用户密码。 |
打开CloudStack管理界面,请在Nexus dvSwitchde 详情标签页中的Nexus 配置网络界面指定下列信息:
- 控制端口组VALN ID
控制端口组的VLAN ID。控制VLAN用于VSM与VEM之间通讯。
- 管理端口组VLAN ID
管理端口组的VLAN ID。对应管理VLAN接口mgmt0,用于设置和维护VSM与VMware vCenter服务器之间的连接。
- 数据端口组VLAN ID
数据端口组的 VLAN ID。数据VLAN转发从VEM到VSM相关的数据包。
注解
用于控制,数据和管理端口组可以在同一VLAN。
更多信息,请参考 Cisco Nexus 1000V 入门指南.
你需要下列的VSM配置参数:
- 管理员用户名和密码
管理员用户名和密码用于连接VSM appliance。当配置Nexus虚拟交换机时,必须指定这些凭证。
- 管理 IP
VSM appliance的IP地址。 当配置Nexus虚拟交换机时在虚拟交换机的IP地址区域输入的IP地址。
- SSL
应该设置为启用。总是启用SSL。在VSM安装期间通常会启用SSH功能。尽管如此仍需检查是否能够使用SSH连接到VSM,如果不能无法连接,CloudStack到VSM的连接会失败。
无论创建简单或者高级区域,确保你总是在安装完VSM之后,创建区域之前,创建一个VSM的Ethernet配置文件。
创建Ethernet端口配置文件用于表示物理网络或高级区域配置中trunk所有的VLANs网络,VLANs包括来宾网VLANs,本征VLAN以及VSM的数据/控制/管理VLANs。
为基础区域配置的Ethernet端口配置文件不会trunk来宾VLANs,因为在基础区域中,来宾VMs无法通过它们的网络接口获得所属的VLANs。
在Nexus 1000v虚拟交换机上配置的以太网端口配置文件,不应该使用在它的VLANS系统设置中,或者使用在其他任何VLANS配置以及打算使用在CloudStack环境中的虚拟机或者虚拟机资源的配置。
你无须创建任何vEthernet端口配置文件-CloudStack会在VM部署期间创建。
请确保你为每种CloudStack流量类型创建了所需的端口配置文件,如管理流量,来宾流量,存储流量和公共流量。在区域创建期间配置的物理网络跟Ethernet应该是一一对应的关系。
关于创建端口配置文件的更多信息,请参考 Cisco Nexus 1000V 端口配置指南。
分配ESXi主机上的对应每个物理网络的网卡适配器到端口配置文件。在vCenter群集中的每个ESXi主机上,观察分配到每个端口配置文件的物理网络并记下配置文件的名字。在创建zone期间,当你配置物理网络的时候,这个映射信息能帮助你。这些Ethernet端口配置文件的名字就是随后你在配置zone的时候,配置物理网络时所要输入的不同流量对应的VMware流量标签。配置物理网络所需的更多信息,请参考 “Configuring a vSphere Cluster with Nexus 1000v Virtual Switch”。
决定CloudStack所使用的公共VLAN,系统VLAN和来宾VLAN。确保你添加他们到端口配置文件数据库。对应每个物理网络,为端口配置文件添加VLAN范围。在VSM命令提示符下,运行 switchport trunk allowed vlan<range>命令为端口配置文件添加VLAN范围。
例如:
switchport trunk allowed vlan 1,140-147,196-203
在这个示例下,添加的VLANs是1,140-147和196-203
你同样在该交换机中添加所有的公共和管理VLANs或VLAN范围。这个范围是你在区域中指定的VLAN范围。
注解
在你运行vlan命令之前,确保Nexus 1000v虚拟交换机中启用了配置模式。
例如:
如果你想在交换机中使用VLAN 200,运行下面的命令:
vlan 200
如果你想在交换机中使用VLAN范围1350-1750,请运行下面的命令:
vlan 1350-1750
参考特定产品版本的Cisco Nexus 1000V 命令参考。
在CloudStack中启用Nexus虚拟交换机。¶
为了使CloudStack启用部署Nexus,你必须在CloudStack UI中全局设置页面设置vmware.use.nexus.vswitch参数为true。只有这个参数设置为 “true”并且重启了管理服务器,你才可以看见Nexus虚拟交换机的相关页面,CloudStack在AddTrafficTypeCmd, UpdateTrafficTypeCmd和 AddClusterCmd API的调用中会忽略Nexus虚拟交换机的指定参数。
除非CloudStack全局配置中的”vmware.use.nexus.vswitch”设置为”true”,否则CloudStack会默认使用VMware标准vSwitch。在本版本中,CloudStack不支持在标准vSwitch和Nexus 1000v虚拟交换机的混合环境中配置虚拟网络。只能支持单一的标准vSwitch或Nexus 1000v虚拟交换机部署。
在CloudStack中配置Nexus 1000v虚拟交换机¶
可以在创建区域时,通过添加必要的资源用于配置Nexus dvSwitch。
区域创建完成后,如果你想在区域中创建其他同样使用Nexus 1000v虚拟交换机的群集时,使用添加群集选项。关于创建群集的更多信息,请参见 “添加群集: vSphere”。
在所有的情况下,配置Nexus虚拟交换机时必须指定下列参数:
参数 |
描述 |
---|---|
群集名称 |
输入在vCenter中创建的群集名称。比如,”cloud.cluster”。 |
vCenter 主机 |
输入已经部署了Nexus虚拟交换机的vCenter主机名或IP。 |
vCenter用户名 |
输入CloudStack连接到vCenter所使用的用户名。这个用户必须拥有所有管理员权限。 |
vCenter 密码 |
输入上面用户的密码。 |
vCenter数据中心 |
输入群集所属的vCenter数据中心名称。比如, “cloud.dc.VM”。 |
Nexus dvSwitch IP 地址 |
Nexus 1000v虚拟交换机VSM组件的IP地址。 |
Nexus dvSwitch 用户名 |
连接至VSM appliance的admin名称。 |
Nexus dvSwitch 密码 |
上面指定的admin用户所对应的密码。 |
移除Nexus虚拟交换机¶
在使用了Nexus虚拟交换机的vCenter数据中心中,确认你在对应的群集中删除了所有的主机。
使用管理员登录到CloudStack管理界面。
在左侧导航栏中,选择基础架构。
在基础架构页面,点击群集中的查看所有。
选择你想要移除虚拟交换机的群集。
在dvSwitch标签页中,点击虚拟交换机的名字。
在详细页面中,点击删除Nexus dvSwitch的图标。
在确认对话框中点击确定。
配置VMware数据中心使用VMware分布式虚拟交换机¶
CloudStack支持在VMware vSphere环境中为虚拟网络配置VMware vNetwork分布式交换机(VDS)。本章节能帮助你在CloudStack中配置VMware VDS。每个vCenter服务器实例最多支持128 VDS实例,每个VDS实例最多可以管理500台VMware服务器。
关于VMware分布式虚拟交换机¶
在VMware vCenter服务器中的VMware VDS聚合主机层面虚拟交换机 。各个主机层面的虚拟交换机被抽象处理成一个在数据中心层面上横跨多个主机的大型 VDS,通过一个集中的接口,使用集中配置、管理、监控你的整个数据中心。实际上,VDS可以看作是数据中心层面中一个整体的虚拟交换机,通过VMware vCenter服务器管理数据中心中大量的主机网络。在虚拟机跨多个主机移动时保持其网络运行时状态,支持嵌入式监控和集中式防火墙服务。VDS能与标准虚拟交换机和 Nexus 1000V虚拟交换机一起部署或者独立部署。
先决条件和指南¶
VMware VDS只支持CloudStack中的公共和来宾流量。
VMware VDS不支持每种流量类型使用多个VDS。如果一个用户有多个VDS交换机,那么来宾网络和公共网络只能各使用一个VDS。
在同一个zone中可以为每个群集添加任何类型的交换机。当在群集中添加不同类型的交换机时,流量标签会被群集级别的覆盖。
管理和存储网络不支持使用VDS。因此在这些网络中使用标准交换机。
当你移除来宾网络时,对应vCenter中的dv端口组不会被移除。你必须手动在vCenter中删除。
准备工作清单¶
为了顺利的配置VMware VDS,在开始之前,请牢记添加到数据中心中的VDS名称:
如下需要使用VDS名称:
在创建zone的过程中配置公共网络和来宾网络时,在编辑流量标签对话框中配置交换机名称。
在创建zone的过程中配置来宾网络和公共网络流量类型时,请确保你选择了VMware vNetwork Distributed Virtual Switch。
当添加一个启用了VDS的VMware群集时,则显示公共网络流量vSwitch类型区域。
当在zone中更新交换机类型时,流量标签所使用的交换机名称。
在最后一种情况下流量标签格式是[[“Name of vSwitch/dvSwitch/EthernetPortProfile”][,”VLAN ID”[,”vSwitch Type”]]]
流量标签可以使用如下值:
空字符串
- dvSwitch0
- dvSwitch0,200
- dvSwitch1,300,vmwaredvs
- myEthernetPortProfile,,nexusdvs
- dvSwitch0,,vmwaredvs
填写如下区域:
vCenter中 虚拟/分布式 虚拟交换机的名称。
默认值取决于虚拟交换机的类型:
vSwitch0:如果虚拟交换机的类型是VMware vNetwork标准虚拟交换机。
dvSwitch0:如果虚拟交换机类型为VMware vNetwork分布式虚拟交换机
epp0:如果虚拟交换机类型为Cisco Nexus 1000v分布式虚拟交换机
任何适用于这个流量的 VLAN ID
此时,该区域仅用于公共网络流量。来宾网络区域会被忽略并且留空。默认为空字符即假设特定流量类型不填加VLAN标签。
虚拟交换机类型。指定字符串。
合理且有效的值为vmwaredvs, vmwaresvs, nexusdvs。
vmwaresvs:表示VMware vNetwork 标准虚拟交换机
vmwaredvs:表示VMware vNetwork分布式虚拟交换机
nexusdvs:代表Cisco Nexus 1000v分布式虚拟交换机。
如果什么都没指定(留空),基于全局参数指定的值,区域层面默认使用虚拟交换机。
以下为全局配置参数:
vmware.use.dvswitch:设置为true则是在CloudStack部署时启用任意种类(VMware DVS和Cisco Nexus 1000v) 分布式交换机。如果设置为false,则CloudStack部署时使用的的虚拟交换机是标准虚拟交换机。
vmware.use.nexus.vswitch:如果vmware.use.dvswitch设置为false,则忽略该参数。设置为true则是部署CloudStack时启用Cisco Nexus 1000v分布式交换机。
在CloudStack中启用分布式虚拟交换机¶
在部署CloudStack时启用VDS,请在CloudStack管理界面中的全局设置页面中设置vmware.use.dvswitch parameter为true并重启管理服务器。只有启用了vmware.use.dvswitch参数,你才能在管理界面中指定VDS,并且CloudStack会忽略你指定的VDS-specific参数。另外,如果vmware.use.dvswitch参数的值为true且vmware.use.nexus.dvswitch参数的值为false,那么CloudStack中虚拟网络架构使用VDS。另外一个定义VDS配置的全局参数是vmware.ports.per.dvportgroup。它表示在VMware环境里每个VMware dvPortGroup中默认端口数量。默认是256。这个数值直接关系到你创建的来宾网络的数量。
CloudStack支持混合部署分布式虚拟交换机、标准虚拟交换机和Nexus 1000v虚拟交换机的虚拟网络。
在CloudStack中配置分布式虚拟交换机¶
在创建区域时需要添加必要的资源才能配置VDS。
另外在群集层面,使用添加群集选项,可以在已经存在并启用VDS的区域中创建附加群集。更多信息请参阅 “添加群集: vSphere”.
在所有情况下,配置VDS时必须指定下列参数:
参数描述 |
|
---|---|
群集名称 |
输入在vCenter中创建的群集名称。比如,”cloudcluster”。 |
vCenter 主机 |
输入已经部署VMware VDS的vCenter主机名称或者IP地址。 |
vCenter用户名 |
输入CloudStack连接到vCenter所使用的用户名。这个用户必须拥有所有管理员权限。 |
vCenter 密码 |
输入上面用户的密码。 |
vCenter数据中心 |
输入群集所属的vCenter数据中心名称。比如,”clouddcVM”。 |
替代公共流量 |
启用该选项时,整个区域中群集的公共流量将被替代。 |
公共流量虚拟交换机类型 |
在启用替代公共流量时该选项才会显示。选择VMware vNetwork Distributed Virtual Switch。如果全局设置中vmware.use.dvswitch参数为true,则默认选项为VMware vNetwork Distributed Virtual Switch。 |
公共流量虚拟交换机名称 |
用于公共流量的虚拟交换机名称。 |
替代来宾流量 |
启用该选项时,整个区域中群集的来宾流量将被替代。 |
来宾流量虚拟交换机类型 |
在启用替代来宾流量时该选项才会显示。选择VMware vNetwork Distributed Virtual Switch。如果全局设置中vmware.use.dvswitch参数为true,则默认选项为VMware vNetwork Distributed Virtual Switch。 |
来宾流量虚拟交换机名称 |
用于宾流量的虚拟交换机名称。 |
vSphere的存储准备(仅限iSCSI)¶
使用iSCSI需要在vCenter中做一些准备工作。您必须添加iSCSI目标并创建iSCSI数据存储。
如果使用NFS,请跳过本章节。
ESXi主机中启用iSCSI启动器¶
在vCenter中,点击主机/集群的配置,点击存储适配器。您将看到:
选择iSCSI软件适配器并点击属性。
点击配置...按钮。
勾选启用以便启用启动器。
点击 确定 保存。
创建iSCSI数据存储¶
现在您应该创建一个VMFS数据存储。请按照以下步骤:
选择主页/清单/数据存储。
右键点击数据中心节点。
选择添加数据存储...命令。
按照向导创建iSCSI数据存储。
该过程只需要在集群中的一台主机上执行,不需要在所有主机上执行。
vSphere多路径(可选)¶
vSphere的存储多路径可以根据vSphere的安装文档配置。
添加主机或配置集群(vSphere)¶
使用vCenter创建集群,向其中添加期望的主机。随后您可以将整个集群加入到Cloudstack中。(参考 “添加群集: vSphere”)。
为VMware vSphere主机安装补丁程序¶
在CloudStack中断开与VMware vSphere 群集的连接。应断开足够长的时间以便在主机上安装补丁程序。
使用admin账户登录CloudStack管理界面。
请参考 “登录用户界面”。
导航至VMware群集,点击操作-取消管理。
查看群集状态直到显示未受管理。
在集群中每个ESXi主机上执行以下操作:
将集群中每个ESXi都置为维护模式。
确保所有的VM已经迁移到群集中的其他主机。
如果群集中只有一台主机,关闭所有VMs再将主机置为维护模式。
在ESXi主机中应用补丁。
如果提示重启,请重启主机。
在主机上取消维护模式。
重新连接该集群到CloudStack:
使用admin账户登录CloudStack管理界面。
导航到VMware群集,点击操作-管理。
查看状态以确保所有的主机都恢复正常。所有主机都恢复正常可能需要几分钟时间。
或者,确认主机状态在数据库中得到正确同步和更新。
LXC安装和配置¶
LXC主机的系统要求¶
LXC要求Linux kernel 2.6.24开始引入的 cgroups功能。尽管不需要运行所有的发行版,但是建议下列的版本:
- CentOS / RHEL: 6.3
- Ubuntu: 12.04(.1)
LXC hypervisor 要求libvirt和Qemu的版本。无论使用哪种Linux发行版,请确保满足以下要求:
libvirt: 1.0.0或更高
Qemu/KVM: 1.0 或更高版本
CloudStack中的默认使用Linux本身的桥接(bridge模块)方式实现。也可选择在CloudStack中使用OpenVswitch,具体要求如下:
libvirt: 1.0.0或更高
openvswitch: 1.7.1或更高版本
此外,硬件要求如下:
同一集群中主机必须使用相同版本的Linux系统。
同一群集中的所有节点架构必须一致。CPU的型号、数量和功能参数必须相同。
必须支持HVM(Intel-VT或者AMD-V)
64位x86 CPU(多核性能更佳)
4GB内存
至少一块网卡
在部署CloudStack时,Hypervisor主机不能运行任何虚拟机
LXC安装概述¶
LXC没有任何本地系统VMs,而KVM需要运行系统VMs。意思为主机需要同时支持LXC和KVM。因此,大部分的安装和配置跟KVM的安装一样。本章节不会复述KVM的安装。这里我们只会给出使KVM与CloudStack协同工作的一些特有的步骤。
警告
在我们开始之前,请确保所有的主机都安装了最新的更新包。
警告
不建议在主机中运行与CloudStack无关的服务。
安装LXC主机步骤:
准备操作系统:
安装和配置libvirt
配置安全策略 (AppArmor 和 SELinux)
安装和配置Agent
准备操作系统:¶
主机的操作系统必须为运行CloudStack Agent和KVM实例做些准备。
使用root用户登录操作系统。
检查FQN完全合格/限定主机名。
$ hostname --fqdn
该命令会返回完全合格/限定主机名,例如”kvm1.lab.example.org”。如果没有,请编辑 /etc/hosts。
请确保主机能够访问互联网。
$ ping www.cloudstack.org
启用NTP服务以确保时间同步.
注解
NTP服务用来同步云中的服务器时间。时间不同步会带来意想不到的问题。
安装NTP
$ yum install ntp
$ apt-get install openntpd
在所有主机中重复上述步骤。
安装和配置Agent¶
CloudStack使用代理管理LXC实例。管理服务器与代理通信并控制主机中所有实例。
首先我们安装Agent:
在RHEL/CentOS上:
$ yum install cloudstack-agent
在Ubuntu上:
$ apt-get install cloudstack-agent
接下来更新代理配置。在 /etc/cloudstack/agent/agent.properties
中配置
设置代理运行在LXC模式下:
hypervisor.type=lxc
可选项:如果想使用直连网络(代替默认的桥接网络),配置如下行:
libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.DirectVifDriver
network.direct.source.mode=private
network.direct.device=eth0
现在主机已经为加入群集做好准备。后面的章节有介绍,请参阅 添加一个宿主机。强烈建议在添加主机之前阅读此部分内容。
安装和配置libvirt¶
CloudStack使用libvirt管理虚拟机。因此正确地配置libvirt至关重要。CloudStack-agent依赖于Libvirt,应提前安装完毕。
为了实现动态迁移libvirt需要监听不可靠的TCP连接。还要关闭libvirts尝试使用组播DNS进行广播。这些都可以在 /etc/libvirt/libvirtd.conf文件中进行配置。
设定下列参数:
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
除了在libvirtd.conf中打开”listen_tcp”以外,我们还必须修改/etc/sysconfig/libvirtd中的参数:
在RHEL或者CentOS中修改
/etc/sysconfig/libvirtd
:取消如下行的注释:
#LIBVIRTD_ARGS="--listen"
在Ubuntu中:修改
/etc/default/libvirt-bin
在下列行添加 “-l”
libvirtd_opts="-d"
如下所示:
libvirtd_opts="-d -l"
为了VNC控制台正常工作,必须确保该参数绑定在0.0.0.0上。通过编辑 ``/etc/libvirt/qemu.conf``实现。
请确保这个参数配置为:
vnc_listen = "0.0.0.0"
重启libvirt服务
在RHEL/CentOS上:
$ service libvirtd restart
在Ubuntu上:
$ service libvirt-bin restart
配置安全策略¶
CloudStack的会被例如AppArmor和SELinux的安全机制阻止。必须关闭安全机制并确保 Agent具有所必需的权限。
配置SELinux(RHEL和CentOS):
检查你的机器是否安装了SELinux。如果没有,请跳过此部分。
在RHEL或者CentOS中,SELinux是默认安装并启动的。你可以使用如下命令验证:
$ rpm -qa | grep selinux
在
/etc/selinux/config
中设置SELINUX变量值为 “permissive”。这样能确保对SELinux的设置在系统重启之后依然生效。在RHEL/CentOS上:
vi /etc/selinux/config
查找如下行
SELINUX=enforcing
修改为
SELINUX=permissive
然后使SELinux立即运行于permissive模式,无需重新启动系统。
$ setenforce permissive
配置AppArmor(Ubuntu)
检查你的机器中是否安装了AppArmor。如果没有,请跳过此部分。
Ubuntu中默认安装并启动AppArmor。使用如下命令验证:
$ dpkg --list 'apparmor'
在AppArmor配置文件中禁用libvirt
$ ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
$ ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
$ apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
$ apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
配置网络桥接¶
警告
本章节非常重要,请务必彻底理解。
注解
本章节详细介绍了如何使用Linux自带的软件配置桥接网络。如果要使用OpenVswitch,请看下一章节。
为了转发流量到实例,至少需要两个桥接网络: public 和 private。
By default these bridges are called cloudbr0 and cloudbr1, but you do have to make sure they are available on each hypervisor.
最重要的因素是所有hypervisors上的配置要保持一致。
网络示例¶
配置网络有很多方法。在基本网络模式中你应该拥有2个 (V)LAN,一个用于管理网络,一个用于公共网络。
假设hypervisor中的网卡(eth0)有3个VLAN标签:
VLAN 100 作为hypervisor的管理网络
- VLAN 200 for public network of the instances (cloudbr0)
VLAN 300 作为实例的专用网络 (cloudbr1)
在VLAN 100 中,配置Hypervisor的IP为 192.168.42.11/24,网关为192.168.42.1
注解
Hypervisor与管理服务器不需要在同一个子网!
配置网络桥接¶
配置方式取决于发行版类型,下面给出RHEL/CentOS和Ubuntu的配置示例。
注解
本章节的目标是配置两个名为 ‘cloudbr0’和’cloudbr1’的桥接网络。这仅仅是指导性的,实际情况还要取决于你的网络布局。
网络桥接所需的软件在安装libvirt时就已被安装,继续配置网络。
首先配置eth0:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
确保内容如下所示:
DEVICE=eth0
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
现在配置3个VLAN接口:
vi /etc/sysconfig/network-scripts/ifcfg-eth0.100
DEVICE=eth0.100
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
IPADDR=192.168.42.11
GATEWAY=192.168.42.1
NETMASK=255.255.255.0
vi /etc/sysconfig/network-scripts/ifcfg-eth0.200
DEVICE=eth0.200
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
BRIDGE=cloudbr0
vi /etc/sysconfig/network-scripts/ifcfg-eth0.300
DEVICE=eth0.300
HWADDR=00:04:xx:xx:xx:xx
ONBOOT=yes
HOTPLUG=no
BOOTPROTO=none
TYPE=Ethernet
VLAN=yes
BRIDGE=cloudbr1
配置VLAN接口以便能够附加桥接网络。
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0
现在只配置一个没有IP的桥接。
DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
STP=yes
同样建立cloudbr1
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr1
DEVICE=cloudbr1
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
STP=yes
配置完成之后重启网络,通过重启检查一切是否正常。
警告
在发生配置错误和网络故障的时,请确保可以能通过其他方式例如IPMI或ILO连接到服务器。
在安装libvirt时所需的其他软件也会被安装,所以只需配置网络即可。
vi /etc/network/interfaces
如下所示修改接口文件:
auto lo
iface lo inet loopback
# The primary network interface
auto eth0.100
iface eth0.100 inet static
address 192.168.42.11
netmask 255.255.255.240
gateway 192.168.42.1
dns-nameservers 8.8.8.8 8.8.4.4
dns-domain lab.example.org
# Public network
auto cloudbr0
iface cloudbr0 inet manual
bridge_ports eth0.200
bridge_fd 5
bridge_stp off
bridge_maxwait 1
# Private network
auto cloudbr1
iface cloudbr1 inet manual
bridge_ports eth0.300
bridge_fd 5
bridge_stp off
bridge_maxwait 1
配置完成之后重启网络,通过重启检查一切是否正常。
警告
在发生配置错误和网络故障的时,请确保可以能通过其他方式例如IPMI或ILO连接到服务器。
配置防火墙¶
hypervisor之间和hypervisor与管理服务器之间要能够通讯。
为了达到这个目的,我们需要开通以下TCP端口(如果使用防火墙):
- 22 (SSH)
- 1798
- 16509 (libvirt)
5900 - 6100 (VNC 控制台)
49152 - 49216 (libvirt在线迁移)
如何打开这些端口取决于你使用的发行版本。在RHEL/CentOS 及Ubuntu中的示例如下。
在RHEL/CentOS中打开端口¶
RHEL 及 CentOS使用iptables作为防火墙,执行以下iptables命令来开启端口:
$ iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT
$ iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT
这些iptables配置并不会持久保存,重启之后将会消失,我们必须手动保存这些配置。
$ iptables-save > /etc/sysconfig/iptables
在Ubuntu中打开端口:¶
Ubuntu中的默认防火墙是UFW(Uncomplicated FireWall),使用Python围绕iptables进行包装。
要打开所需端口,请执行以下命令:
$ ufw allow proto tcp from any to any port 22
$ ufw allow proto tcp from any to any port 1798
$ ufw allow proto tcp from any to any port 16509
$ ufw allow proto tcp from any to any port 5900:6100
$ ufw allow proto tcp from any to any port 49152:49216
注解
默认情况下,Ubuntu中并未启用UFW。在关闭情况下执行这些命令并不能启用防火墙。
网络设置¶
网络设置¶
正确的网络设置对于CloudStack能否成功安装至关重要。遵循本节包含的信息,指导你搭建正确的网络配置。
基本和高级网络¶
CloudStack提供二种网络类型:
- 基本
适用于AWS类型的网络。提供单一的来宾网络类型,通过三层安全组进行隔离(源IP地址过滤)。
- 高级
适用于更复杂的网络拓扑。这种网络模型在定义客户网络时提供了最大限度的灵活性,但是比基本网络需要更多的配置步骤。
每个区域都有基本或高级网络。一个区域的整个生命周期中,不论是基本或高级网络。一旦在CloudStack中选择并配置区域的网络类型,就无法再修改。
下表比较了两种网络类型的功能
网络功能 |
基本网络 |
高级网络 |
---|---|---|
网络数量 |
单一网络 |
多种网络 |
防火墙类型 |
物理 |
物理和虚拟 |
负载均衡 |
物理 |
物理和虚拟 |
隔离类型 |
三层 |
二层和三层 |
VPN支持 |
不支持 |
支持 |
端口转发 |
物理 |
物理和虚拟 |
1:1 NAT | 物理 |
物理和虚拟 |
Source NAT | 不支持 |
物理和虚拟 |
用户数据 |
支持 |
支持 |
网络监控 |
在物理路由器上:sFlow / netFlow |
Hypervisor和虚拟路由器 |
DNS和DHCP |
支持 |
支持 |
在一个云中可能会存在二种网络类型。但无论如何,一个给定的区域必须使用基本网络或高级网络。
单一的物理网络可以被分割不同类型的网络流量。账户也可以分割来宾流量。你可以通过划分VLAN来隔离流量。如果你在物理网络中划分了VLAN,确保VLAN标签的数值在独立范围。
VLAN分配示例¶
公共和来宾流量要求使用VLAN,下面是一个VLAN分配的示例:
VLAN IDs | 流量类型 |
范围 |
---|---|---|
小于500 |
管理流量。用于管理目的。 |
CloudStack,hypervisors,系统VM可以访问。 |
500-599 | 承载公共流量。 |
CloudStack账户。 |
600-799 | 承载来宾流量 |
CloudStack 账户。 从这个池中选择账户特定的VLAN。 |
800-899 | 承载来宾流量 |
CloudStack 账户。CloudStack管理员为账户指定特定的VLAN。 |
900-999 | 承载来宾流量 |
CloudStack 账户。可作为项目、域或所有账户的作用域。 |
大于1000 |
保留为将来使用 |
硬件配置示例¶
本节包含了一个特定交换机型号的示例配置,作为区域级别的三层交换。它假设VLAN管理协议,例如VTP、GVRP等已经被禁用。如果你正在使用VTP或GVRP,那么你必须适当的修改示例脚本。
Dell 62xx¶
以下步骤显示如何配置区域级别的三层交换机Dell 62xx。这些步骤假设VLAN。201用于Pod1中未标记的私有IP线路。并且Pod1中的二层交换机已经连接到GigabitEthernet1/0/1端口。
DELL 62xx系列交换机最大支持1024个VLAN。
在VLAN数据库模式配置VLAN。
vlan database vlan 200-999 exit
配置端口1/g1。
interface ethernet 1/g1 switchport mode general switchport general pvid 201 switchport general allowed vlan add 201 untagged switchport general allowed vlan add 300-999 tagged exit
端口1/g1的配置说明:
端口1/g1的本征VLAN为201(属于VLAN201).
在Pod级别的二层交换机中允许所有VLAN(300-999)流量通过。
Cisco 3750¶
以下步骤显示如何配置Cisco 3750作为区域级别的三层交换机。这些步骤假设VLAN 201用于Pod1中未标记的私有IP线路。并且Pod1中的二层交换机已经连接到GigabitEthernet1/0/1端口。
设置VTP为透明模式,以便我们使用超过1000的VLAN。虽然我们只用到999,但VTP透明模式并不做严格要求。
vtp mode transparent vlan 200-999 exit
配置GigabitEthernet1/0/1。
interface GigabitEthernet1/0/1 switchport trunk encapsulation dot1q switchport mode trunk switchport trunk native vlan 201 exit
端口GigabitEthernet1/g1的配置说明:
端口1/g1的本征VLAN为201(属于VLAN201).
Cisco默认允许所有VLAN,因此,VLAN(300-999)都被允许并访问所有的Pod级别的二层交换机。
二层交换¶
在Pod中的二层交换机提供接入层功能
它通过trunk连接所有VLANS中的计算主机。
它为管理网络提供包含计算和存储主机的流量交换。三层交换机将作为这个管理网络的网关
本节包含了一个特定交换机型号的示例配置,作为Pod级别的二层交换机。它假设VLAN管理协议,例如VTP、GVRP等已经被禁用。如果你正在使用VTP或GVRP,那么你必须适当的修改示例脚本。
Dell 62xx¶
以下步骤将演示如何配置Dell 62xx作为Pod级别的二层交换机。
在VLAN数据库模式配置VLAN。
vlan database vlan 300-999 exit
VLAN201用于Pod1中未标记的私有IP线路。并且Pod1已经连接到该二层交换机。
interface range ethernet all switchport mode general switchport general allowed vlan add 300-999 tagged exit
所有的以太网端口功能配置说明:
所有端口配置相同
二层交换机的所有端口都允许VLAN(300-999)通过。
Cisco 3750¶
以下步骤将演示如何配置cisco 3750作为Pod级别的二层交换机
设置VTP为透明模式,以便我们使用超过1000的VLAN。虽然我们只用到999,但VTP透明模式并不做严格要求。
vtp mode transparent vlan 300-999 exit
配置所有的端口使用dot1q协议,并设置201为本征VLAN。
interface range GigabitEthernet 1/0/1-24 switchport trunk encapsulation dot1q switchport mode trunk switchport trunk native vlan 201 exit
默认情况下,Cisco允许所有VLAN通过。如果本征VLAN ID不相同的2个端口连接在一起时,Cisco交换机提出控诉。这就是为什么必须指定VLAN 201为二交换机的本征VLAN。
硬件防火墙¶
所有部署都应该有一个防火墙保护管理服务器;查看防火墙的一般规定。 根据情况不同,一些部署也可能用到Juniper SRX防火墙作为来宾网络的默认网关; 参阅 “集成外部来宾防火墙Juniper SRX (可选)”.
防火墙的一般规定¶
硬件防火墙必需服务于两个目的:
保护管理服务器。
路由多个区域之间的管理网络流量。站点到站点 VPN应该在多个区域之间配置。
为了达到上述目的,你必须设置固定配置的防火墙。用户被配置到云中,不需要改变防火墙规则和策略。任何支持NAT和站点到站点VPN的硬件防火墙,不论品牌,都可以使用。
集成外部来宾防火墙Juniper SRX(可选)¶
注解
客户使用高级网络时才有效。
CloudStack中提供了对Juniper SRX系列防火墙的直接管理。这使得CloudStack能建立公共IP到客户虚拟机的静态NAT映射,并利用Juniper设备替代虚拟路由器提供防火墙服务。每个区域中可以有一个或多个Juniper SRX设备。这个特性是可选的。如果不提供Juniper设备集成,CloudStack会使用虚拟路由器提供这些服务。
Juniper SRX可以和任意的外部负载均衡器一起使用。外部网络元素可以部署为并排或内联结构。
CloudStack要求按照如下信息配置Juniper SRX防火墙:
注解
支持SRX软件版本为10.3或者更高。
根据供应商提供的说明书安装你的SRX设备。
分别使用两个接口连接管理和公共网络,或者,你可以使用同一个接口来连接这两个网络,但需要为公共网络设置一个VLAN。
确保在专有接口上开启了 “vlan-tagging” 。
记录公共和专用接口名称。如果你在公共接口中使用了VLAN,应该在接口名称后面添加一个”.[VLAN TAG]”。例如,如果你使用 ge-0/0/3 作为公共接口并且VLAN 标签为301。那么你的公共接口名称应为”ge-0/0/3.301”。你的专用接口应始终不添加任何标签,因为CloudStack会自动在逻辑接口上添加标签。
创建公共安全区域和专用安全区域。默认情况下,这些已经存在并分别称为”untrust” 和 “trust”。为公共区域添加公共接口和为专用区域添加专用接口。并记录下安全区域名称。
确保专用区域到公共区域的安全策略允许所有流量通过。
请注意CloudStack登录所用账户的用户名和密码符合编程规则。
确保已经开启 “ssh” 和 “xnm-clear-text” 等系统服务。
如果需要统计流量:
创建传入的防火墙过滤和传出的防火墙过滤。这些策略应该有相同的名称分别作为你的公共安全区域名称和专用安全区域名称。过滤应该设置到 “特定接口”。 例如,在这个配置中公共区域是 “untrust”,专用区域是 “trust”:
root@cloud-srx# show firewall filter trust { interface-specific; } filter untrust { interface-specific; }
在你的公共接口添加防火墙过滤。例如,一个示例配置(ge-0/0/3.0为公共接口,untrust为公共安全区域,trust为专用安全区域)
ge-0/0/3 { unit 0 { family inet { filter { input untrust; output trust; } address 172.25.0.252/16; } } }
确保SRX中的专用接口允许所有VLAN通过。
安装好CloudStack管理端后,使用管理员帐号登录CloudStack用户界面。
在左侧导航栏中,点击基础架构
点击区域中的查看更多。
选择你要设置的区域。
点击网络选项卡。
点击示意图网络服务提供程序中的配置(你可能需要向下滚动才能看到)。
点击SRX。
点击(+)按钮添加一个新的SRX,并提供如下信息:
IP地址:SRX设备的IP地址。
用户名:CloudStack需要使用SRX设备中的账户。
密码:该账户的密码。
公共接口:SRX中的公共接口名称。例如,ge-0/0/2。 最后一个 ”.x” 表示该VLAN正在使用这个接口。
专用接口: SRX中的专用接口名称。例如, ge-0/0/1。
Usage Interface: (可选) 通常情况下,公共接口用来统计流量。如果你想使用其他的接口,则在此处修改。
重试次数:尝试控制SRX设备失败时重试的次数。默认值是2。
超时(秒): 尝试控制SRX设备失败时的重试间隔。默认为300秒。
公共网络: SRX中公共网络的名字。 例,trust。
专用网络:SRX中专用网络的名字。 例如,untrust。
容量:该设备能处理的网络数量。
专用: 当标记为专用后,这个设备只对单个帐号专用。该选项被勾选后,容量选项就没有了实际意义且值会被置为1。
点击确定。
点击全局设置。设置external.network.stats.interval参数,指定CloudStack从Juniper SRX收集网络使用情况的时间间隔。如果你不使用SRX统计网络使用情况,即设置为0.
整合Cisco VNMC和外部来宾防火墙(可选)¶
Cisco虚拟网络管理中心(VNMC)为Cisco网络虚拟服务提供集中式多设备和策略管理。您可以通过整合Cisco VNMC和CloudStack使用ASA 1000v云防火墙提供防火墙和NAT服务。在开启了Cisco Nexus 1000v分布式虚拟交换机功能的CloudStack群集中。这样部署,您将可以:
配置Cisco ASA 1000v防火墙,你可以为每个来宾创建一个网络。
使用思科ASA 1000v防火墙创建和应用安全配置,包含入口和出口流量的ACL策略集。
使用Cisco ASA 1000v防火墙创建和应用源地址NAT,端口转发,静态NAT策略集。
CloudStack对于Cisco VNMC的支持基于开启了Cisco Nexus 1000v分布式虚拟交换机功能的VMware虚拟化管理平台。
部署使用Cisco ASA 1000v防火墙,Cisco Nexus 1000v分布式虚拟交换机和Cisco VNMC。¶
Cisco ASA 1000v防火墙仅支持隔离的来宾网络。
Cisco ASA 1000v不支持VPC。
Cisco ASA 1000v不支持负载均衡。
当使用Cisco VNMC防火墙创建的来宾网络时,一个额外的公共IP和SNAT IP一起被获取。SNAT IP用于规则,而额外的IP用于ASA外部接口。确保这一额外的公共IP不会被释放。你可以在网络一旦处在执行状态和获取其他公共IP之前确定这个IP。这个额外的IP没有被标识为SNAT。在你的来宾网络中可以通过Cisco VNMC来查找ASA外部接口的IP地址。
使用单一网络中的公共IP地址段。不能添加不同网段的IP地址。
每个VLAN中只允许一个ASA实例。因为ASA端口不支持多VLAN的trunk模式。因此,一个来宾网络中只能有一个ASA实例。
每个区域中,只允许一个Cisco VNMC.
只支持在Inline模式下部署负载均衡器。
ASA防火墙策略适用于来宾网络中所有的公共IP地址。不同于虚拟路由器创建的防火墙规则,ASA设备创建的规则不绑定特定的公共IP地址。
使用一个支持vservice命令的Cisco Nexus 1000v分布式虚拟交换机版本。例如:nexus-1000v.4.2.1.SV1.5.2b.bin
使用Cisco VNMC在CloudStack中创建来宾网络,要求vservice命令在Nexus交换机中是可用的。
在vCenter环境中配置Cisco Nexus 1000v分布式交换机。
在Cisco Nexus 1000v 分布式虚拟交换机中创建两个(内部和外部)网络接口的端口配置文件。记录下内部端口配置,在CloudStack中添加ASA设备时需要提供。
更多配置信息,请查阅 “配置vSphere群集和Nexus 1000v 虚拟交换机”.
部署和配置Cisco VNMC。
更多信息,请查阅 安装Cisco虚拟网络管理中心 和 配置Cisco虚拟网络管理中心.
注册Cisco Nexus 1000v分布式交换机到Cisco VNMC。
更多信息,请查阅 注册Cisco Nexus 1000V 和Cisco VNMC.
在Cisco Nexus 1000v分布式交换机中创建内部和外部端口配置文件。
更多信息,请查阅 “配置vSphere群集和Nexus 1000v 虚拟交换机”.
部署Cisco ASA 1000v设备。
更多信息,请查阅 使用VNMC设置ASA 1000V.
通常情况下,你可以创建一个ASA 1000v设备池通过CloudStack来注册他们。
设置Cisco ASA 1000v设备需指定如下信息:
VNMC主机IP。
确保你在VNMC模式中添加ASA设备。
需要预先在Cisco Nexus 1000v分布式虚拟交换机中创建用于管理和高可用的网络接口配置文件。
内部和外部端口配置文件
Cisco ASA 1000v设备的管理IP。指定网关确保到VNMC IP是可达的。
管理员证书
VNMC证书
注册Cisco ASA 1000v到VNMC。
打开Cisco ASA 1000v实例电源后,通过ASA控制台注册VNMC。
确保满足所有的先决条件。
参阅 “先决条件”.
添加 VNMC 实例。
参阅 “添加 VNMC 实例”.
添加 ASA 1000v 实例。
创建一个网络方案,使用Cisco VNMC提供你期望的服务。
使用你刚创建的网络方案,创建一个隔离的来宾网络。
添加 VNMC 实例¶
作为管理员登录到CloudStack用户界面。
在左侧导航栏中,点击基础架构
点击区域中的查看更多。
选择你要设置的区域。
点击物理网络标签卡。
点击示意图’网络服务提供程序’中的配置
你可能需要向下滚动才能看到。
点击Cisco VNMC
点击查看VNMC设备。
点击添加VNMC设备并提供如下信息:
主机:VNMC实例的IP地址。
用户名:CloudStack需要使用VNMC实例中的账户
密码:该账户的密码。
点击确定。
添加 ASA 1000v 实例¶
作为管理员登录到CloudStack用户界面。
在左侧导航栏中,点击基础架构
点击区域中的查看更多。
选择你要设置的区域。
点击物理网络标签卡。
点击示意图’网络服务提供程序’中的配置
你可能需要向下滚动才能看到。
点击Cisco VNMC
点击查看ASA 1000v。
点击添加Cisco ASA 1000v资源并提供如下信息:
主机: ASA 1000v实例的管理地址。该IP地址用来连接ASA 1000V。
内部端口配置文件: 在Cisco Nexus1000v分布式虚拟交换机中配置内部端口。
群集: 你正在添加ASA 1000v实例所在的VMware群集。
确保在群集中启用了Cisco Nexus 1000v分布式虚拟交换机。
点击确定。
使用Cisco ASA 1000v创建一个网络方案¶
要来宾网络支持Cisco ASA 1000v,按照如下信息添加网络方案:
使用用户或管理员登录到CloudStack用户界面。
下拉选择方案,选择网络方案:
点击添加网络方案。
在对话框中,选择如下操作:
名称: 任何网络方案的名称。
描述: 提供一个简短的方案描述。
网络速度: 允许的数据传输速度(MB/秒)。
流量类型: 允许承载的网络流量类型。
来宾类型: 选择来宾网络为隔离或共享网络。
持续性: 表明来宾网络是否支持持续性。无需提供任何VM部署的网络,称之为持续性网络。
VPC: 此选项表明是否在来宾网络中启用VPC。 CloudStack中的虚拟专用云(VPC)是专用、隔离的。 一个VPC可以有一个类似于传统物理网络的虚拟网络拓扑结构。有关的VPC的详细信息,请参阅 “关于虚拟专用云”.
指定: (仅隔离的来宾网络) 表明在使用这个网络方案时,是否指定VLAN。
支持的服务: 使用Cisco VNMC作为服务提供者针对隔离的来宾网络方案提供Firewall, Source NAT, Port Forwarding, 和Static NAT服务。
系统方案: 选择你想在这个网络中使用的虚拟路由器的系统服务方案。
保护模式: 表明是否使用保护模式。在这个模式中,只有网络中第一个虚拟机启动时才分配网络资源。
点击确定
已经创建网络方案。
在新的来宾网络中重复使用ASA 1000v设备¶
您可以在做了必要的清理后重新在新的来宾网络中使用ASA 1000v设备。通常情况下,ASA 1000v is cleaned up when the logical edge firewall is cleaned up in VNMC。如果清理动作没有发生,你需要将设备恢复到出厂设置,才能在新的来宾网络中使用。作为其中的一部分,需要在设备上启用ssh并通过向VNMC注册存储SSH凭证。
打开ASA设备的命令行:
运行如下命令:
ASA1000V(config)# reload
提示您如下信息:
System config has been modified. Save? [Y]es/[N]o:"
输入N。
你会得到如下确认信息:
"Proceed with reload? [confirm]"
重启设备。
注册ASA 1000v设备到VNMC:
ASA1000V(config)# vnmc policy-agent ASA1000V(config-vnmc-policy-agent)# registration host vnmc_ip_address ASA1000V(config-vnmc-policy-agent)# shared-secret key where key is the shared secret for authentication of the ASA 1000V connection to the Cisco VNMC
整合外部来宾负载均衡(可选)¶
CloudStack可以使用Citrix NetScaler或BigIP F5负载均衡器为客户提供负载平衡服务。如果未启用,CloudStack将使用虚拟路由器中的软件负载平衡。
在CloudStack管理端中安装和启用外部负载均衡:
根据供应商提供的说明书安装你的设备。
连接到承载公共流量和管理流量的网络(可以是同一个网络)。
记录IP地址、用户名、密码、公共接口名称和专用接口名称。接口名称类似 “1.1” 或 “1.2”。
确保VLAN可以通过trunk到管理网络接口。
安装好CloudStack管理端后,使用管理员帐号登录CloudStack用户界面。
在左侧导航栏中,点击基础架构
点击区域中的查看更多。
选择你要设置的区域。
点击网络选项卡。
点击示意图网络服务提供程序中的配置(你可能需要向下滚动才能看到)。
点击NetScaler或F5.
点击(+)添加按钮并提供如下信息:
对于NetScaler:
IP地址:SRX设备的IP地址。
用户名/密码:访问设备的身份验证凭证。CloudStack使用这些凭证来访问设备。
类型:添加设备的类型。可以是F5 BigIP负载均衡器、NetScaler VPX、NetScaler MPX或 NetScaler SDX等设备。关于NetScaler的类型比较,请参阅CloudStack管理指南。
公共接口: 配置为公共网络部分的设备接口。
专用接口: 配置为专用网络部分的设备接口。
重试次数:尝试控制设备失败时重试的次数。默认值是2
容量:该设备能处理的网络数量。
专用: 当标记为专用后,这个设备只对单个帐号专用。该选项被勾选后,容量选项就没有了实际意义且值会被置为1。
点击确定。
外部负载平衡器的安装和配置完成后,你就可以开始添加虚拟机和NAT或负载均衡规则。
管理服务器负载均衡¶
CloudStack可以使用负载均衡器为多管理服务器提供一个虚拟IP。管理员负责创建管理服务器的负载均衡规则。应用程序需要跨多个持久性或stickiness的会话。下表列出了需要进行负载平衡的端口和是否有持久性要求。
即使不需要持久性,也使它是允许的。
源端口 |
目标端口 |
协议 |
持续请求 |
---|---|---|---|
80或者443 |
8080 (或者 20400 with AJP) |
HTTP (或者AJP) |
支持 |
8250 | 8250 | TCP | 支持 |
8096 | 8096 | HTTP | 不支持 |
除了上面的设置,管理员还负责设置‘host’全局配置值,由管理服务器IP地址更改为负载均衡虚拟IP地址。如果‘host’值未设置为VIP的8250端口并且一台管理服务器崩溃时,用户界面依旧可用,但系统虚拟机将无法与管理服务器联系。
拓扑结构要求¶
安全需求¶
公共互联网必须不能访问管理服务器的8096和8250端口。
运行时内部通信需求¶
管理服务器需要跟其他主机进行任务协调。该通信使用TCP协议的8250和9090端口。
CPVM跟区域中的所有主机通过管理网络通信。因此区域中任何一个Pod都必须能通过管理网络连接到其他Pod。
SSVM和CPVM通过8250端口与管理服务器联系。如果你使用了多个管理服务器,确保负载均衡器IP地址到管理服务器的8250端口是可达的。
存储网络拓扑要求¶
SSVM需要挂载辅助存储中的NFS共享目录。即使有一个单独的存储网络,辅助存储的流量也会通过管理网络。如果存储网络可用,主存储的流量会通过存储网络。如果你选择辅助存储也使用存储网络,你必须确保有一条从管理网络到存储网络的路由。
外部防火墙拓扑要求¶
如果整合了外部防火墙设备,公共IP的VLAN必须通过trunk到达主机。这是支持SSVM和CPVM必须满足的。
高级区域拓扑要求¶
使用高级网络,专用和公共网络必须分离子网。
XenServer拓扑要求¶
管理服务器与XenServer服务器通过22(ssh)、80(http)和443(https)端口通信。
VMware拓扑要求¶
管理服务器和SSVM必须能够访问区域中的vCenter和所有的ESXi主机。必须保证在防火墙中允许443端口。
管理服务器与VMware vCenter服务器通过443(https)端口通信。
管理服务器与系统VM使用管理网络通过3922(ssh)端口通信。
Hyper-V拓扑要求¶
CloudStack管理服务器通过https与Hyper-V代理通信。管理服务器与Hyper-V主机之间的安全通信端口为8250。
KVM拓扑要求¶
管理服务器与KVM主机通过22(ssh)端口通信。
LXC拓扑要求¶
管理服务器与LXC主机通过22(ssh)端口通信。
通过流量哨兵整合来宾网络使用情况¶
为了在来宾网络中收集网络数据,CloudStack需要从网络中安装的外部网络数据收集器中提取。并通过整合CloudStack和inMon流量哨兵实现来宾网络的数据统计。
网络哨兵是一个收集网络流量使用数据的套件。CloudStack可以将流量哨兵中的信息统计到自己的使用记录中,为云基础架构的计费用户提供了依据。流量哨兵使用的流量监控协议为sFlow。路由器和交换机将生成的sFlow记录提供给流量哨兵,然后CloudStack通过查询流量哨兵的数据库来获取这些信息。
为了构建查询,CloudStack确定了当前来宾IP的查询时间间隔。这既包含新分配的IP地址,也包含之前已被分配并且在继续使用的IP地址。CloudStack查询流量哨兵,在分配的时间段内这些IP的网络统计信息。返回的数据是账户每个IP地址被分配和释放的时间戳,以便在CloudStack中为每个账户创建计费记录。当使用服务运行时便会收集这些数据
配置整合CloudStack和流量哨兵:
在网络基础设施中,安装和配置流量哨兵收集流量数据。 关于安装和配置步骤,请查阅inMon 流量哨兵文档.
在流量哨兵用户界面中,配置流量哨兵允许来宾用户使用脚本查询。CloudStack将通过执行远程查询为来宾用户的一个或多个IP和收集网络使用情况。
点击 File > Users > Access Control > Reports Query, 然后从下拉列表中选择来宾。
在CloudStack中,使用API中的addTrafficMonitor命令添加流量哨兵主机。传入的流量哨兵URL类似于protocol + host + port (可选);例如, http://10.147.28.100:8080。 关于addTrafficMonitor命令用法,请参阅API文档 API Documentation.
关于如何调用CloudStack API,请参阅 CloudStack API 开发指南。
作为管理员登录到CloudStack用户界面。
在全局设置页面中,查找如下参数进行设置:
direct.network.stats.interval: 你希望CloudStack多久收集一次流量数据。
设置区域中VLAN和虚拟机的最大值¶
在外部网络情况下,每个虚拟机都必须有独立的来宾IP地址。这里有两个参数你需要考虑如何在CloudStack中进行配置:在同一时刻,你希望区域中有多少VLAN和多少虚拟机在运行。
使用如下表格来确定如何在CloudStack部署时修改配置。
guest.vlan.bits | 单个区域运行虚拟机的最大值 |
区域中VLAN的最大值 |
---|---|---|
12 | 4096 | 4094 |
11 | 8192 | 2048 |
10 | 16384 | 1024 |
10 | 32768 | 512 |
基于部署的需求,选择合适的guest.vlan.bits参数值。在全局配置设置中编辑该参数,并重启管理服务。
存储设置¶
存储设置¶
CloudStack被设计为可以支持广泛的商业级和企业级存储设备。如果所选的hypervisor支持,也可以使用本地存储。 所支持的虚拟磁盘类型取决于不同的hypervisor。
存储类型 |
XenServer | vSphere | KVM |
---|---|---|---|
NFS | 支持 |
支持 |
支持 |
iSCSI | 支持 |
通过VMFS支持 |
通过集群文件系统支持 |
Fiber Channel | 通过Pre-existing SR支持 |
支持 |
通过集群文件系统支持 |
Local Disk | 支持 |
支持 |
支持 |
针对KVM使用集群逻辑卷管理器(CLVM),不受CloudStack官方支持。
小规模设置¶
在小规模设置中,一个NFS服务器可以同时作为主存储和辅助存储。只需要NFS服务器有两个独立的共享目录,一个用于主存储,另一个用于辅助存储。
辅助存储¶
CloudStack被设计为支持多种可扩展的辅助存储系统。唯一的要求就是辅助存储系统支持NFS协议。
注解
存储服务器应该有大量磁盘,理想情况下磁盘应该由硬件RAID控制器管理。现代的硬件RAID控制器支持热插拔功能并独立于操作系统之外,这样你就可以替换损坏的磁盘而不影响正在运行的操作系统。
配置实例¶
在本节中我们将通过几个实例说明,如何设置存储并使NFS和iSCSI存储系统正常工作。
基于本地硬盘和DAS的NFS服务¶
本节描述如何在一个标准的Linux系统中配置NFS输出。具体的命令取决于操作系统版本。
在存储服务器上安装RHEL/CentOS 发行版
如果根卷的大小超过2TB,创建一个小点的启动卷用于安装RHEL/CentOS,根分区保留20GB就足够了。
系统安装好以后,创建一个名为 /export的目录。可以在根分区下创建,或者挂载一个较大的磁盘卷。
如果你在一台主机上有超过16TB的存储空间, 则创建多个EXT3文件系统和多个NFS输出,单个EXT3文件系统不能超过16TB。
/export目录创建后,运行如下命令配置NFS输出。
# echo "/export <CIDR>(rw,async,no_root_squash,no_subtree_check)" >> /etc/exports
根据你的部署需求,调整如上参数。
限制NFS输出. 强烈建议通过指定子网掩码来限制NFS访问权限,(例如“192.168.1.0/24”)。只允许规定的集群才能访问, 避免非集群成员访问。 且管理网络和存储网络必须能够访问;如果2个网络相同,那么一个CIDR就足够了。 如果你是单独的存储网络那么必须提供独立的CIDR或者一个足够大的CIDR可以包含它们2个。
下面是一个分隔的CIDRs的示例:
/export 192.168.1.0/24(rw,async,no_root_squash,no_subtree_check) 10.50.1.0/24(rw,async,no_root_squash,no_subtree_check)
移除async异步标记. 标志允许NFS服务器在提交并写入磁盘操作前就先返回相应,来提高性能。请在关键生产部署中移除异步标志。
运行下面的命令启动NFS服务。
# chkconfig nfs on
编辑/etc/sysconfig/nfs,并取消如下行的注释。
LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 RQUOTAD_PORT=875 STATD_PORT=662 STATD_OUTGOING_PORT=2020
编辑/etc/sysconfig/iptables,添加如下行的记录到INPUT链的开始部分。
-A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT -A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT -A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT
重启服务
NFS共享目录/export已经被创建
注解
进行复制和粘贴操作时,执行前确保粘贴内容为单行。一些文档阅读器可能会引起不必要的文本换行。
基于iSCSI的NFS服务¶
使用以下步骤创建基于iSCSI卷的NFS服务。这些步骤适用于RHEL/CentOS 5发行版。
安装iscsiadm。
# yum install iscsi-initiator-utils # service iscsi start # chkconfig --add iscsi # chkconfig iscsi on
发现ISCSI target。
# iscsiadm -m discovery -t st -p <iSCSI Server IP address>:3260
例如:
# iscsiadm -m discovery -t st -p 172.23.10.240:3260 172.23.10.240:3260,1 iqn.2001-05.com.equallogic:0-8a0906-83bcb3401-16e0002fd0a46f3d-rhel5-test
登录
# iscsiadm -m node -T <Complete Target Name> -l -p <Group IP>:3260
例如:
# iscsiadm -m node -l -T iqn.2001-05.com.equallogic:83bcb3401-16e0002fd0a46f3d-rhel5-test -p 172.23.10.240:3260
发现SCSI磁盘,例如:
# iscsiadm -m session -P3 | grep Attached Attached scsi disk sdb State: running
格式化磁盘为ext3类型并挂载卷。
# mkfs.ext3 /dev/sdb # mkdir -p /export # mount /dev/sdb /export
添加磁盘到/etc/fstab并确保在启动时能被挂载。
/dev/sdb /export ext3 _netdev 0 0
现在你可以建立/export共享目录
限制NFS输出. 强烈建议通过特定的子网和掩码限制NFS访问权限(例如”192.168.1.0/24”), 只允许规定的集群才能访问, 避免非集群成员访问并非故意的情况下删除所有数据。 且管理网络和存储网络必须能够访问;如果2个网络相同,那么一个CIDR就足够了。 如果你是单独的存储网络那么必须提供独立的CIDR或者一个足够大的CIDR可以包含它们2个。
下面是一个分隔的CIDRs的示例:
/export 192.168.1.0/24(rw,async,no_root_squash,no_subtree_check) 10.50.1.0/24(rw,async,no_root_squash,no_subtree_check)
移除async异步标记. 标志允许NFS服务器在提交并写入磁盘操作前就先返回相应,来提高性能。请在关键生产部署中移除异步标志。
可选安装¶
附加安装选项¶
除了基本的部署选项之外,接下来的几节将描述CloudStack的特性。
安装Usage服务(可选)¶
管理服务器配置完毕后,你可以选择安装Usage服务器。Usage服务器从系统事件中提取数据,便于对账户进行使用计费。
当存在多台管理服务器时,可以选择在它们上面安装任意数量的Usage服务器。Usage服务器会协调处理。考虑到高可用性,所以最少在两台管理服务器中安装Usage服务器。
安装Usage服务器的要求¶
Usage服务器安装时,管理服务器必须在运行状态。
Usage服务器必须与管理服务器安装在同一台服务器中。
安装Usage服务器的步骤¶
Package repository should already being configured. Refer to Configure Package Repository
Install package cloudstack-usage
On RHEL/CentOS systems, use:
# yum install cloudstack-usage
如果是Debian/Ubuntu系统,命令为:
# apt-get install cloudstack-usage
安装成功后,使用如下命令启动Usage服务器。
# service cloudstack-usage start
Enable the service at boot
On RHEL/CentOS systems, use:
# chkconfig cloudstack-usage on
如果是Debian/Ubuntu系统,命令为:
# update-rc.d cloudstack-usage defaults
The Administration Guide discusses further configuration of the Usage Server.
SSL (可选)¶
CloudStack默认提供HTTP的访问方式。有许多的技术和网站选择使用SSL。因此,我们先抛下CloudStack所使用的HTTP,假设站点使用SSL是一个典型实践。
CloudStack使用Tomcat作为服务容器。由于CloudStack网站中断SSL会话,可能会开启Tomcatde的SSL访问。Tomcat的SSL配置描述请查阅: http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html.
数据库复制(可选)¶
CloudStack支持MySQL节点间的数据库复制。这个通过标准的MySQL复制功能来实现。你这样做可能希望防止MySQL服务器或者存储损坏。MySQL复制使用master/slave的模型。master节点是直接为管理服务器所使用。slave节点为备用,接收来自master节点的所有写操作,并将它应用于本地冗余数据库。以下是实施数据库复制的步骤。
注解
创建复制并不等同于备份策略,你需要另外开发一个有别于复制的MySQL数据的备份机制。
确保这是一个全新安装且没有数据的master数据库节点。
编辑master数据库的my.cnf,在[mysqld]的datadir下增加如下部分。
log_bin=mysql-bin server_id=1
考虑到其他的服务器,服务器id必须是唯一的。推荐的方式是将master的ID设置为1,后续的每个slave节点序号大于1,使得所有服务器编号如:1,2,3等。
重启MySQL服务。如果是RHEL/CentOS系统,命令为:
# service mysqld restart
如果是Debian/Ubuntu系统,命令为:
# service mysql restart
在master上创建一个用于复制的账户,并赋予权限。我们创建用户”cloud-repl”,密码为”password”。假设master和slave都运行在172.16.1.0/24网段。
# mysql -u root mysql> create user 'cloud-repl'@'172.16.1.%' identified by 'password'; mysql> grant replication slave on *.* TO 'cloud-repl'@'172.16.1.%'; mysql> flush privileges; mysql> flush tables with read lock;
离开当前正在运行的MySQL会话。
在新的shell中打开第二个MySQL会话。
检索当前数据库的位置点。
# mysql -u root mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 412 | | | +------------------+----------+--------------+------------------+
注意你数据库实例所返回的文件及位置点。
退出该会话。
完成master安装。返回到master的第一个会话,取消锁定并退出MySQL。
mysql> unlock tables;
安装并配置slave节点。在slave服务器上,运行如下命令。
# yum install mysql-server # chkconfig mysqld on
编辑my.cnf,在[mysqld]的datadir下增加如下部分。
server_id=2 innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600
重启MySQL。对于RHEL/CentOS系统,使用”mysqld”
# service mysqld restart
对于Ubuntu/Debian系统,使用”mysql.”
# service mysql restart
引导slave连接master并进行复制。使用上面步骤中得到数据来替换IP地址,密码,日志文件,以及位置点。
mysql> change master to -> master_host='172.16.1.217', -> master_user='cloud-repl', -> master_password='password', -> master_log_file='mysql-bin.000001', -> master_log_pos=412;
在slave上启动复制功能。
mysql> start slave;
在slave上可能需要开启3306端口,就像之前在master上所做的一样。
这对复制来说不是必须的。但如果没有做,当需要进行数据库切换时,你仍然需要去做。
故障切换¶
这将为管理服务器提供一个复制的数据库,用于实现手动故障切换。管理员将CloudStack从一个故障MySQL实例切换到另一个。当数据库失效发生时,你应该:
停止管理服务器(通过命令:service cloudstack-management stop)
将数据库的复本服务器修改为master并重启
确保数据库的副本服务器的3306端口开放给管理服务器。
更改使得管理服务器使用这个新的数据库。最简单的操作是在管理服务器的/etc/cloudstack/management/db.properties文件中写入新的数据库IP地址。
重启管理服务器:
# service cloudstack-management start
Amazon Web Services 接口¶
Amazon Web Services 兼容接口¶
CloudStack可将AWS API调用转换为CloudStack本地调用,使得用户可以继续使用已有的AWS兼容工具。这个转换服务作为单独的web应用,就像在tomcat上的CloudStack管理服务一样,只是监听不同的端口。AWS兼容接口除了提供S3 REST API外,还提供EC2 SOAP和Query APIs。
注解
这项服务,之前是由CloudBridge独立软件实现的。现在已经完全集成到CloudStack管理服务中。
警告
EC2 Query API和S3 API兼容接口的支持工作正在进行中。S3的兼容API提供了一种在管理服务器的文件系统中存储数据的方法,它不是S3 后端实现的。
局限性
只支持使用基本网络的zone。
仅对全新安装的CloudStack可用。通过旧版本升级的不可用。
如弹性IP(EIP)和弹性负载均衡(ELB)这些特性,仅对有Citrix NetScaler设备的架构可用。用户接入有NetScaler设备的zone时,需要使用NetScaler-enabled网络方案(DefaultSharedNetscalerEIP和ELBNetworkOffering)。
支持的API版本¶
遵守亚马逊WDSL版本的EC2接口将于2010-11-15过期。可在 `http://ec2.amazonaws.com/doc/2010-11-15/ <http://ec2.amazonaws.com/doc/2010-11-15/>`获取。
接口与EC2命令行工具*EC2 tools v.1.3.6230*是兼容的。可在 http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-62308.zip.
注解
支持更新版本的EC2 API的工作正在进行
使能EC2和S3兼容接口¶
提供AWS API兼容性的软件随CloudStack一起安装。在使用之前,你必须使能服务并操作一些安装步骤。
将全局配置参数中的每项服务设置为true。详看 *Setting Global Configuration Parameters*.
创建一组匹配亚马逊服务方案的名称。这个可以按照管理员操作手册在CloudStack界面上进行操作。
警告
除了可能使用的EC2实例类型,确保已包含亚马逊默认服务方案,m1.small。
如果按照步骤1设置了配置参数后,没有重启,那么重启管理服务器。
# service cloudstack-management restart
以下内容提供了这些步骤的细节
开启服务¶
为了使能EC2和S3兼容服务,你需要将 enable.ec2.api *和 *enable.s3.api 的值设置为true。以使能你所需要的服务。这个可以在CloudStack的界面上的*Global Settings*或者API来实现。
下面的截图展示如何通过GUI使能这些服务。
使用CloudStack API最简单的方法是使用集成接口,这个接口可以使用无验证调用。在全局设置中将这个接口设置为8096,然后调用 updateConfiguration 。下面的URL展示如何使用。
http://localhost:8096/client/api?command=updateConfiguration&name=enable.ec2.api&value=true
http://localhost:8096/client/api?command=updateConfiguration&name=enable.ec2.api&value=true
一旦使能这些服务,重启服务器。
创建EC2兼容服务方案¶
可以定义兼容 Amazon EC2实例类型 <http://aws.amazon.com/ec2/instance-types/> API名称的计算服务方案。(例如m1.small,m1.large),这个可以通过CloudStack界面进行操作。在 Service Offerings 中选择 Compute offering ,创建一个新的计算方案或者修改已存在的皆可。确保名称与EC2实例类型API名称匹配。下面的截图将展示如何操作。
AWS API用户安装¶
总的来说,用户不需要察觉CloudStack所提供的翻译服务。只需将AWS API调用发送到CloudStack端,然后被转换为CloudStack API。Amazon EC2兼容接口用户可继续使用已有的EC2工具和脚本,并通过指定管理服务器的端及合适的用户证书,将它们用于CloudStack部署。为此,用户需要进行如下步骤的操作:
生成用户证书
向服务注册。
为了方便,设置关于EC2 SOAP命令行工具的环境变量。
AWS API命令行工具安装¶
为了使用EC2命令行工具,用户需要操作以下步骤:
确定你具有正确版本的EC2工具。所支持的版本可以在 `http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-62308.zip <http://s3.amazonaws.com/ec2-downloads/ec2-api-tools-1.3-62308.zip>`_获取。
设置EC2环境变量。可在每次使用服务时设置或者写入合适的shell profile文件中。将端(如EC2_URL)替换为合适的CloudStack管理服务器地址和端口。可在bash文件中做如下操作。
$ export EC2_CERT=/path/to/cert.pem
$ export EC2_PRIVATE_KEY=/path/to/private_key.pem
$ export EC2_URL=http://localhost:7080/awsapi
$ export EC2_HOME=/path/to/EC2_tools_directory
使用超时设定确保AWS API命令完成¶
Amazon EC2命令行工具有默认的连接超时。在CloudStack中使用时,某些命令可能需要更长的超时。如果你发现命令在超时的时间内未完成,你可以指定用户定制超时。你可以将下面的可选命令行参数添加到任何支持CloudStack的EC2命令。
指定连接超时(秒)
--connection-timeout TIMEOUT
指定请求超时(秒)
--request-timeout TIMEOUT
例如:
ec2-run-instances 2 –z us-test1 –n 1-3 --connection-timeout 120 --request-timeout 120
注解
CloudStack中的超时可选参数并非特定
支持AWS API调用¶
AWS API接口被使能后,CloudStack可支持下面的Amazon EC2命令。对于少数命令,CloudStack与Amazon EC2版本间有一些差异,差异已被标识。对于使用SOAP调用建立工具的用户,与之相关的命令也已给出。
表 1.弹性IP API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-allocate-address | AllocateAddress | associateIpAddress |
ec2-associate-address | AssociateAddress | enableStaticNat |
ec2-describe-addresses | DescribeAddresses | listPublicIpAddresses |
ec2-diassociate-address | DisassociateAddress | disableStaticNat |
ec2-release-address | ReleaseAddress | disassociateIpAddress |
表 2.可用Zone API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-describe-availability-zones | DescribeAvailabilityZones | listZones |
表 3.镜像API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-create-image | CreateImage | createTemplate |
ec2-deregister | DeregisterImage | DeleteTemplate |
ec2-describe-images | DescribeImages | listTemplates |
ec2-register | RegisterImage | registerTemplate |
表 4.镜像属性API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-describe-image-attribute | DescribeImageAttribute | listTemplatePermissions |
ec2-modify-image-attribute | ModifyImageAttribute | updateTemplatePermissions |
ec2-reset-image-attribute | ResetImageAttribute | updateTemplatePermissions |
表 5.实例API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-describe-instances | DescribeInstances | listVirtualMachines |
ec2-run-instances | RunInstances | deployVirtualMachine |
ec2-reboot-instances | RebootInstances | rebootVirtualMachine |
ec2-start-instances | StartInstances | startVirtualMachine |
ec2-stop-instances | StopInstances | stopVirtualMachine |
ec2-terminate-instances | TerminateInstances | destroyVirtualMachine |
表 6 实例属性对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-describe-instance-attribute | DescribeInstanceAttribute | listVirtualMachines |
表 7 密钥对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-add-keypair | CreateKeyPair | createSSHKeyPair |
ec2-delete-keypair | DeleteKeyPair | deleteSSHKeyPair |
ec2-describe-keypairs | DescribeKeyPairs | listSSHKeyPairs |
ec2-import-keypair | ImportKeyPair | registerSSHKeyPair |
表 8.密码API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-get-password | GetPasswordData | getVMPassword |
表 9.安全组API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-authorize | AuthorizeSecurityGroupIngress | authorizeSecurityGroupIngress |
ec2-add-group | CreateSecurityGroup | createSecurityGroup |
ec2-delete-group | DeleteSecurityGroup | deleteSecurityGroup |
ec2-describe-group | DescribeSecurityGroups | listSecurityGroups |
ec2-revoke | RevokeSecurityGroupIngress | revokeSecurityGroupIngress |
表 10.快照API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-create-snapshot | CreateSnapshot | createSnapshot |
ec2-delete-snapshot | DeleteSnapshot | deleteSnapshot |
ec2-describe-snapshots | DescribeSnapshots | listSnapshots |
表 11.卷API对应表
EC2命令 |
SOAP调用 |
CloudStack API调用 |
---|---|---|
ec2-attach-volume | AttachVolume | attachVolume |
ec2-create-volume | CreateVolume | createVolume |
ec2-delete-volume | DeleteVolume | deleteVolume |
ec2-describe-volume | DescribeVolume | listVolumes |
ec2-detach-volume | DetachVolume | detachVolume |
示例¶
有很多工具可以提供接入AWS兼容API。本节中将提供CloudStack用户一些使用用例。
Boto示例¶
Boto是其中一个。Python包可以在 https://github.com/boto/boto 获取。本节中提供两个使用Boto并已被CloudStack AWS API接口测试过的Python脚本示例。
第一个是EC2示例,将访问和加密密钥改成你自己的,并更新端。
示例1.EC2 Boto示例
#!/usr/bin/env python
import sys
import os
import boto
import boto.ec2
region = boto.ec2.regioninfo.RegionInfo(name="ROOT",endpoint="localhost")
apikey='GwNnpUPrO6KgIdZu01z_ZhhZnKjtSdRwuYd4DvpzvFpyxGMvrzno2q05MB0ViBoFYtdqKd'
secretkey='t4eXLEYWw7chBhDlaKf38adCMSHx_wlds6JfSx3z9fSpSOm0AbP9Moj0oGIzy2LSC8iw'
def main():
'''Establish connection to EC2 cloud'''
conn =boto.connect_ec2(aws_access_key_id=apikey,
aws_secret_access_key=secretkey,
is_secure=False,
region=region,
port=7080,
path="/awsapi",
api_version="2010-11-15")
'''Get list of images that I own'''
images = conn.get_all_images()
print images
myimage = images[0]
'''Pick an instance type'''
vm_type='m1.small'
reservation = myimage.run(instance_type=vm_type,security_groups=['default'])
if __name__ == '__main__':
main()
第二个是S3示例。S3接口在CloudStack中已被废弃。如果要使用,需要考察下RiakCS,Ceph或者GlusterFS系统。这个示例已完成并可用于其他S3端。
示例2.S3 Boto示例
#!/usr/bin/env python
import sys
import os
from boto.s3.key import Key
from boto.s3.connection import S3Connection
from boto.s3.connection import OrdinaryCallingFormat
apikey='ChOw-pwdcCFy6fpeyv6kUaR0NnhzmG3tE7HLN2z3OB_s-ogF5HjZtN4rnzKnq2UjtnHeg_yLA5gOw'
secretkey='IMY8R7CJQiSGFk4cHwfXXN3DUFXz07cCiU80eM3MCmfLs7kusgyOfm0g9qzXRXhoAPCH-IRxXc3w'
cf=OrdinaryCallingFormat()
def main():
'''Establish connection to S3 service'''
conn =S3Connection(aws_access_key_id=apikey,aws_secret_access_key=secretkey, \
is_secure=False, \
host='localhost', \
port=7080, \
calling_format=cf, \
path="/awsapi/rest/AmazonS3")
try:
bucket=conn.create_bucket('cloudstack')
k = Key(bucket)
k.key = 'test'
try:
k.set_contents_from_filename('/Users/runseb/Desktop/s3cs.py')
except:
print 'could not write file'
pass
except:
bucket = conn.get_bucket('cloudstack')
k = Key(bucket)
k.key = 'test'
try:
k.get_contents_to_filename('/Users/runseb/Desktop/foobar')
except:
print 'Could not get file'
pass
try:
bucket1=conn.create_bucket('teststring')
k=Key(bucket1)
k.key('foobar')
k.set_contents_from_string('This is my silly test')
except:
bucket1=conn.get_bucket('teststring')
k = Key(bucket1)
k.key='foobar'
k.get_contents_as_string()
if __name__ == '__main__':
main()