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’的桥接网络。这仅仅是指导性的,实际情况还要取决于你的网络布局。
在RHEL或CentOS中配置:¶
网络桥接所需的软件在安装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连接到服务器。
在Ubuntu中配置:¶
在安装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’ 桥接网络。这仅仅是指导性的,实际情况还要取决于你的网络状况。
配置OpenVswitch¶
使用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
在RHEL或CentOS中配置:¶
所需的安装包在安装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凭证清单¶
需要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配置参数:
- 管理员用户名和密码
管理员用户名和密码用于连接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”。
添加VLAN范围¶
决定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’的桥接网络。这仅仅是指导性的,实际情况还要取决于你的网络布局。
在RHEL或CentOS中配置:¶
网络桥接所需的软件在安装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连接到服务器。
在Ubuntu中配置:¶
在安装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。在关闭情况下执行这些命令并不能启用防火墙。