使用VirtualBox構(gòu)建CloudStack測試環(huán)境,輕松體驗更多功能
譯文引言
如果你剛接觸Apache CloudStack,想了解和熟悉相關(guān)概念,可是苦于沒有搭建測試環(huán)境所需的種種設(shè)備,何不使用你現(xiàn)有的PC和VirtualBox?
VirtualBox是一種跨平臺的虛擬化應用程序,可以在OS X、Windows、Linux和Solaris等操作系統(tǒng)上運行,這意味著不管你運行什么操作系統(tǒng),應該都能夠運行VirtualBox。
本文的目的是,盡管一切都在筆記本電腦上運行,因而受到明顯的制約,還是要搭建一個近可能接近生產(chǎn)部署環(huán)境的Apache CloudStack 環(huán)境。部署的這個系統(tǒng)將支持Apache CloudStack的下列幾大功能:
- 生產(chǎn)級虛擬機管理程序:思杰XenServer 6.2,完全支持虛擬局域網(wǎng)(VLAN);
- CentOS 6.5上的Apache CloudStack;
- 主存儲和輔助存儲都使用NFS――各自都在專用的VLAN上;
- 控制臺代理和輔助存儲虛擬機;
- 所有的高級網(wǎng)絡功能特性,比如防火墻、網(wǎng)絡地址轉(zhuǎn)換(NAT)、端口轉(zhuǎn)發(fā)、負載均衡和虛擬私有云(VPC)。
想實現(xiàn)所有這些功能,我們就要在VirtualBox上部署兩個虛擬機、為Apache Cloudstack部署一個CentOS虛擬機,以及為虛擬機管理程序部署一個思杰XenServer虛擬機。CloudStack虛擬機還將充當我們的MySQL服務器和NFS服務器。
這種測試環(huán)境的一大要求就是,讓該環(huán)境保持完全獨立,那樣它可以用于培訓(插入Bootcamp鏈接)和演示等用途。為了實現(xiàn)這個目標,并且保持這一功能:部署新的區(qū)域(Zone),下載系統(tǒng)中所要使用的示例CentOS模板,我們模擬CloudStack公共網(wǎng)絡,使用NGINX在CloudStack管理服務器上托管運行默認的CentOS模板。
VirtualBox配置
從https://www.virtualbox.org/wiki/Downloads,下載并安裝合適的版本。
一旦VirtualBox安裝完畢,我們就需要對它進行配置,以便準備用于該環(huán)境。盡可能使用默認值,但如果你之前已經(jīng)一直在使用VirtualBox,可能需要調(diào)整不同的設(shè)置。
我們將使用三個“Host Only”(僅主機)網(wǎng)絡、一個“NAT”網(wǎng)絡和一個“Internal”(內(nèi)部)網(wǎng)絡。默認情況下,VirtualBox只有一個“僅主機”網(wǎng)絡,于是我們需要另外構(gòu)建兩個僅主機網(wǎng)絡。
1. 從“文件”菜單(Windows)或VirtualBox菜單(OS X),選擇“Preferences”(偏好設(shè)置),然后依次選擇“Network”(網(wǎng)絡)和“Host-only Networks”(僅主機網(wǎng)絡)。
2. 另外構(gòu)建兩個網(wǎng)絡,那樣至少有三個網(wǎng)絡可供我們使用。
3. 為頭兩個網(wǎng)絡設(shè)置IP模式(IP Schema),如下所示:
僅主機網(wǎng)絡的命名約定不一樣,這取決于主機的操作系統(tǒng),我只是將這些稱之為“僅主機網(wǎng)絡1”、“僅主機網(wǎng)絡2”和“僅主機網(wǎng)絡3”,依次類推,所以不妨參閱下列比較矩陣,即可識別正確的網(wǎng)絡。
This Guide Windows OS X
- 僅主機網(wǎng)絡1 VirtualBox僅主機以太網(wǎng)適配器 vboxnet0
- 僅主機網(wǎng)絡2 VirtualBox僅主機以太網(wǎng)適配器#2 vboxnet1
- 僅主機網(wǎng)絡3 VirtualBox僅主機以太網(wǎng)適配器#3 vboxnet2
僅主機網(wǎng)絡1:
IPv4地址:192.168.56.1
IPv4網(wǎng)絡掩碼:255.255.255.0
DHCP服務器是可選的,因為我們并不使用它,但要確保地址范圍與我們將要使用的靜態(tài)IP:192.168.56.11和192.168.56.101沒有沖突。
僅主機網(wǎng)絡2:
IPv4地址:172.30.0.1
IPv4網(wǎng)絡掩碼:255.255.255.0
通過設(shè)置這些IP地址范圍,我們就能確保充當主機的筆記本電腦在這些網(wǎng)絡上有一個IP,那樣我們就能訪問與它們連接的虛擬機。我們不需要“僅主機網(wǎng)絡3”上的IP,因為這個將用于存儲,而且還要運行VLAN。
我們使用NAT網(wǎng)絡,那樣我們就能將CloudStack管理虛擬機連接到互聯(lián)網(wǎng),從而能夠安裝我們所要使用的各種程序包。
配置VirtualBox“NatNetwork”,以便使用下列設(shè)置:
網(wǎng)絡名稱:NatNetwork
網(wǎng)絡CIDR:10.0.2.0/24
由于我們無法控制范圍,于是禁用了DHCP,將虛擬機上靜態(tài)分配的IP排除在外。
雖然本文主要介紹構(gòu)建單一的CloudStack管理服務器,但是你很容易添加第二臺CloudStack管理服務器;我發(fā)現(xiàn),來自NAT網(wǎng)絡的DHCP分配IP地址會隨機變化,所以設(shè)置NAT規(guī)則可能問題重重,因此我總是使用靜態(tài)分配的IP地址。
“內(nèi)部”網(wǎng)絡根本不需要配置。
#p#
CloudStack虛擬機
使用下列設(shè)置,為CloudStack管理器創(chuàng)建一個虛擬機:
名稱:CSMAN 4.4.1
類型:Linux
版本:Red Hat(64位)
內(nèi)存:2048(初始安裝不能低于這個值)
硬盤:VDI―動態(tài)―64 GB(我們分配了這么多的容量,是因為它將充當NFS存儲區(qū))。
注意:如果你同時增添所有網(wǎng)絡,VirtualBox似乎會將這些網(wǎng)絡混同起來,于是我們先添加第1個網(wǎng)絡,并安裝CentOS,然后一旦完全安裝完畢,我們就添加額外的網(wǎng)絡,可是在這當中會重啟,這似乎是最新版本VirtualBox(截至本文截稿時是4.3.18)的一個bug。
改動設(shè)置,為第1個網(wǎng)絡適配器分配正確的網(wǎng)絡,如下所示:
安裝CentOS 6.5 64位minimal版,將主機名稱設(shè)為CSMAN,將IP地址設(shè)為192.168.56.11/24,網(wǎng)關(guān)為192.168.56.1,并確保網(wǎng)絡已設(shè)置成引導時啟動。將DNS設(shè)成公共服務器,比如8.8.8.8 & 8.8.4.4。
一旦安裝完畢,重啟虛擬機,核實eth0處于活動狀態(tài),然后關(guān)閉虛擬機,添加第2個網(wǎng)絡適配器。
引導虛擬機,那樣它能檢測到網(wǎng)卡,然后關(guān)閉,添加第3個適配器。
引導虛擬機,那樣它能檢測到網(wǎng)卡,然后關(guān)閉,添加第4個適配器。
最后,引導虛擬機,那樣它能檢測到最后一個適配器,然后我們就能為各個網(wǎng)卡配置正確的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
重啟網(wǎng)絡讓新設(shè)置生效,然后打上所有最新的更新版。
- service networking restart
- yum update -y
#p#
安裝和配置
基本的虛擬機構(gòu)建好后,我們現(xiàn)在需要安裝Apache CloudStack及該虛擬機將托管運行的其他所有服務。首先我們要確保虛擬機配置正確。
Selinux
Selinux需要設(shè)置成“permissive”(寬容模式),為此我們可以通過運行下面兩個命令來實現(xiàn):
- 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虛擬機,有必要關(guān)閉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總是個好主意,所以不妨現(xiàn)在添加NTP,并將它設(shè)成引導時啟動(你總是可以配置該虛擬機,為XenServer充當NTP服務器,但這不在本文探討范圍之內(nèi))。
- 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
現(xiàn)在我們可以安裝CloudStack和MySQL Server了:
- yum install -y cloudstack-management mysql-server
安裝NFS服務器
由于CSMAN虛擬機還將充當NFS服務器,我們需要設(shè)置NFS環(huán)境。運行下列命令,即可為主存儲和輔助存儲創(chuàng)建文件夾,然后將它們導出到合適的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
我們現(xiàn)在需要用設(shè)置來更新/etc/sysconfig/nfs,以便激活NFS服務器。運行下面這個命令,更新所需的設(shè)置
- 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
我們還需要更新防火墻設(shè)置,讓XenServer可以訪問導出的NFS,所以運行下列命令,配置所需的設(shè)置:
- 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服務設(shè)成引導時自動啟動,還可以立即啟動它
- 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服務設(shè)成引導時自動啟動,還可以立即啟動它
- chkconfig mysqld on
- service mysqld start
確保默認安裝的MySQL安全,這始終是個好主意;有一款使用方便的實用工具可以為你確保其安全。運行下面這個命令,看到提示時設(shè)置一個新的密碼(當前密碼將是空的),接受刪除匿名用戶、測試數(shù)據(jù)庫和禁用遠程訪問等的所有默認值。
- mysql_secure_installation
現(xiàn)在我們將登錄進入到MySQL,為根帳戶賦予所有權(quán)限,這么做是為了可以在下一步中創(chuàng)建“cloud”帳戶。
- mysql -u root -p (enter password when prompted)
- mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@'%’ WITH GRANT OPTION;
- mysql> quit
安裝數(shù)據(jù)庫
MySQL配置完畢后,我們現(xiàn)在可以安裝CloudStack數(shù)據(jù)庫了,只要運行下面兩個命令,代替你之前設(shè)置的根密碼。
- cloudstack-setup-databases cloud:cloud@127.0.0.1 –deploy-as=root:<password>
- cloudstack-setup-management
Nginx
有一個默認的示例模板從cloud.com網(wǎng)站服務器下載;但由于這個測試系統(tǒng)無法實際訪問公共互聯(lián)網(wǎng),我們需要為輔助存儲虛擬機下載該模板提供一個辦法。為此,我們將NGINX安裝在CSMAN虛擬機上,并使用它托管運行我們模擬的“公共”網(wǎng)絡上的模板。
首先創(chuàng)建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
現(xiàn)在,我們運行下面兩個命令,下載XenServer的示例CentOS模板:
- cd /usr/share/nginx/html
- wget -nc http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2
我們需要添加防火墻規(guī)則,允許通過端口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添加到系統(tǒng)上后,該實用工具將拷貝到每個XenServer。運行下面幾行,即可下載文件、更新許可權(quán)限。
- 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#
創(chuàng)建CloudStack默認系統(tǒng)虛擬機模板
由于現(xiàn)在我們需要為輔助存儲創(chuàng)建XenServer系統(tǒng)虛擬機模板,于是運行下面這個命令:
- /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
定制配置
為了讓這個測試系統(tǒng)能夠在4GB內(nèi)存的筆記本電腦上有限的可用資源里面工作,我們需要對配置做多處改動。
首先,我們需要啟用使用支持非HVM(完全虛擬化)的XenServer。你將XenServer安裝到VirtualBox上時,它會提醒它只支持PV(半虛擬化),而不支持HVM。為了解決這個問題,我們運行下列SQL更新命令,為云數(shù)據(jù)庫中的配置表添加新的一行(記得你在安裝CloudStack數(shù)據(jù)庫時,代替你所使用的自己的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命令更新各種全局設(shè)置,并更改分配給系統(tǒng)虛擬機的資源,那樣它們可以在有限的可用資源里面工作。
- 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,我們需要添加一條防火墻規(guī)則。運行下列命令,允許通過防火墻訪問端口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
- 域:<空>
創(chuàng)建計算方案
默認的Compute Offering(計算方案)并不適合這個有限的環(huán)境,于是我們需要使用下列設(shè)置,創(chuàng)建一個新的計算方案:
- 名稱:超小(Ultra Tiny)
- 描述:超小– 1vCPU和128MB內(nèi)存
- 存儲類型:共享式
- 自定義:無
- 處理器核心數(shù)量:1
- 處理器(MHz):500
- 內(nèi)存(MB):128
- 網(wǎng)絡速率(Mb/s):無
- 服務質(zhì)量類型:無
- 提供高可用性:有
- 存儲標記:無
- 主機標記:無
- 處理器上限:無
- 公共:是
- 易失性:無
- 部署規(guī)劃器:無
- GPU:無
減少內(nèi)存數(shù)量
成功登錄到UI后,數(shù)據(jù)庫會完全部署,所以現(xiàn)在我們可以將內(nèi)存減少到1GB,為我們的XenServer釋放內(nèi)存。關(guān)閉虛擬機,將設(shè)置改成1024 MB內(nèi)存。
#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。
使用下列設(shè)置,為XenServer創(chuàng)建一個虛擬機:
- 名稱:XenServer
- 類型:Linux
- 版本:Red Hat(64位)
- 虛擬處理器:2
- 內(nèi)存:1536(如果你的主機有8GB內(nèi)存,可以考慮分配3072MB)
- 硬盤:VDI – 動態(tài)– 24 GB
注意:如果你同時添加所有網(wǎng)絡,VirtualBox似乎會將它們混同起來,于是我們添加第1個網(wǎng)絡,并安裝XenServer,然后一旦完全安裝完畢,我們添加額外的網(wǎng)絡,但在這當中會出現(xiàn)重啟。這似乎是最新版本VirtualBox(截至本文截稿時為4.3.18)的一個bug。
改動設(shè)置,為第1個網(wǎng)絡適配器分配正確的網(wǎng)絡,如下所示:
請注意:我們已將“Promiscuous Mode”(混雜模式)設(shè)成“Allow All”(允許所有)。
現(xiàn)在安裝XenServer 6.2,為此從http://downloadns.citrix.com.edgesuite.net/akdlm/8159/XenServer-6.2.0-install-cd.iso下載ISO文件,引導虛擬機。
XenServer安裝向?qū)Ш唵沃庇^,不過你會看到警告信息,表明缺少硬件虛擬化的支持,這在意料之中,因為VirtualBox不支持該功能。接受警告,繼續(xù)下一步。
選擇合適的區(qū)域設(shè)置,看到提示時輸入下列詳細信息(我們?yōu)镈NS和NTP輸入CSMAN虛擬機的IP;雖然本文并不探討在CSMAN虛擬機上構(gòu)建這些服務,但這為你提供了之后可以這么做的選項):
- 啟用自動精簡配置:是
- 安裝源:本地介質(zhì)
- 補充包:無
- 驗證:略過
- 密碼:<password>
- 靜態(tài)IP:192.168.56.101/24(無需網(wǎng)關(guān))
- 主機名稱:xenserver
- DNS:192.168.56.11
- NTP:192.168.56.11
一旦XenServer安裝完畢,卸載ISO,重啟虛擬機。
我們現(xiàn)在需要將分配給Dom0的內(nèi)存數(shù)量改成最少推薦數(shù)量(400MB),為此只要在XenServer控制臺上運行下面這個命令:
- /opt/xensource/libexec/xen-cmdline –set-xen dom0_mem=400M,max:400M
XenServer補丁
安裝XenServer補丁很重要,雖然XenCenter會告知你需要什么補丁,但由于我們使用OpenSource版本的XenServer,所以我們必須通過命令行來安裝補丁。幸好,有好多辦法可以讓這個過程實現(xiàn)自動化。
我個人總是使用PXE來部署XenServer,而補丁的安裝環(huán)節(jié)內(nèi)置在我的部署過程中。不過,這不在本文探討范圍之內(nèi),但是Tim Mackey已寫了一篇出色的博文,介紹如何做到這一點,詳見http://xenserver.org/discuss-virtualization/virtualization-blog/entry/patching-xenserver-at-scale.html。
雖然Tim的方法:每個補丁安裝后重啟是最佳實踐,但安裝所有補丁要花很長的時間,所以我在這些非生產(chǎn)測試環(huán)境中使用的另一種方法在https://github.com/amesserl/xs_patcher作了詳細介紹。這個方法可安裝所有補丁,只需要重啟一次。
配置文件“clearwater”現(xiàn)在有點過時了,應該含有下列內(nèi)容(而緩存文件夾應該含有相關(guān)的補丁文件):
- 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全面打上了補丁,關(guān)閉它,然后添加第2個適配器,再次要注意我們?nèi)绾螌?ldquo;混雜模式”設(shè)成“允許所有”。
啟動虛擬機,然后使用XenCenter,對網(wǎng)卡執(zhí)行“重新掃描”,以檢測到這個新網(wǎng)卡,然后關(guān)閉,添加第3個適配器,再次要注意我們?nèi)绾螌?ldquo;混雜模式”設(shè)成“允許所有”。
啟動虛擬機,然后使用XenCenter,對網(wǎng)卡執(zhí)行“重新掃描”,以檢測到這個新網(wǎng)卡,然后關(guān)閉,添加第4個適配器,再次要注意我們?nèi)绾螌?ldquo;混雜模式”設(shè)成“允許所有”。
啟動虛擬機,然后使用XenCenter,對網(wǎng)卡執(zhí)行“重新掃描”,以檢測到最后這個網(wǎng)卡,然后最后一次重啟,確保它們都已被激活和連接。
#p#
配置XenServer網(wǎng)絡
現(xiàn)在我們準備配置XenServer網(wǎng)絡。我們應該已有下列四個網(wǎng)絡,有必要確保MAC與VirtualBox中的適配器相對應。
我們需要使用一種更合乎邏輯的命名約定,為網(wǎng)絡改名,還要創(chuàng)建兩個存儲網(wǎng)絡,并分配VLAN,等等。
首先改名,將存儲網(wǎng)絡的最大傳輸單元(MTU)設(shè)成9000(其余的仍然是默認的1500)。
- Network 0 – MGMT
- Network 1 – GUEST
- Network 2 – PUBLIC
- Network 3 – STORAGE (MTU為9000)
下一步,我們使用下列設(shè)置,添加主存儲網(wǎng)絡:
- 類型:外部網(wǎng)絡
- 名稱:PRI-STORAGE
- 網(wǎng)卡:NIC 3
- VLAN:100
- MTU:9000
- 然后,添加輔助存儲網(wǎng)絡:
- 類型:外部網(wǎng)絡
- 名稱:SEC-STORAGE
- 網(wǎng)卡:NIC 3
- VLAN:101
- MTU:9000
最后,我們?yōu)橹鞔鎯W(wǎng)絡和輔助存儲網(wǎng)絡添加IP地址,那樣XenServer就能訪問它們:
- 名稱:PRI-STOR
- 網(wǎng)絡:PRI-STORAGE
- IP地址:10.10.100.101
- 子網(wǎng)掩碼:255.255.255.0
- 網(wǎng)關(guān):<空>
- 名稱:SEC-STOR
- 網(wǎng)絡:SEC-STORAGE
- IP地址:10.10.101.101
- 子網(wǎng)掩碼:55.255.255.0
- 網(wǎng)關(guān):<空>
這是XenServer需要的所有配置,所以現(xiàn)在我們可以接著部署我們的第一個區(qū)域了。不過在我們著手之前,有必要創(chuàng)建兩個虛擬機的快照,那樣萬一需要,你可以恢復原狀,再次啟動。
部署區(qū)域
我們現(xiàn)在添加一個高級區(qū)域,為此進入到“Infrastructure/Zones/Add Zone”(基礎(chǔ)設(shè)施/區(qū)域/添加區(qū)域),創(chuàng)建一個類型為“高級”的新區(qū)域,沒有安全組。
- 區(qū)域名稱– Test
- IPv4 DNS1 – 8.8.8.8
- 內(nèi)部DNS 1 – 192.168.56.11
- 虛擬機管理程序– XenServer
- 訪客CIDR – 10.1.1.0/24
下一步,我們需要設(shè)置XenServer流量標簽,以便與我們分配給XenServer上的每個網(wǎng)絡的名稱相一致,我們還要添加可選的存儲網(wǎng)絡,為此將它拖拉到物理網(wǎng)絡上。
編輯每一個流量類型,并設(shè)置下列標簽:
- 管理網(wǎng)絡– MGMT
- 公共網(wǎng)絡– PUBLIC
- 訪客網(wǎng)絡– GUEST
- 存儲網(wǎng)絡– SEC-STORAGE
然后使用下列設(shè)置,繼續(xù)按區(qū)域添加向?qū)У奶崾緛聿僮?/p>
- 公共流量
- 網(wǎng)關(guān)– 172.30.0.1
- 網(wǎng)絡掩碼– 255.255.255.0
- VLAN – <空>
- 起始IP – 172.30.0.21
- 終止IP -172.30.0.30
- POD設(shè)置
- POD名稱– POD1
- 預留系統(tǒng)網(wǎng)關(guān)– 192.168.56.1
- 預留系統(tǒng)網(wǎng)絡掩碼– 255.255.255.0
- 起始預留系統(tǒng)IP – 192.168.56.21
- 終止預留系統(tǒng)IP – 192.168.56.30
- 訪客流量
- VLAN范圍– 600 – 699
- 存儲流量
- 網(wǎng)關(guān)– 10.10.101.1
- 網(wǎng)絡掩碼– 255.255.255.0
- VLAN – <空>
- 起始IP – 10.10.101.21
- 終止IP – 10.10.101.30
- 集群設(shè)置
- 虛擬機管理程序– XenServer
- 集群名稱– CLU1
- 主機設(shè)置
- 主機名稱– 192.168.56.101
- 用戶名– root
- 密碼– <password>
- 主存儲設(shè)置
- 名稱– PRI1
- 范圍– Cluster
- 服務器– 10.10.100.11
- 路徑– /exports/primary
- 輔助存儲設(shè)置
- 提供者– NFS
- 名稱– SEC1
- 服務器– 10.10.101.11
- 路徑– /exports/secondary
最后,激活區(qū)域,然后給大約5分鐘的時間,好讓系統(tǒng)虛擬機部署、默認的CentOS模板“下載”到系統(tǒng)中?,F(xiàn)在你可以準備部署第一個訪客虛擬機了。