使用VirtualBox構建CloudStack測試環境,輕松體驗更多功能
譯文引言
如果你剛接觸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模板“下載”到系統中。現在你可以準備部署第一個訪客虛擬機了。