中国领先的IT技术网站
|
|

使用VirtualBox构建CloudStack测试环境,轻松体验更多功能

如果你刚接触Apache CloudStack,想了解和熟悉相关概念,可是苦于没有搭建测试环境所需的种种设备,何不使用你现有的PC和VirtualBox?

作者:布加迪编译来源:51CTO|2015-01-16 09:00


引言

如果你刚接触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. 仅主机网络1  VirtualBox仅主机以太网适配器 vboxnet0
  2. 仅主机网络2  VirtualBox仅主机以太网适配器#2 vboxnet1
  3. 仅主机网络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地址。

“内部”网络根本不需要配置。

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模式。

  1. ifcfg-eth0 
  2.  
  3. DEVICE=eth0 
  4.  
  5. TYPE=Ethernet 
  6.  
  7. IPADDR=192.168.56.11 
  8.  
  9. PREFIX=24 
  10. ONBOOT=yes 
  11. NM_CONTROLLED=no 
  12. BOOTPROTO=none 
  13. IPV4_FAILURE_FATAL=yes 
  14. IPV6INIT=no 
  15. NAME=MGMT 
  16.  
  17. ifcfg-eth1 
  18. DEVICE=eth1 
  19. TYPE=Ethernet 
  20. IPADDR=10.0.2.11 
  21. GATEWAY=10.0.2.1 
  22. PREFIX=24 
  23. ONBOOT=yes 
  24. NM_CONTROLLED=no 
  25. BOOTPROTO=none 
  26. DEFROUTE=yes 
  27. PEERROUTES=yes 
  28. IPV4_FAILURE_FATAL=yes 
  29. IPV6INIT=no 
  30. NAME=NAT 
  31.  
  32. ifcfg-eth2 
  33. DEVICE=eth2 
  34. TYPE=Ethernet 
  35. IPADDR=172.30.0.11 
  36. PREFIX=24 
  37. ONBOOT=yes 
  38. NM_CONTROLLED=no 
  39. BOOTPROTO=none 
  40. IPV4_FAILURE_FATAL=yes 
  41. IPV6INIT=no 
  42. NAME=PUBLIC 
  43.  
  44. ifcfg-eth3 
  45. DEVICE=eth3 
  46. TYPE=Ethernet 
  47. BOOTPROTO=none 
  48. ONBOOT=yes 
  49. MTU=9000 
  50. VLAN=yes 
  51. USERCTL=no 
  52. MTU=9000 
  53.  
  54. ifcfg-eth3.100 
  55. DEVICE=eth3.100 
  56. TYPE=Ethernet 
  57. IPADDR=10.10.100.11 
  58. PREFIX=24 
  59. ONBOOT=yes 
  60. BOOTPROTO=none 
  61. NAME=PRI-STOR 
  62. VLAN=yes 
  63. USERCTL=no 
  64. MTU=9000 
  65.  
  66. ifcfg-eth3.101 
  67. DEVICE=eth3.101 
  68. TYPE=Ethernet 
  69. IPADDR=10.10.101.11 
  70. PREFIX=24 
  71. ONBOOT=yes 
  72. BOOTPROTO=none 
  73. NAME=SEC-STOR 
  74. VLAN=yes 
  75. USERCTL=no 
  76. MTU=9000 

重启网络让新设置生效,然后打上所有最新的更新版。

  1. service networking restart 
  2. yum update -y 

安装和配置

基本的虚拟机构建好后,我们现在需要安装Apache CloudStack及该虚拟机将托管运行的其他所有服务。首先我们要确保虚拟机配置正确。

Selinux

Selinux需要设置成“permissive”(宽容模式),为此我们可以通过运行下面两个命令来实现:

  1. setenforce permissive 
  2.  
  3. sed -i “/SELINUX=enforcing/ c\SELINUX=permissive” /etc/selinux/config 

主机名称

你在运行hostname –fqdn后,CloudStack管理服务器应该会返回FQDN(完全符合标准的域名),但由于我们没有安装一个正常运行的DNS,可能会返回“未知主机”。为了解决这个问题,我们只要在Hosts文件里面添加一项;我们在Hosts文件里面时,最好也为xenserver添加一项。用下面命令更新/etc/hosts,然后重启让其生效。

  1. 127.0.0.1 localhost localhost.cstack.local 
  2.  
  3. 192.168.56.11 csman.cstack.local csman 
  4.  
  5. 192.168.56.101 xenserver.cstack.local xenserver 

为SSH连接提速

由于你想使用SSH连接到CloudStack虚拟机,有必要关闭DNS检查,以便为连接提速。运行下列命令:

  1. sed -i “/#UseDNS yes/ c\UseDNS no” /etc/ssh/sshd_config 
  2.  
  3. service sshd restart 

NTP

  1. sed -i “/#UseDNS yes/ c\UseDNS no” /etc/ssh/sshd_config 
  2.  
  3. service sshd restart 

安装NTP总是个好主意,所以不妨现在添加NTP,并将它设成引导时启动(你总是可以配置该虚拟机,为XenServer充当NTP服务器,但这不在本文探讨范围之内)。

  1. yum install -y ntp# chkconfig ntpd on# service ntpd start 

CloudStack软件库

运行下面这个命令,安装CloudStack软件库:

  1. echo “[cloudstack] 
  2. name=cloudstack 
  3. baseurl=http://packages.shapeblue.com/cloudstack/main/centos/4.4 
  4. enabled=1 
  5. gpgcheck=1″ > /etc/yum.repos.d/cloudstack.repo 

导入ShapeBlue gpg版本密钥:(密钥ID 584DF93F,密钥指纹= 7203 0CA1 18C1 A275 68B1 37C4 BDF0 E176 584D F93F)

  1. yum install wget -y 
  2. wget http://packages.shapeblue.com/release.asc 
  3. sudo rpm –import release.asc 

安装CloudStack和MySQL

现在我们可以安装CloudStack和MySQL Server了:

  1. yum install -y cloudstack-management mysql-server 

安装NFS服务器

由于CSMAN虚拟机还将充当NFS服务器,我们需要设置NFS环境。运行下列命令,即可为主存储和辅助存储创建文件夹,然后将它们导出到合适的IP地址范围。

  1. mkdir /exports 
  2. mkdir -p /exports/primary 
  3. mkdir -p /exports/secondary 
  4. chmod 777 -R /exports 
  5. echo “/exports/primary 10.10.100.0/24(rw,async,no_root_squash)” > /etc/exports 
  6. echo “/exports/secondary 10.10.101.0/24(rw,async,no_root_squash)” >> /etc/exports 
  7. exportfs -a 

我们现在需要用设置来更新/etc/sysconfig/nfs,以便激活NFS服务器。运行下面这个命令,更新所需的设置

  1. 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,所以运行下列命令,配置所需的设置:

  1. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 111 -j ACCEPT” /etc/sysconfig/iptables 
  2. sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 111 -j ACCEPT” /etc/sysconfig/iptables 
  3. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 2049 -j ACCEPT” /etc/sysconfig/iptables 
  4. sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 2049 -j ACCEPT” /etc/sysconfig/iptables 
  5. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 2020 -j ACCEPT” /etc/sysconfig/iptables 
  6. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 32803 -j ACCEPT” /etc/sysconfig/iptables 
  7. sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 32769 -j ACCEPT” /etc/sysconfig/iptables 
  8. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 892 -j ACCEPT” /etc/sysconfig/iptables 
  9. sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 892 -j ACCEPT” /etc/sysconfig/iptables 
  10. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 875 -j ACCEPT” /etc/sysconfig/iptables 
  11. sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 875 -j ACCEPT” /etc/sysconfig/iptables 
  12. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 662 -j ACCEPT” /etc/sysconfig/iptables 
  13. sed -i -e “/:OUTPUT/ a\-A INPUT -p udp -m udp –dport 662 -j ACCEPT” /etc/sysconfig/iptables 
  14. service iptables restart 

然后,我们将nfs服务设成引导时自动启动,还可以立即启动它

  1. chkconfig nfs on 
  2. service nfs start 

安装MySQL Server

  1. 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服务设成引导时自动启动,还可以立即启动它

  1. chkconfig mysqld on 
  2. service mysqld start 

确保默认安装的MySQL安全,这始终是个好主意;有一款使用方便的实用工具可以为你确保其安全。运行下面这个命令,看到提示时设置一个新的密码(当前密码将是空的),接受删除匿名用户、测试数据库和禁用远程访问等的所有默认值。

  1. mysql_secure_installation 

现在我们将登录进入到MySQL,为根帐户赋予所有权限,这么做是为了可以在下一步中创建“cloud”帐户。

  1. mysql -u root -p (enter password when prompted) 
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ WITH GRANT OPTION; 
  3. mysql> quit 

安装数据库

MySQL配置完毕后,我们现在可以安装CloudStack数据库了,只要运行下面两个命令,代替你之前设置的根密码。

  1. cloudstack-setup-databases cloud:cloud@127.0.0.1 –deploy-as=root:<password> 
  2. cloudstack-setup-management 

Nginx

有一个默认的示例模板从cloud.com网站服务器下载;但由于这个测试系统无法实际访问公共互联网,我们需要为辅助存储虚拟机下载该模板提供一个办法。为此,我们将NGINX安装在CSMAN虚拟机上,并使用它托管运行我们模拟的“公共”网络上的模板。

首先创建NGINX软件库,为此运行下面这个命令:

  1. echo “[nginx] 
  2. name=nginx repo 
  3. baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/ 
  4. gpgcheck=0 
  5. enabled=1″ > /etc/yum.repos.d/nginx.repo 

然后安装NGINX,为此运行下面这个命令:

  1. yum install nginx -y  

现在,我们运行下面两个命令,下载XenServer的示例CentOS模板:

  1. cd /usr/share/nginx/html 
  2. wget -nc http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2 

我们需要添加防火墙规则,允许通过端口80来访问,所以运行下面两个命令:

  1. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT” /etc/sysconfig/iptables 
  2. service iptables restart 

最后,我们启动nginx服务,通过从Host笔记本电脑访问http://192.168.56.11/,对它进行测试

  1. service nginx start 

XenServer vhd-util

由于我们要使用思杰XenServer作为虚拟机管理程序,我们需要下载一个特殊的实用工具,每个XenServer添加到系统上后,该实用工具将拷贝到每个XenServer。运行下面几行,即可下载文件、更新许可权限。

  1. cd /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/ 
  2. wget http://download.cloud.com.s3.amazonaws.com/tools/vhd-util 
  3. chmod 755 /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/vhd-util 

创建CloudStack默认系统虚拟机模板

由于现在我们需要为辅助存储创建XenServer系统虚拟机模板,于是运行下面这个命令:

  1. /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,为此运行下面这个命令:

  1. yum install cloudstack-usage -y 
  2. service cloudstack-usage start 

定制配置

为了让这个测试系统能够在4GB内存的笔记本电脑上有限的可用资源里面工作,我们需要对配置做多处改动。

首先,我们需要启用使用支持非HVM(完全虚拟化)的XenServer。你将XenServer安装到VirtualBox上时,它会提醒它只支持PV(半虚拟化),而不支持HVM。为了解决这个问题,我们运行下列SQL更新命令,为云数据库中的配置表添加新的一行(记得你在安装CloudStack数据库时,代替你所使用的自己的MySQL Cloud密码)。

  1. 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命令更新各种全局设置,并更改分配给系统虚拟机的资源,那样它们可以在有限的可用资源里面工作。

  1. mysql -u cloud -p<password> 
  2. UPDATE cloud.configuration SET value=’8096′ WHERE name=’integration.api.port’; 
  3. UPDATE cloud.configuration SET value=’60′ WHERE name=’expunge.delay’; 
  4. UPDATE cloud.configuration SET value=’60′ WHERE name=’expunge.interval’; 
  5. UPDATE cloud.configuration SET value=’60′ WHERE name=’account.cleanup.interval’; 
  6. UPDATE cloud.configuration SET value=’60′ WHERE name=’capacity.skipcounting.hours’; 
  7. UPDATE cloud.configuration SET value=’0.99′ WHERE name=’cluster.cpu.allocated.capacity.disablethreshold’; 
  8. UPDATE cloud.configuration SET value=’0.99′ WHERE name=’cluster.memory.allocated.capacity.disablethreshold’; 
  9. UPDATE cloud.configuration SET value=’0.99′ WHERE name=’pool.storage.capacity.disablethreshold’; 
  10. UPDATE cloud.configuration SET value=’0.99′ WHERE name=’pool.storage.allocated.capacity.disablethreshold’; 
  11. UPDATE cloud.configuration SET value=’60000′ WHERE name=’capacity.check.period’; 
  12. UPDATE cloud.configuration SET value=’1′ WHERE name=’event.purge.delay’; 
  13. UPDATE cloud.configuration SET value=’60′ WHERE name=’network.gc.interval’; 
  14. UPDATE cloud.configuration SET value=’60′ WHERE name=’network.gc.wait’; 
  15. UPDATE cloud.configuration SET value=’600′ WHERE name=’vm.op.cleanup.interval’; 
  16. UPDATE cloud.configuration SET value=’60′ WHERE name=’vm.op.cleanup.wait’; 
  17. UPDATE cloud.configuration SET value=’600′ WHERE name=’vm.tranisition.wait.interval’; 
  18. UPDATE cloud.configuration SET value=’60′ WHERE name=’vpc.cleanup.interval’; 
  19. UPDATE cloud.configuration SET value=’4′ WHERE name=’cpu.overprovisioning.factor’; 
  20. UPDATE cloud.configuration SET value=’8′ WHERE name=’storage.overprovisioning.factor’; 
  21. UPDATE cloud.configuration SET value=’192.168.56.11/32′ WHERE name=’secstorage.allowed.internal.sites’; 
  22. UPDATE cloud.configuration SET value=’192.168.56.0/24′ WHERE name=’management.network.cidr’; 
  23. UPDATE cloud.configuration SET value=’192.168.56.11′ WHERE name=’host’; 
  24. UPDATE cloud.configuration SET value=’false’ WHERE name=’check.pod.cidrs’; 
  25. UPDATE cloud.configuration SET value=’0′ WHERE name=’network.throttling.rate’; 
  26. UPDATE cloud.configuration SET value=’0′ WHERE name=’vm.network.throttling.rate’; 
  27. UPDATE cloud.configuration SET value=’GMT’ WHERE name=’usage.execution.timezone’; 
  28. UPDATE cloud.configuration SET value=’16:00′ WHERE name=’usage.stats.job.exec.time’; 
  29. UPDATE cloud.configuration SET value=’true’ WHERE name=’enable.dynamic.scale.vm’; 
  30. UPDATE cloud.configuration SET value=’9000′ WHERE name=’secstorage.vm.mtu.size’; 
  31. UPDATE cloud.configuration SET value=’60′ WHERE name=’alert.wait’; 
  32. UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’domainrouter’; 
  33. UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’elasticloadbalancervm’; 
  34. UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’secondarystoragevm’; 
  35. UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’internalloadbalancervm’; 
  36. UPDATE cloud.service_offering SET ram_size=’128′, speed=’128′ WHERE vm_type=’consoleproxy’; 
  37. UPDATE cloud.vm_template SET removed=now() WHERE id=’2′; 
  38. UPDATE cloud.vm_template SET url=’http://192.168.56.11/centos56-x86_64.vhd.bz2′ WHERE unique_name=’centos56-x86_64-xen’; 
  39. quit 

service cloudstack-management restart

为了能够通过默认端口8096访问我们启用的Un-Authenticated API,我们需要添加一条防火墙规则。运行下列命令,允许通过防火墙访问端口8096:

  1. sed -i -e “/:OUTPUT/ a\-A INPUT -p tcp -m tcp –dport 8096 -j ACCEPT” /etc/sysconfig/iptables 
  2. 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内存。

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控制台上运行下面这个命令:

  1. /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”现在有点过时了,应该含有下列内容(而缓存文件夹应该含有相关的补丁文件):

  1. XS62E014|78251ea4-e4e7-4d72-85bd-b22bc137e20b|downloadns.citrix.com.edgesuite.net/8736/XS62E014.zip|support.citrix.com/article/CTX140052
  2. XS62ESP1|0850b186-4d47-11e3-a720-001b2151a503|downloadns.citrix.com.edgesuite.net/8707/XS62ESP1.zip|support.citrix.com/article/CTX139788
  3. XS62ESP1003|c208dc56-36c2-4e91-b8d7-0246575b1828|downloadns.citrix.com.edgesuite.net/9031/XS62ESP1003.zip|support.citrix.com/article/CTX140416
  4. XS62ESP1005|1c952800-c030-481c-a0c1-d1b45aa19fcc|downloadns.citrix.com.edgesuite.net/9058/XS62ESP1005.zip|support.citrix.com/article/CTX140553
  5. XS62ESP1009|a24d94e1-326b-4eaa-8611-548a1b5f8bd5|downloadns.citrix.com.edgesuite.net/9617/XS62ESP1009.zip|support.citrix.com/article/CTX141191
  6. XS62ESP1013|b22d6335-823d-43a6-ba26-28793717125b|downloadns.citrix.com.edgesuite.net/9703/XS62ESP1013.zip|support.citrix.com/article/CTX141480
  7. 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,对网卡执行“重新扫描”,以检测到最后这个网卡,然后最后一次重启,确保它们都已被激活和连接。

配置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模板“下载”到系统中。现在你可以准备部署第一个访客虚拟机了。

英文原文链接:http://shapeblue.com/cloudstack/virtualbox-test-env/

【编辑推荐】

  1. 天云趋势推出CloudStack认证计划
  2. OpenStack 如何笑傲开源云计算战场—— OpenStack 与 CloudStack 的对比
  3. 【CloudStack】系统虚拟机启动但不在Host表中的原因及解决办法
  4. CloudStack停滞?事实是Citrix, Apache等组织仍在为其贡献代码
  5. 云计算解决方案Apache CloudStack 4.3.2 发布,修复超过100个bug
【责任编辑:Ophira TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Visual Studio Team Systems软件工程实践

本书论述了软件开发价值增加的思维方式。这一思维方式构成了VSTS的基础,包括VSTS的指导思想,为什么这些指导思想会以某些方式表现,以及它...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊