引言
如果你刚接触Apache CloudStack,想了解和熟悉相关概念,可是苦于没有搭建测试环境所需的种种设备,何不使用你现有的PC和VirtualBox?
VirtualBox是一种跨平台的虚拟化应用程序,可以在OS X、Windows、Linux和Solaris等操作系统上运行,这意味着不管你运行什么操作系统,应该都能够运行VirtualBox。
本文的目的是,尽管一切都在笔记本电脑上运行,因而受到明显的制约,还是要搭建一个近可能接近生产部署环境的Apache CloudStack 环境。部署的这个系统将支持Apache CloudStack的下列几大功能:
- 生产级虚拟机管理程序:思杰XenServer 6.2,完全支持虚拟局域网(VLAN);
- CentOS 6.5上的Apache CloudStack;
- 主存储和辅助存储都使用NFS――各自都在专用的VLAN上;
- 控制台代理和辅助存储虚拟机;
- 所有的高级网络功能特性,比如防火墙、网络地址转换(NAT)、端口转发、负载均衡和虚拟私有云(VPC)。
想实现所有这些功能,我们就要在VirtualBox上部署两个虚拟机、为Apache Cloudstack部署一个CentOS虚拟机,以及为虚拟机管理程序部署一个思杰XenServer虚拟机。CloudStack虚拟机还将充当我们的MySQL服务器和NFS服务器。
这种测试环境的一大要求就是,让该环境保持完全独立,那样它可以用于培训(插入Bootcamp链接)和演示等用途。为了实现这个目标,并且保持这一功能:部署新的区域(Zone),下载系统中所要使用的示例CentOS模板,我们模拟CloudStack公共网络,使用NGINX在CloudStack管理服务器上托管运行默认的CentOS模板。
VirtualBox配置
从https://www.virtualbox.org/wiki/Downloads,下载并安装合适的版本。
一旦VirtualBox安装完毕,我们就需要对它进行配置,以便准备用于该环境。尽可能使用默认值,但如果你之前已经一直在使用VirtualBox,可能需要调整不同的设置。
我们将使用三个“Host Only”(仅主机)网络、一个“NAT”网络和一个“Internal”(内部)网络。默认情况下,VirtualBox只有一个“仅主机”网络,于是我们需要另外构建两个仅主机网络。
1. 从“文件”菜单(Windows)或VirtualBox菜单(OS X),选择“Preferences”(偏好设置),然后依次选择“Network”(网络)和“Host-only Networks”(仅主机网络)。
2. 另外构建两个网络,那样至少有三个网络可供我们使用。
3. 为头两个网络设置IP模式(IP Schema),如下所示:
仅主机网络的命名约定不一样,这取决于主机的操作系统,我只是将这些称之为“仅主机网络1”、“仅主机网络2”和“仅主机网络3”,依次类推,所以不妨参阅下列比较矩阵,即可识别正确的网络。
This Guide Windows OS X
- 仅主机网络1 VirtualBox仅主机以太网适配器 vboxnet0
- 仅主机网络2 VirtualBox仅主机以太网适配器#2 vboxnet1
- 仅主机网络3 VirtualBox仅主机以太网适配器#3 vboxnet2
仅主机网络1:
IPv4地址:192.168.56.1
IPv4网络掩码:255.255.255.0
DHCP服务器是可选的,因为我们并不使用它,但要确保地址范围与我们将要使用的静态IP:192.168.56.11和192.168.56.101没有冲突。
仅主机网络2:
IPv4地址:172.30.0.1
IPv4网络掩码:255.255.255.0
通过设置这些IP地址范围,我们就能确保充当主机的笔记本电脑在这些网络上有一个IP,那样我们就能访问与它们连接的虚拟机。我们不需要“仅主机网络3”上的IP,因为这个将用于存储,而且还要运行VLAN。
我们使用NAT网络,那样我们就能将CloudStack管理虚拟机连接到互联网,从而能够安装我们所要使用的各种程序包。
配置VirtualBox“NatNetwork”,以便使用下列设置:
网络名称:NatNetwork
网络CIDR:10.0.2.0/24
由于我们无法控制范围,于是禁用了DHCP,将虚拟机上静态分配的IP排除在外。
虽然本文主要介绍构建单一的CloudStack管理服务器,但是你很容易添加第二台CloudStack管理服务器;我发现,来自NAT网络的DHCP分配IP地址会随机变化,所以设置NAT规则可能问题重重,因此我总是使用静态分配的IP地址。
“内部”网络根本不需要配置。
#p#
CloudStack虚拟机
使用下列设置,为CloudStack管理器创建一个虚拟机:
名称:CSMAN 4.4.1
类型:Linux
版本:Red Hat(64位)
内存:2048(初始安装不能低于这个值)
硬盘:VDI―动态―64 GB(我们分配了这么多的容量,是因为它将充当NFS存储区)。
注意:如果你同时增添所有网络,VirtualBox似乎会将这些网络混同起来,于是我们先添加第1个网络,并安装CentOS,然后一旦完全安装完毕,我们就添加额外的网络,可是在这当中会重启,这似乎是最新版本VirtualBox(截至本文截稿时是4.3.18)的一个bug。
改动设置,为第1个网络适配器分配正确的网络,如下所示:
安装CentOS 6.5 64位minimal版,将主机名称设为CSMAN,将IP地址设为192.168.56.11/24,网关为192.168.56.1,并确保网络已设置成引导时启动。将DNS设成公共服务器,比如8.8.8.8 & 8.8.4.4。
一旦安装完毕,重启虚拟机,核实eth0处于活动状态,然后关闭虚拟机,添加第2个网络适配器。
引导虚拟机,那样它能检测到网卡,然后关闭,添加第3个适配器。
引导虚拟机,那样它能检测到网卡,然后关闭,添加第4个适配器。
最后,引导虚拟机,那样它能检测到最后一个适配器,然后我们就能为各个网卡配置正确的IP模式。
- ifcfg-eth0
- DEVICE=eth0
- TYPE=Ethernet
- IPADDR=192.168.56.11
- PREFIX=24
- ONBOOT=yes
- NM_CONTROLLED=no
- BOOTPROTO=none
- IPV4_FAILURE_FATAL=yes
- IPV6INIT=no
- NAME=MGMT
- ifcfg-eth1
- DEVICE=eth1
- TYPE=Ethernet
- IPADDR=10.0.2.11
- GATEWAY=10.0.2.1
- PREFIX=24
- ONBOOT=yes
- NM_CONTROLLED=no
- BOOTPROTO=none
- DEFROUTE=yes
- PEERROUTES=yes
- IPV4_FAILURE_FATAL=yes
- IPV6INIT=no
- NAME=NAT
- ifcfg-eth2
- DEVICE=eth2
- TYPE=Ethernet
- IPADDR=172.30.0.11
- PREFIX=24
- ONBOOT=yes
- NM_CONTROLLED=no
- BOOTPROTO=none
- IPV4_FAILURE_FATAL=yes
- IPV6INIT=no
- NAME=PUBLIC
- ifcfg-eth3
- DEVICE=eth3
- TYPE=Ethernet
- BOOTPROTO=none
- ONBOOT=yes
- MTU=9000
- VLAN=yes
- USERCTL=no
- MTU=9000
- ifcfg-eth3.100
- DEVICE=eth3.100
- TYPE=Ethernet
- IPADDR=10.10.100.11
- PREFIX=24
- ONBOOT=yes
- BOOTPROTO=none
- NAME=PRI-STOR
- VLAN=yes
- USERCTL=no
- MTU=9000
- ifcfg-eth3.101
- DEVICE=eth3.101
- TYPE=Ethernet
- IPADDR=10.10.101.11
- PREFIX=24
- ONBOOT=yes
- BOOTPROTO=none
- NAME=SEC-STOR
- VLAN=yes
- USERCTL=no
- MTU=9000
重启网络让新设置生效,然后打上所有最新的更新版。
- service networking restart
- yum update -y
#p#
安装和配置
基本的虚拟机构建好后,我们现在需要安装Apache CloudStack及该虚拟机将托管运行的其他所有服务。首先我们要确保虚拟机配置正确。
Selinux
Selinux需要设置成“permissive”(宽容模式),为此我们可以通过运行下面两个命令来实现:
- setenforce permissive
- sed -i “/SELINUX=enforcing/ c\SELINUX=permissive” /etc/selinux/config
主机名称
你在运行hostname –fqdn后,CloudStack管理服务器应该会返回FQDN(完全符合标准的域名),但由于我们没有安装一个正常运行的DNS,可能会返回“未知主机”。为了解决这个问题,我们只要在Hosts文件里面添加一项;我们在Hosts文件里面时,最好也为xenserver添加一项。用下面命令更新/etc/hosts,然后重启让其生效。
- 127.0.0.1 localhost localhost.cstack.local
- 192.168.56.11 csman.cstack.local csman
- 192.168.56.101 xenserver.cstack.local xenserver
为SSH连接提速
由于你想使用SSH连接到CloudStack虚拟机,有必要关闭DNS检查,以便为连接提速。运行下列命令:
- sed -i “/#UseDNS yes/ c\UseDNS no” /etc/ssh/sshd_config
- service sshd restart
NTP
- sed -i “/#UseDNS yes/ c\UseDNS no” /etc/ssh/sshd_config
- service sshd restart
安装NTP总是个好主意,所以不妨现在添加NTP,并将它设成引导时启动(你总是可以配置该虚拟机,为XenServer充当NTP服务器,但这不在本文探讨范围之内)。
- yum install -y ntp# chkconfig ntpd on# service ntpd start
CloudStack软件库
运行下面这个命令,安装CloudStack软件库:
- echo “[cloudstack]
- name=cloudstack
- baseurl=http://packages.shapeblue.com/cloudstack/main/centos/4.4
- enabled=1
- gpgcheck=1″ > /etc/yum.repos.d/cloudstack.repo
导入ShapeBlue gpg版本密钥:(密钥ID 584DF93F,密钥指纹= 7203 0CA1 18C1 A275 68B1 37C4 BDF0 E176 584D F93F)
- yum install wget -y
- wget http://packages.shapeblue.com/release.asc
- sudo rpm –import release.asc
安装CloudStack和MySQL
现在我们可以安装CloudStack和MySQL Server了:
- yum install -y cloudstack-management mysql-server
安装NFS服务器
由于CSMAN虚拟机还将充当NFS服务器,我们需要设置NFS环境。运行下列命令,即可为主存储和辅助存储创建文件夹,然后将它们导出到合适的IP地址范围。
- mkdir /exports
- mkdir -p /exports/primary
- mkdir -p /exports/secondary
- chmod 777 -R /exports
- echo “/exports/primary 10.10.100.0/24(rw,async,no_root_squash)” > /etc/exports
- echo “/exports/secondary 10.10.101.0/24(rw,async,no_root_squash)” >> /etc/exports
- exportfs -a
我们现在需要用设置来更新/etc/sysconfig/nfs,以便激活NFS服务器。运行下面这个命令,更新所需的设置
- sed -i -e ‘/#MOUNTD_NFS_V3=”no”/ c\MOUNTD_NFS_V3=”yes”‘ -e ‘/#RQUOTAD_PORT=875/ c\RQUOTAD_PORT=875′ -e ‘/#LOCKD_TCPPORT=32803/ c\LOCKD_TCPPORT=32803′ -e ‘/#LOCKD_UDPPORT=32769/ c\LOCKD_UDPPORT=32769′ -e ‘/#MOUNTD_PORT=892/ c\MOUNTD_PORT=892′ -e ‘/#STATD_PORT=662/ c\STATD_PORT=662′ -e ‘/#STATD_OUTGOING_PORT=2020/ c\STATD_OUTGOING_PORT=2020′ /etc/sysconfig/nfs
我们还需要更新防火墙设置,让XenServer可以访问导出的NFS,所以运行下列命令,配置所需的设置:
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 111 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 111 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 2049 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 2049 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 2020 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 32803 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 32769 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 892 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 892 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 875 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 875 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 662 -j ACCEPT” /etc/sysconfig/iptables
- sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 662 -j ACCEPT” /etc/sysconfig/iptables
- service iptables restart
然后,我们将nfs服务设成引导时自动启动,还可以立即启动它
- chkconfig nfs on
- service nfs start
安装MySQL Server
- sed -i -e ‘/datadir/ a\innodb_rollback_on_timeout=1′ -e ‘/datadir/ a\innodb_lock_wait_timeout=600′ -e ‘/datadir/ a\max_connections=350′ -e ‘/datadir/ a\log-bin=mysql-bin’ -e “/datadir/ a\binlog-format = ‘ROW’” -e “/datadir/ a\bind-address = 0.0.0.0″ /etc/my.cnf
然后,我们将mysqld服务设成引导时自动启动,还可以立即启动它
- chkconfig mysqld on
- service mysqld start
确保默认安装的MySQL安全,这始终是个好主意;有一款使用方便的实用工具可以为你确保其安全。运行下面这个命令,看到提示时设置一个新的密码(当前密码将是空的),接受删除匿名用户、测试数据库和禁用远程访问等的所有默认值。
- mysql_secure_installation
现在我们将登录进入到MySQL,为根帐户赋予所有权限,这么做是为了可以在下一步中创建“cloud”帐户。
- mysql -u root -p (enter password when prompted)
- mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ WITH GRANT OPTION;
- mysql> quit
安装数据库
MySQL配置完毕后,我们现在可以安装CloudStack数据库了,只要运行下面两个命令,代替你之前设置的根密码。
- cloudstack-setup-databases cloud:cloud@127.0.0.1 –deploy-as=root:<password>
- cloudstack-setup-management
Nginx
有一个默认的示例模板从cloud.com网站服务器下载;但由于这个测试系统无法实际访问公共互联网,我们需要为辅助存储虚拟机下载该模板提供一个办法。为此,我们将NGINX安装在CSMAN虚拟机上,并使用它托管运行我们模拟的“公共”网络上的模板。
首先创建NGINX软件库,为此运行下面这个命令:
- echo “[nginx]
- name=nginx repo
- baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
- gpgcheck=0
- enabled=1″ > /etc/yum.repos.d/nginx.repo
然后安装NGINX,为此运行下面这个命令:
- yum install nginx -y
现在,我们运行下面两个命令,下载XenServer的示例CentOS模板:
- cd /usr/share/nginx/html
- wget -nc http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2
我们需要添加防火墙规则,允许通过端口80来访问,所以运行下面两个命令:
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT” /etc/sysconfig/iptables
- service iptables restart
最后,我们启动nginx服务,通过从Host笔记本电脑访问http://192.168.56.11/,对它进行测试
- service nginx start
XenServer vhd-util
由于我们要使用思杰XenServer作为虚拟机管理程序,我们需要下载一个特殊的实用工具,每个XenServer添加到系统上后,该实用工具将拷贝到每个XenServer。运行下面几行,即可下载文件、更新许可权限。
- cd /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/
- wget http://download.cloud.com.s3.amazonaws.com/tools/vhd-util
- chmod 755 /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/vhd-util
#p#
创建CloudStack默认系统虚拟机模板
由于现在我们需要为辅助存储创建XenServer系统虚拟机模板,于是运行下面这个命令:
- /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /exports/secondary -u http://packages.shapeblue.com/systemvmtemplate/4.4/4.4.1/systemvm64template-4.4.1-7-xen.vhd.bz2 -h xenserver -F
CloudStack Usage Server
一个可选的步骤是安装CloudStack Usage Service,为此运行下面这个命令:
- yum install cloudstack-usage -y
- service cloudstack-usage start
定制配置
为了让这个测试系统能够在4GB内存的笔记本电脑上有限的可用资源里面工作,我们需要对配置做多处改动。
首先,我们需要启用使用支持非HVM(完全虚拟化)的XenServer。你将XenServer安装到VirtualBox上时,它会提醒它只支持PV(半虚拟化),而不支持HVM。为了解决这个问题,我们运行下列SQL更新命令,为云数据库中的配置表添加新的一行(记得你在安装CloudStack数据库时,代替你所使用的自己的MySQL Cloud密码)。
- mysql -p<password> cloud -e \ “INSERT INTO cloud.configuration (category, instance, component, name, value, description) VALUES (‘Advanced’, ‘DEFAULT’, ‘management-server’, ‘xen.check.hvm’, ‘false’, ‘Shoud we allow only the XenServers support HVM’);”
下列MySQL命令更新各种全局设置,并更改分配给系统虚拟机的资源,那样它们可以在有限的可用资源里面工作。
- mysql -u cloud -p<password>
- UPDATE cloud.configuration SET value=’8096′ WHERE name=’integration.api.port’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’expunge.delay’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’expunge.interval’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’account.cleanup.interval’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’capacity.skipcounting.hours’;
- UPDATE cloud.configuration SET value=’0.99′ WHERE name=’cluster.cpu.allocated.capacity.disablethreshold’;
- UPDATE cloud.configuration SET value=’0.99′ WHERE name=’cluster.memory.allocated.capacity.disablethreshold’;
- UPDATE cloud.configuration SET value=’0.99′ WHERE name=’pool.storage.capacity.disablethreshold’;
- UPDATE cloud.configuration SET value=’0.99′ WHERE name=’pool.storage.allocated.capacity.disablethreshold’;
- UPDATE cloud.configuration SET value=’60000′ WHERE name=’capacity.check.period’;
- UPDATE cloud.configuration SET value=’1′ WHERE name=’event.purge.delay’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’network.gc.interval’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’network.gc.wait’;
- UPDATE cloud.configuration SET value=’600′ WHERE name=’vm.op.cleanup.interval’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’vm.op.cleanup.wait’;
- UPDATE cloud.configuration SET value=’600′ WHERE name=’vm.tranisition.wait.interval’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’vpc.cleanup.interval’;
- UPDATE cloud.configuration SET value=’4′ WHERE name=’cpu.overprovisioning.factor’;
- UPDATE cloud.configuration SET value=’8′ WHERE name=’storage.overprovisioning.factor’;
- UPDATE cloud.configuration SET value=’192.168.56.11/32′ WHERE name=’secstorage.allowed.internal.sites’;
- UPDATE cloud.configuration SET value=’192.168.56.0/24′ WHERE name=’management.network.cidr’;
- UPDATE cloud.configuration SET value=’192.168.56.11′ WHERE name=’host’;
- UPDATE cloud.configuration SET value=’false’ WHERE name=’check.pod.cidrs’;
- UPDATE cloud.configuration SET value=’0′ WHERE name=’network.throttling.rate’;
- UPDATE cloud.configuration SET value=’0′ WHERE name=’vm.network.throttling.rate’;
- UPDATE cloud.configuration SET value=’GMT’ WHERE name=’usage.execution.timezone’;
- UPDATE cloud.configuration SET value=’16:00′ WHERE name=’usage.stats.job.exec.time’;
- UPDATE cloud.configuration SET value=’true’ WHERE name=’enable.dynamic.scale.vm’;
- UPDATE cloud.configuration SET value=’9000′ WHERE name=’secstorage.vm.mtu.size’;
- UPDATE cloud.configuration SET value=’60′ WHERE name=’alert.wait’;
- UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’domainrouter’;
- UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’elasticloadbalancervm’;
- UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’secondarystoragevm’;
- UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’internalloadbalancervm’;
- UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’consoleproxy’;
- UPDATE cloud.vm_template SET removed=now() WHERE id=’2′;
- UPDATE cloud.vm_template SET url=’http://192.168.56.11/centos56-x86_64.vhd.bz2′ WHERE unique_name=’centos56-x86_64-xen’;
- quit
service cloudstack-management restart
为了能够通过默认端口8096访问我们启用的Un-Authenticated API,我们需要添加一条防火墙规则。运行下列命令,允许通过防火墙访问端口8096:
- sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 8096 -j ACCEPT” /etc/sysconfig/iptables
- service iptables restart
测试用户界面
给一两分钟的时间,好让cloudstack-management服务完全重启,然后登录到用户界面(UI),应该可以通过http://192.168.56.11:8080/client/,从Host笔记本电脑来访问该UI:
默认的登录信息如下:
- 用户名:admin
- 密码:password
- 域:<空>
创建计算方案
默认的Compute Offering(计算方案)并不适合这个有限的环境,于是我们需要使用下列设置,创建一个新的计算方案:
- 名称:超小(Ultra Tiny)
- 描述:超小– 1vCPU和128MB内存
- 存储类型:共享式
- 自定义:无
- 处理器核心数量:1
- 处理器(MHz):500
- 内存(MB):128
- 网络速率(Mb/s):无
- 服务质量类型:无
- 提供高可用性:有
- 存储标记:无
- 主机标记:无
- 处理器上限:无
- 公共:是
- 易失性:无
- 部署规划器:无
- GPU:无
减少内存数量
成功登录到UI后,数据库会完全部署,所以现在我们可以将内存减少到1GB,为我们的XenServer释放内存。关闭虚拟机,将设置改成1024 MB内存。
#p#
XenServer虚拟机
想配置XenServer,如果你在运行Windows,就需要XenCenter在本地主机上运行;但如果你的主机在运行OS X或Linux,那么你就要添加一个能运行XenCenter的Windows虚拟机。你可以从http://downloadns.citrix.com.edgesuite.net/akdlm/8160/XenServer-6.2.0-XenCenter.msi下载XenCenter。
使用下列设置,为XenServer创建一个虚拟机:
- 名称:XenServer
- 类型:Linux
- 版本:Red Hat(64位)
- 虚拟处理器:2
- 内存:1536(如果你的主机有8GB内存,可以考虑分配3072MB)
- 硬盘:VDI – 动态– 24 GB
注意:如果你同时添加所有网络,VirtualBox似乎会将它们混同起来,于是我们添加第1个网络,并安装XenServer,然后一旦完全安装完毕,我们添加额外的网络,但在这当中会出现重启。这似乎是最新版本VirtualBox(截至本文截稿时为4.3.18)的一个bug。
改动设置,为第1个网络适配器分配正确的网络,如下所示:
请注意:我们已将“Promiscuous Mode”(混杂模式)设成“Allow All”(允许所有)。
现在安装XenServer 6.2,为此从http://downloadns.citrix.com.edgesuite.net/akdlm/8159/XenServer-6.2.0-install-cd.iso下载ISO文件,引导虚拟机。
XenServer安装向导简单直观,不过你会看到警告信息,表明缺少硬件虚拟化的支持,这在意料之中,因为VirtualBox不支持该功能。接受警告,继续下一步。
选择合适的区域设置,看到提示时输入下列详细信息(我们为DNS和NTP输入CSMAN虚拟机的IP;虽然本文并不探讨在CSMAN虚拟机上构建这些服务,但这为你提供了之后可以这么做的选项):
- 启用自动精简配置:是
- 安装源:本地介质
- 补充包:无
- 验证:略过
- 密码:<password>
- 静态IP:192.168.56.101/24(无需网关)
- 主机名称:xenserver
- DNS:192.168.56.11
- NTP:192.168.56.11
一旦XenServer安装完毕,卸载ISO,重启虚拟机。
我们现在需要将分配给Dom0的内存数量改成最少推荐数量(400MB),为此只要在XenServer控制台上运行下面这个命令:
- /opt/xensource/libexec/xen-cmdline –set-xen dom0_mem=400M,max:400M
XenServer补丁
安装XenServer补丁很重要,虽然XenCenter会告知你需要什么补丁,但由于我们使用OpenSource版本的XenServer,所以我们必须通过命令行来安装补丁。幸好,有好多办法可以让这个过程实现自动化。
我个人总是使用PXE来部署XenServer,而补丁的安装环节内置在我的部署过程中。不过,这不在本文探讨范围之内,但是Tim Mackey已写了一篇出色的博文,介绍如何做到这一点,详见http://xenserver.org/discuss-virtualization/virtualization-blog/entry/patching-xenserver-at-scale.html。
虽然Tim的方法:每个补丁安装后重启是最佳实践,但安装所有补丁要花很长的时间,所以我在这些非生产测试环境中使用的另一种方法在https://github.com/amesserl/xs_patcher作了详细介绍。这个方法可安装所有补丁,只需要重启一次。
配置文件“clearwater”现在有点过时了,应该含有下列内容(而缓存文件夹应该含有相关的补丁文件):
- XS62E014|78251ea4-e4e7-4d72-85bd-b22bc137e20b|downloadns.citrix.com.edgesuite.net/8736/XS62E014.zip|support.citrix.com/article/CTX140052
- XS62ESP1|0850b186-4d47-11e3-a720-001b2151a503|downloadns.citrix.com.edgesuite.net/8707/XS62ESP1.zip|support.citrix.com/article/CTX139788
- XS62ESP1003|c208dc56-36c2-4e91-b8d7-0246575b1828|downloadns.citrix.com.edgesuite.net/9031/XS62ESP1003.zip|support.citrix.com/article/CTX140416
- XS62ESP1005|1c952800-c030-481c-a0c1-d1b45aa19fcc|downloadns.citrix.com.edgesuite.net/9058/XS62ESP1005.zip|support.citrix.com/article/CTX140553
- XS62ESP1009|a24d94e1-326b-4eaa-8611-548a1b5f8bd5|downloadns.citrix.com.edgesuite.net/9617/XS62ESP1009.zip|support.citrix.com/article/CTX141191
- XS62ESP1013|b22d6335-823d-43a6-ba26-28793717125b|downloadns.citrix.com.edgesuite.net/9703/XS62ESP1013.zip|support.citrix.com/article/CTX141480
- XS62ESP1014|4fc82e62-b938-407d-a2c6-68c8922f3ec2|downloadns.citrix.com.edgesuite.net/9708/XS62ESP1014.zip|support.citrix.com/article/CTX141486
一旦你给XenServer全面打上了补丁,关闭它,然后添加第2个适配器,再次要注意我们如何将“混杂模式”设成“允许所有”。
启动虚拟机,然后使用XenCenter,对网卡执行“重新扫描”,以检测到这个新网卡,然后关闭,添加第3个适配器,再次要注意我们如何将“混杂模式”设成“允许所有”。
启动虚拟机,然后使用XenCenter,对网卡执行“重新扫描”,以检测到这个新网卡,然后关闭,添加第4个适配器,再次要注意我们如何将“混杂模式”设成“允许所有”。
启动虚拟机,然后使用XenCenter,对网卡执行“重新扫描”,以检测到最后这个网卡,然后最后一次重启,确保它们都已被激活和连接。
#p#
配置XenServer网络
现在我们准备配置XenServer网络。我们应该已有下列四个网络,有必要确保MAC与VirtualBox中的适配器相对应。
我们需要使用一种更合乎逻辑的命名约定,为网络改名,还要创建两个存储网络,并分配VLAN,等等。
首先改名,将存储网络的最大传输单元(MTU)设成9000(其余的仍然是默认的1500)。
- Network 0 – MGMT
- Network 1 – GUEST
- Network 2 – PUBLIC
- Network 3 – STORAGE (MTU为9000)
下一步,我们使用下列设置,添加主存储网络:
- 类型:外部网络
- 名称:PRI-STORAGE
- 网卡:NIC 3
- VLAN:100
- MTU:9000
- 然后,添加辅助存储网络:
- 类型:外部网络
- 名称:SEC-STORAGE
- 网卡:NIC 3
- VLAN:101
- MTU:9000
最后,我们为主存储网络和辅助存储网络添加IP地址,那样XenServer就能访问它们:
- 名称:PRI-STOR
- 网络:PRI-STORAGE
- IP地址:10.10.100.101
- 子网掩码:255.255.255.0
- 网关:<空>
- 名称:SEC-STOR
- 网络:SEC-STORAGE
- IP地址:10.10.101.101
- 子网掩码:55.255.255.0
- 网关:<空>
这是XenServer需要的所有配置,所以现在我们可以接着部署我们的第一个区域了。不过在我们着手之前,有必要创建两个虚拟机的快照,那样万一需要,你可以恢复原状,再次启动。
部署区域
我们现在添加一个高级区域,为此进入到“Infrastructure/Zones/Add Zone”(基础设施/区域/添加区域),创建一个类型为“高级”的新区域,没有安全组。
- 区域名称– Test
- IPv4 DNS1 – 8.8.8.8
- 内部DNS 1 – 192.168.56.11
- 虚拟机管理程序– XenServer
- 访客CIDR – 10.1.1.0/24
下一步,我们需要设置XenServer流量标签,以便与我们分配给XenServer上的每个网络的名称相一致,我们还要添加可选的存储网络,为此将它拖拉到物理网络上。
编辑每一个流量类型,并设置下列标签:
- 管理网络– MGMT
- 公共网络– PUBLIC
- 访客网络– GUEST
- 存储网络– SEC-STORAGE
然后使用下列设置,继续按区域添加向导的提示来操作
- 公共流量
- 网关– 172.30.0.1
- 网络掩码– 255.255.255.0
- VLAN – <空>
- 起始IP – 172.30.0.21
- 终止IP -172.30.0.30
- POD设置
- POD名称– POD1
- 预留系统网关– 192.168.56.1
- 预留系统网络掩码– 255.255.255.0
- 起始预留系统IP – 192.168.56.21
- 终止预留系统IP – 192.168.56.30
- 访客流量
- VLAN范围– 600 – 699
- 存储流量
- 网关– 10.10.101.1
- 网络掩码– 255.255.255.0
- VLAN – <空>
- 起始IP – 10.10.101.21
- 终止IP – 10.10.101.30
- 集群设置
- 虚拟机管理程序– XenServer
- 集群名称– CLU1
- 主机设置
- 主机名称– 192.168.56.101
- 用户名– root
- 密码– <password>
- 主存储设置
- 名称– PRI1
- 范围– Cluster
- 服务器– 10.10.100.11
- 路径– /exports/primary
- 辅助存储设置
- 提供者– NFS
- 名称– SEC1
- 服务器– 10.10.101.11
- 路径– /exports/secondary
最后,激活区域,然后给大约5分钟的时间,好让系统虚拟机部署、默认的CentOS模板“下载”到系统中。现在你可以准备部署第一个访客虚拟机了。