安装部署CloudStack 4.0企业私有云平台[原创分享]


参考资料
CloudStack Installation_Guide/installation.html
CloudStack Admin_guide/working-with-iso.html
CloudStack Admin_guide/creating-vms.html
CloudStack Admin_guide/create-templates-overview.html

目录结构
1. 什么是CloudStack
2. 宿主机的系统需求
3. 配置安装源
4. 安装Management Server
5. 安装配置KVM虚拟化Host主机
6. 用户界面
7. 配置Management Server
8. 创建Instance类型
9. 创建ISO安装源并创建Instance
10. 创建并定制Template
11. 通过定制的Template创建VM Instance
12. 其它优化设置

环境介绍
OS: Ubuntu Server 12.04.1 64-bit
Server:
10.6.203.10 cloudstack-server-1
- CloudStack Management Server
- CloudStack Agent
- NFS Server
- MySQL Server
注:CloudStack支持很好的分布式架构,上面 - 代表的所有角色都可以部署在不同的机器上,但在测试环境中因为条件有限我全部都部署到了一台机器上。

1. 什么是CloudStack
CloudStack是一个开源的具有高可用性及扩展性的云计算平台。
提到开源的云计算平台,相信大家首先想到的可能是OpenStack,目前国内的几家云计算平台如阿里云、盛大云以及新浪SAE貌似都基于OpenStack做了二次开发。
但使用过CloudStack之后,你会发现其实CloudStack更像是一个商业化过后的产品,有着非常好的用户界面,各个模块默认集成的很好,且安装与部署过程也相对容易一些。

事实上,CloudStack的前身是Cloud.com,后来被思杰收购。2011年7月,Citrix收购Cloud.com,将CloudStack 100%开源并交给Apache软件基金会管理。
同时,CloudStack已经有了许多商用客户,包括GoDaddy、英国电信、日本电报电话公司、塔塔集团、韩国电信等。

因此,CloudStack本身其实就是一个商业化过后的产品,然后在面对OpenStack等开源系统的巨大竞争压力的情况下选择了同样的开源。

目前Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMware,Oracle VM,Xen等。
CloudStack具有商业软件所拥有的完善的用户权限管理,可以让用户构建一个安全的多租户云计算环境。
同时兼容Amazon AWS API 接口,可用来管理AWS的资源。
  
CloudStack的官方网址如下(目前还处于Apache基金会的孵化器中):
http://incubator.apache.org/cloudstack/

以下是CloudStack的系统架构,基本上与其他云计算平台相同:

2. 宿主机的系统需求
由于CloudStack 4.0 限定了libvirt版本 > 0.9.4,并在社区宣称所支持的OS为 CentOS/RHEL 6.2 以上或 Ubuntu Server 12.04。
因此,这里我们选择 Ubuntu Server 12.04.1 作为我们的操作系统。
官方下载地址:http://releases.ubuntu.com/precise/ubuntu-12.04.1-server-amd64.iso

另外,官方要求硬件至少满足以下条件:
1) 支持硬件虚拟化(Intel-VT 或 AMD-V)
2) 64位的x86 CPU
3) 4G内存
4) 36GB硬盘
5) 1张网卡

3. 配置安装源
配置国内的网易镜像源
$ sudo sed -i s/us.archive.ubuntu.com/mirrors.163.com/g /etc/apt/sources.list
$ sudo sed -i s/security.ubuntu.com/mirrors.163.com/g /etc/apt/sources.list

配置CloudStack官方源
$ sudo vim /etc/apt/sources.list.d/cloudstack.list
deb http://cloudstack.apt-get.eu/ubuntu precise 4.0

配置CloudStack官方源证书
$ wget -O - http://cloudstack.apt-get.eu/release.asc| sudo apt-key add -

更新系统的安装源
$ sudo apt-get update

4. 安装Management Server
4.1 准备好操作系统环境
查看主机名
$ hostname --fqdn
cloudstack-server-1

$ sudo vim /etc/hosts
添加以下记录
10.6.203.10 cloudstack-server-1

安装时间服务器
$ sudo apt-get install openntpd

4.2 下载安装 CloudStack Management Server 与 vhd-util
安装CloudStack Management Server
$ sudo apt-get install cloud-client

将用户cloud加入到sudo用户组 //CloudStack默认以cloud用户启动,但默认会通过sudo以root身份管理相关文件与目录
$ sudo adduser cloud sudo

配置sudo用户组免密码切换 //同样是为了解决和上面相同的权限问题
$ sudo visudo
%sudo ALL=(ALL:ALL) NOPASSWD:ALL

初始化root用户密码,如cloudstack //CloudStack默认需要root权限远程SSH连接到Agent
$ sudo -i
# passwd

Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

# chmod 777 /root //为了解决一个bug,即CloudStack默认以cloud用户启动,但却读取的是启动服务的用户的home目录用来存放一些临时文件,从而导致权限问题
$ exit

下载vhd-util
$ sudo wget http://download.cloud.com.s3.amazonaws.com/tools/vhd-util
$ sudo mv vhd-util /usr/lib/cloud/common/scripts/vm/hypervisor/xenserver/

4.3 安装配置MySQL数据库
$ sudo apt-get install mysql-server
在弹出的界面中输入密码,如: cloudstack

修改MySQL配置文件参数
$ sudo vim /etc/mysql/my.cnf
在[mysqld]模块中加入以下参数

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

重启MySQL
$ sudo service mysql restart

初始化数据库cloud
$ sudo cloud-setup-databases cloud:cloudstack@localhost --deploy-as=root:cloudstack -e file -m cloudstack -k cloudstack

Mysql user name:cloud                                           [ OK ]
Mysql user password:cloudstack                                  [ OK ]
Mysql server ip:localhost                                       [ OK ]
Mysql server port:3306                                          [ OK ]
Mysql root user name:root                                       [ OK ]
Mysql root user password:cloudstack                             [ OK ]
Checking Cloud database files ...                               [ OK ]
Checking local machine hostname ...                             [ OK ]
Checking SELinux setup ...                                      [ OK ]
Detected local IP address as 10.6.203.10, 
will use as cluster management server node IP                   [ OK ]
Preparing /etc/cloud/management/db.properties                   [ OK ]
Applying /usr/share/cloud/setup/create-database.sql             [ OK ]
Applying /usr/share/cloud/setup/create-schema.sql               [ OK ]
Applying /usr/share/cloud/setup/create-database-premium.sql     [ OK ]
Applying /usr/share/cloud/setup/create-schema-premium.sql       [ OK ]
Applying /usr/share/cloud/setup/server-setup.sql                [ OK ]
Applying /usr/share/cloud/setup/templates.sql                   [ OK ]
Applying /usr/share/cloud/setup/create-index-fk.sql             [ OK ]
Processing encryption ...                                       [ OK ]
Finalizing setup ...                                            [ OK ]

CloudStack has successfully initialized database, 
you can check your database configuration in /etc/cloud/management/db.properties

4.4 配置NFS共享
CloudStack 需要一个地方来存放Primar和Secondary Storage,官方推荐使用NFS共享。

安装NFS
$ sudo apt-get install nfs-common nfs-kernel-server

创建目录
$ sudo mkdir -p /export/primary
$ sudo mkdir -p /export/secondary

编辑NFS配置文件
$ sudo vim /etc/exports

/export *(rw,async,no_root_squash,no_subtree_check)

刷新配置
$ sudo exportfs -a

挂载测试NFS共享
$ sudo mkdir /mnt/primary
$ sudo mount -t nfs 10.6.203.10:/export/primary /mnt/primary
$ sudo mkdir /mnt/secondary
$ sudo mount -t nfs 10.6.203.10:/export/secondary /mnt/secondary

$ df -h

Filesystem                    Size  Used Avail Use% Mounted on
...
10.6.203.10:/export/primary    434G  7.8G  404G   2% /mnt/primary
10.6.203.10:/export/secondary  434G  7.8G  404G   2% /mnt/secondary

$ sudo vim /etc/fstab
增加以下内容

10.6.203.10:/export/primary	/mnt/primary	nfs	rw,tcp,intr 0 1
10.6.203.10:/export/secondary /mnt/secondary	nfs	rw,tcp,intr 0 1

4.5 准备System VM Template
我们选择KVM作为虚拟化引擎
$ sudo /usr/lib/cloud/common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary \
-u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
整个过程大概需要花费半个小时

--2012-11-12 14:49:18--  http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2
Resolving download.cloud.com (download.cloud.com)... 207.171.189.81
Connecting to download.cloud.com (download.cloud.com)|207.171.189.81|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 286036668 (273M) [binary/octet-stream]
Saving to: `/usr/lib/cloud/common/scripts/storage/secondary/4aae2546-33e1-4784-9e69-09e1ef9d6fb4.qcow2'

100%[======================================================================>] 286,036,668  188K/s   in 24m 53s 

2012-11-12 15:14:13 (187 KB/s) - `/usr/lib/cloud/common/scripts/storage/secondary/4aae2546-33e1-4784-9e69-09e1ef9d6fb4.qcow2' saved [286036668/286036668]

Uncompressing to /usr/lib/cloud/common/scripts/storage/secondary/4aae2546-33e1-4784-9e69-09e1ef9d6fb4.qcow2.tmp (type bz2)...could take a long time
Moving to /mnt/secondary/template/tmpl/1/3///4aae2546-33e1-4784-9e69-09e1ef9d6fb4.qcow2...could take a while
Successfully installed system VM template  to /mnt/secondary/template/tmpl/1/3/

5. 安装配置KVM虚拟化Host主机

5.1 安装配置Agent
$ sudo apt-get install cloud-agent

5.2 安装配置libvirt
$ sudo vim /etc/libvirt/libvirtd.conf
修改以下配置

listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0

查看配置
$ cat /etc/libvirt/libvirtd.conf | grep -v '#' | grep -v "^$"

listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
mdns_adv = 0
unix_sock_group = "libvirtd"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
auth_tcp = "none"

$ sudo vim /etc/init/libvirt-bin.conf
修改以下参数

env libvirtd_opts="-d -l"

# sudo vim /etc/libvirt/qemu.conf
修改以下参数

vnc_listen = "0.0.0.0"

重启服务
$ sudo service libvirt-bin restart

5.3 配置安全策略
$ sudo dpkg --list "apparmor"

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                Version                             Description
+++-===================================-===================================-======================================================================================
ii  apparmor 
                           2.7.102-0ubuntu3.1                  User-space parser utility for AppArmor

$ sudo ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
$ sudo ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
$ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
$ sudo apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper

5.4 配置网桥
需要注意的是,官方文档给出的配置参数会导致网络不可用。
正确的配置是将物理网卡设置为manual,然后在虚拟网卡上设置IP并桥接到物理网卡上。
$ sudo vim /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet manual

# Public network
auto cloudbr0
iface cloudbr0 inet static
   address 10.6.203.10
   netmask 255.255.0.0
   gateway 10.6.255.1
   bridge_ports eth0
   bridge_fd 5
   bridge_stp off
   bridge_maxwait 1
   dns-nameservers 10.6.255.253 61.139.2.69
   
# Private network
auto cloudbr1
iface cloudbr1 inet manual
   bridge_ports eth0
   bridge_fd 5
   bridge_stp off
   bridge_maxwait 1

$ sudo /etc/init.d/networking restart
$ sudo /etc/init.d/networking start

5.5 配置防火墙
$ sudo ufw allow proto tcp from any to any port 22
$ sudo ufw allow proto tcp from any to any port 80
$ sudo ufw allow proto tcp from any to any port 1798
$ sudo ufw allow proto tcp from any to any port 16509
$ sudo ufw allow proto tcp from any to any port 5900:6100
$ sudo ufw allow proto tcp from any to any port 49152:49216

6. 用户界面
禁用系统默认的tomcat服务
$ sudo /etc/init.d/tomcat6 stop

 * Stopping Tomcat servlet engine tomcat6 [ OK ]

$ sudo update-rc.d -f tomcat6 remove

 Removing any system startup links for /etc/init.d/tomcat6 ...
   /etc/rc0.d/K08tomcat6
   /etc/rc1.d/K08tomcat6
   /etc/rc2.d/S92tomcat6
   /etc/rc3.d/S92tomcat6
   /etc/rc4.d/S92tomcat6
   /etc/rc5.d/S92tomcat6
   /etc/rc6.d/K08tomcat6

启动cloud-management
$ cd ~
$ sudo /etc/init.d/cloud-management restart

 * Starting CloudStack-specific Tomcat servlet engine cloud-management [ OK ]

登陆用户界面
http://10.6.203.10:8080/client/

默认账号密码
admin/password

可以看到如下图所示向导界面

选择左边的按钮"I have used CloudStack before, skip this guide"。
即进入如下图所示用户界面

7. 配置Management Server
整个Management Server的架构如下

7.1 修改Web管理员默认密码
登陆 http://10.6.203.10:8080/client
进入 Accounts - admin - View Users - admin 页面,点击 Change Password

接着我们进入到 Infrastructure 界面,可以看到目前没有任何设置,所有数目都是0。

7.2 创建相关配置
在用户界面中通过向导,依次创建
"Zone" - "Add Zone" - "Physical Network" - "Pod" - "Guest Traffic" - "Storage Traffic" -
"Cluster" - "Host" - "Primary Storage" - "Secondary Storage"

如下列图片所示:
选择Basic安装向导

配置Zone

配置Physical Network

配置Pod,此处的网络设置主要用于CloudStack内部的管理通信

配置Guest Traffic,此处的网络设置用于给Instance分配IP

配置Storage Traffic,此处的网络设置用于存储系统

配置Cluster

配置Host,即Agent主机,虚拟机的宿主机,用户名密码与SSH相同

配置主存储空间,我选择了本地mount点,即mount过后的本地路径,分布式部署时可以选择NFS模式

配置附属存储空间,仅支持NFS模式

配置完成,点击"Launch zone"

可以看到整个创建过程,最后创建完成之后提示是否启用Zone,选择Yes

8. 创建Instance类型
默认有Small Instance和Medium Instance
我们再分别创建两个类型:Large 和 xLarge,如下图所示:

创建Large Instance Type

创建xLarge Instance Type

查看xLarge Instance Type属性

9. 创建ISO安装源并创建Instance
在用户界面中配置
Template - Select view: ISO - Redister ISO

Name: Ubuntu-10.10
Description: Ubuntu Server 10.10 64-bit x86
URL: http://old-releases.ubuntu.com/releases/maverick/ubuntu-10.10-server-amd64.iso
Zone: All Zones
Bootable: Yes
OS Type: Ubuntu 10.10 (64-bit)
Extractable: Yes
Public: Yes
Featured: Yes

如下图所示:

然后,等待ISO的Ready状态为Yes的时候,如下图所示

接着,就可以开始使用ISO创建Instance,并在后面跟将其制作成为Template了。

如果想下载的速度快一些,可以通过在主机上搭建一个HTTP Server
但需要登录到Secondary Storage VM内部对防火墙规则进行一些修改,否则无法访问主机的80端口
具体步骤如下
$ sudo apt-get install apache2

$ sudo netstat -lntp | grep -w 80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6157/apache2

上传Ubuntu安装ISO到服务器的/var/www/iso,例如ubuntu-10.10-server-amd64.iso

$ sudo mkdir /var/www/iso
$ sudo chown www-data:www-data /var/www/iso
$ sudo chown www-data:www-data /var/www/iso/ubuntu-10.10-server-amd64.iso

获取Secondary Storage VM的IP(169.254.x.x),如下图所示

登录Secondary Storage VM修改防火墙规则
$ sudo -i
# ssh -i .ssh/id_rsa.cloud -p 3922 169.254.1.99
root@s-30-VM:~# iptables -D OUTPUT -o eth1 -p tcp -m state --state NEW -m tcp --dport 80 -j REJECT --reject-with icmp-port-unreachable

将URL设置为 http://10.6.203.10/iso/ubuntu-10.10-server-amd64.iso 即可

10. 创建并定制Template
10.1 创建初始Instance
通过刚刚安装的ISO文件来创建一个Instance
具体步骤如下

选择ISO

选择刚刚创建好的ISO

选择xLarge Instance,这里跟根据需要自己决定

选择硬盘

默认没有安全组,直接下一步

最后给Template命名,并点击"Launch VM"创建

创建过程大概1分钟左右

创建成功以后Instance状态为Running

通过NICs页面可以查看到所绑定的IP地址

点击Details页面的"View console",打开本地终端界面

可以看到操作系统的安装界面,接下来就是常见的系统安装过程了

10.2 通过View console执行操作系统的安装过程
通过在创建好的Instance的属性页面上点击 View console,即通过Web界面操作本地图形终端
执行操作系统的安装过程,安装好操作系统。

10.3 定制Template
操作系统安装完成以后,由于计划以该操作系统来制作Template,所以需要进行如下修改
10.3.1 安装openssh client和server (通过View console)
ubuntu@Template-Instance:~$ sudo apt-get install ssh

后面的步骤就可以通过SSH来完成了。

10.3.2 配置国内的网易镜像源
ubuntu@Template-Instance:~$ sudo sed -i s/us.archive.ubuntu.com/mirrors.163.com/g /etc/apt/sources.list
ubuntu@Template-Instance:~$ sudo sed -i s/security.ubuntu.com/mirrors.163.com/g /etc/apt/sources.list
ubuntu@Template-Instance:~$ sudo apt-get update

10.3.3 配置sudo用户组免密码切换
ubuntu@Template-Instance:~$ sudo visudo
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
%admin ALL=(ALL) NOPASSWD:ALL

10.3.4 安装常用工具
ubuntu@Template-Instance:~$ sudo apt-get install vim lrzsz

10.3.5 去除主机名相关配置
这样做是为了后面利用该Template创建的Instance能够自动生成特有的主机名
ubuntu@Template-Instance:~$ sudo vim /etc/hosts
注释或删除以下内容
#127.0.1.1 Template-Instance.cs1cloud.internal Template-Instance

将/etc/hostname文件更名或删除
ubuntu@Template-Instance:~$ sudo mv /etc/hostname /etc/hostname.template

10.3.6 关闭Instance
ubuntu@Template-Instance:~$ sudo sync
ubuntu@Template-Instance:~$ sudo poweroff

10.4 创建Template
确认Instance已经关闭,如下图所示

然后卸下Instance上之前所挂载的ISO

然后选择Instance对应的Volumes,点击Create Template

Name: Ubuntu-10.10
Description: Ubuntu Server 10.10 64-bit x86 with SSH
OS Type: Ubuntu 10.10 (64-bit)
Public: Yes
Password Enabled: No
Featured: No

init3-15.png

创建完成以后,即可以再Templates页面中查看到

11. 通过定制的Template创建VM Instance
通过刚刚创建好的Template,我们可以快速创建新的Instance

选择Template

选择刚刚创建好的Template

选择xLarge Instance,可以根据需要自己选择

选择硬盘,由于之间创建的Template已经带有20G硬盘
因此此处可以跳过,当然也可以选择硬盘,但会作为从盘附在上面

默认没有安全组,直接下一步

给Instance命名,并点击"Launch VM"创建

创建成功以后Instance状态为Running

通过NICs页面可以查看到所绑定的IP地址

即可通过属性页面上查看到IP地址,直接登录SSH

12. 其它优化设置
CloudStack对已经删除的Instance设置了一个保护时间
时间比较长,等于86400秒即24小时,我们可以将其设置的短一些
如300秒,即五分钟
在Global Settings中搜索expunge并设置,如下图所示

然后重启Management Server使配置生效
$ sudo /etc/init.d/cloud-management restart

修改Security Group安全组策略,允许所有数据通过

13. 结束语
目前,整个CloudStack的安装部署就已经完成了。
但,这仅仅是一个开始,CloudStack的更多功能,比如
1) 多节点分布式部署,将管理节点,Host节点,数据库,NFS存储区域都分开部署;
2) 集成 Amazon EC2;
3) VPC+VPN 网络实现;
4) 多用户权限设计与资源分配等

都有待我们进一步的研究和学习。
相信实际操作该文档之后,对CloudStack的架构与各个模块之间的联系都有了更深的理解,完成以上内容都不是什么难事了。

, , , , , ,

  1. #1 by pan on 2012/11/19 - 19:10

    您好,按照您的配置在创建Basic Zone后无法启动系统虚拟机,日志为
    2012-11-19 19:09:40,297 WARN [cloud.agent.Agent] (agentRequest-Handler-2:null) Caught:
    java.lang.NullPointerException
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.cleanupVMNetworks(LibvirtComputingResource.java:3922)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.handleVmStartFailure(LibvirtComputingResource.java:2709)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:2834)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1035)
    com.cloud.agent.Agent.processRequest(Agent.java:518)
    com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:831)
    com.cloud.utils.nio.Task.run(Task.java:83)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    java.lang.Thread.run(Thread.java:679)
    2012-11-19 19:09:40,458 WARN [kvm.resource.LibvirtComputingResource] (agentRequest-Handler-5:null) Exception
    com.cloud.utils.exception.CloudRuntimeException: org.libvirt.LibvirtException: cannot create path '/mnt/26a9efbf-fb80-3f0d-a292-43bd0a3eec9d/v-2-VM-patchdisk': Invalid argument
    com.cloud.hypervisor.kvm.storage.LibvirtStorageAdaptor.createPhysicalDisk(LibvirtStorageAdaptor.java:556)
    com.cloud.hypervisor.kvm.storage.LibvirtStoragePool.createPhysicalDisk(LibvirtStoragePool.java:101)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.createPatchVbd(LibvirtComputingResource.java:2980)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.createVbd(LibvirtComputingResource.java:2943)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:2808)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1035)
    com.cloud.agent.Agent.processRequest(Agent.java:518)
    com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:831)
    com.cloud.utils.nio.Task.run(Task.java:83)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    java.lang.Thread.run(Thread.java:679)
    2012-11-19 19:09:40,459 WARN [cloud.agent.Agent] (agentRequest-Handler-5:null) Caught:
    java.lang.NullPointerException
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.cleanupVMNetworks(LibvirtComputingResource.java:3922)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.handleVmStartFailure(LibvirtComputingResource.java:2709)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:2834)
    com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1035)
    com.cloud.agent.Agent.processRequest(Agent.java:518)
    com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:831)
    com.cloud.utils.nio.Task.run(Task.java:83)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    java.lang.Thread.run(Thread.java:679)

    • #2 by mcsrainbow on 2012/11/20 - 01:02

      你应该是没有按照我的文档来做的,如果严格按照我的文档,这里创建System VM的时候应该是在/mnt/primary下面,而你是直接在/mnt下面。目前不能确认你哪一步没有去做而导致的错误,比如Agent是否正确配置,之前的所有步骤是否都正确完成。

  2. #3 by djxiong on 2012/11/25 - 11:26

    无法查看vnc console.点击查看虚拟机控制台的时候,浏览器总是去访问xxx-xxx-xxx-xxx.realhostip.com,其中 xxx-xxx-xxx-xxx 是vnc服务系统虚拟机的 public IP,
    管理节点后台提示: Parse host info returned from executing GetVNCPortCommand. host info: consoleurl=https://192.168.2.14/console?uuid=e1ed335a-2791-1960-7e41-4f66e77c2a64&sessionref=OpaqueRef:a80df0a6-9ffc-62e0-5732-c932f4d2babe
    192.168.2.14是我的xenserver节点管理地址ip,是不是还要在xenserver上作什么配置?
    浏览器客户端能平通virtual console server这个系统虚拟机.
    请问vnc该如何配置才能访问到虚拟机的console,
    谢谢!

    • #4 by mcsrainbow on 2012/11/26 - 10:56

      VNC服务默认是绑定的本地127.0.0.1的端口,你可以通过netstat -lnp 看到,具体解决办法参考本文的 5.2 安装配置libvirt

  3. #5 by xltxb on 2012/11/28 - 14:16

    咨询下,测试环境是否是虚拟机,还是直接使用物理机测试呢?

    • #6 by mcsrainbow on 2012/11/29 - 03:17

      采用的一台高性能的物理机,目前我们公司内部的测试环境就就是通过这台物理机上的CloudStack 4.0构建的。

  4. #7 by smile朱 on 2012/12/02 - 09:36

    你好,我不知道为什么 sudo apt-get install cloud-client 找不到软件包,我把源改好了,但是就是无法加载包。

    • #8 by mcsrainbow on 2012/12/02 - 10:42

      “配置CloudStack官方源证书,更新系统的安装源” 这两步操作了么?

      • #9 by smile朱 on 2012/12/02 - 14:24

        太感谢了,我之前用的学校的源,加载不了,现在好了。

  5. #10 by johnson on 2012/12/02 - 16:19

    我按照你的操作都正常操作了,也可以通过WEB访问了,但就是不能注册ISO和模板,注册ISO的时候,status始终为NO,不知是什么原因?

    • #11 by mcsrainbow on 2012/12/02 - 16:59

      先梳理一下你的思路,先注册ISO,然后通过ISO安装一个OS,在通过这个OS所在的虚拟硬盘创建模板。
      你现在是卡在创建ISO这里,需要特别注意选项的勾选,并需要确保有一个正常的HTTP链接来访问ISO文件。

      • #12 by johnson on 2012/12/02 - 17:25

        谢谢你的及时回复,我的选项及HTTP链接iso都正常,我在系统下做过测试,如何才能查找到更详细的原因呢?

        • #13 by smile朱 on 2012/12/06 - 21:28

          我也是卡到这里。

          • #14 by mcsrainbow on 2012/12/07 - 11:42

            最好使用本地的ISO地址,我文档中默认给出的地址,如果下载速度太慢,成功率就比较低了。

          • #15 by johnson on 2012/12/11 - 10:31

            我使用的是本地的ISO,问题依旧,痛苦啊

          • #16 by johnson on 2012/12/11 - 10:50

            不知道这位仁兄问题解决没?

    • #17 by ZeroOne on 2013/02/06 - 18:15

      在global setting中找到host配置项,如果值是localhost,改成management server的IP地址,然后重启cloud-management服务,重启Secondary Storage VM虚拟机,应该就可以了。

      希望可以有帮助。

  6. #18 by smile朱 on 2012/12/03 - 15:30

    你好,我在局域网内配置,网关是192.168.1.1,在配置Host时,我给其提供的ip是192.168.1.10,添加主机出错,我把它改为dns 8.8.8.8也不行,请问在配置那些ip的时候要注意哪些?

  7. #19 by smile朱 on 2012/12/06 - 19:46

    你好,请问你配置之后ubuntu是否无法关机,要强制关机才可以?

    • #20 by mcsrainbow on 2012/12/07 - 11:40

      检查你的安装镜像的MD5SUM结果是否正确,另外就是确认硬件是否无误。
      我遇到这种问题都是基于以上原因的,正常情况一般不会出现。

  8. #22 by 许叁征 on 2012/12/09 - 16:27

    你好,博主,在朋友的介绍下来看到你的文档,很全面。困扰了很长时间,把问题汇问了下。
    1.cloudstack ssvm的三台虚拟机的的IP占用了好几个IP,因原来计划的IP不够,所以在无意删除后,发现有的虚拟机可以ping 通,有的不行。。想问下,ssvm1,eht0-eth3 三个IP各自有什么作用?是否可只使用一个IP?另有一个ip是169.254..的IP,它的使用是?
    2. CS3 在导入模板后发现版本不对,机器就无法启动,有时选择了好几个版本系统才能启动。然后使用ISO安装 后的系统,再进行制作模板,可以发现它竟然 无法启动,不知道哪边操作错了。QQ:45655023 。。不知道大家有没有发现这种问题。。急求解。谢谢!

    • #23 by mcsrainbow on 2012/12/10 - 10:45

      首先咱们应该搞清楚一个私有云的基础架构,对原有的IP规划这些都是应该考虑周到的东西。
      SystemVM占用的几个IP,169开头的是管理IP,可以直接通过SSH登陆的,与Guest同网段的是与Instance通信的IP,还有一个是与存储同网段的IP,负责管理访问存储资源,这些都是不能删除的。
      另外,本文是基于4.0的,3.x本来就存在一些bug,不建议把它们混在一起。

  9. #24 by mj887729 on 2012/12/12 - 10:53

    你好~~我在注册iso时有问题,它通过http来下载iso到本地,于是就在局域网内建了http server来放iso,但注册时候iso信息始终是无法就绪,状态是“Storage agent or storage VM disconnected”。之前在装3.x的时候也是这问题,始终没法解决……iso无法使用就没法建template……
    还有就是,怎么安装完发现Secondary Storage VM的链接本地 IP 地址是通的,就是169.254.1.x这个;而Console Proxy VM是专用 IP 地址这个通的。我记得之前好像应该是同网段的是通的吧……

    • #25 by mj887729 on 2012/12/12 - 11:24

      刚试着直接在server上建一个http,但还是显示 no ready…………

      • #26 by johnson on 2012/12/12 - 15:23

        我也是此问题,一直未解,不知何因

        • #27 by mj887729 on 2012/12/27 - 16:22

          应该是IP地址配置的问题,将C类地址换成B类后,ISO镜像就可以下载下来建template的
          不过对于cloudstack的网络还是弄不明白,它上面配置的3个网络到底是怎么用的,还有该怎么配置?
          我现在是单块网卡,配置一个B类地址192.168.1.171/16,完了在安装的那台server上是能通ssvm与proxyvm的,但我外面同一网段上的其他机器就不通,结果现在没法打开ssvm跟proxyvm的控制台……

          • #28 by tuge on 2013/11/19 - 17:14

            你好。我初次接触CloudStack,按照这篇文档进行到“创建ISO安装源并创建Instance”这一步,输入文档里的URL,一直等待可是ready一直是no,所以后续template后面都无法进行,我看了下网卡流量,发现下载流量为0,这是为什么呢?为什么不在下载?求解答。(*^__^*)

          • #29 by mcsrainbow on 2013/11/19 - 17:43

            应该是下载速度太慢的原因,你可以考虑在内网搭建一个HTTP服务器,然后把下载好的ISO放在上面,然后使用内网的地址进行下载,这样速度就快很多。

    • #30 by tuge on 2013/11/19 - 19:44

      博主,你好。我第一步下载不了,获取Secondary Storage VM的IP也是没有IP地址呢!如果iso安装失败,ip地址也获取不了吧?所以现在不知道怎么解决了。是不是跟我的网络配置有关呢?
      auto cloudbr0
      iface cloudbr0 inet static
      address 192.168.1.3
      netmask 255.255.255.0
      gateway 192.168.1.1
      bridge_ports eth0
      bridge_fd 5
      bridge_stp off
      bridge_maxwait 1
      dns-nameservers 210.34.48.34 218.85.157.99
      我这边路由器的IP网段就是192.168.1.*的

  10. #31 by shiying on 2012/12/18 - 14:32

    你好,我cloudStack + mysql安装好后,使用默认的admin/password无法登录,请问是怎么回事?多谢多谢

    • #32 by hk on 2012/12/19 - 09:32

      root下重启

      • #33 by www on 2013/03/19 - 13:48

        是这样吗?
        $ sudo /etc/init.d/cloud-management restart

  11. #34 by beride on 2013/01/17 - 09:47

    非常感谢。

  12. #35 by smilezhu on 2013/01/19 - 15:36

    你好,我添加主机的时候报错说认证错误,请问这是为什么呀?

  13. #36 by HadoopInAction on 2013/01/30 - 13:22

    你好,我用的cloudstack4.0+KVM搭建的管理服务器和host主机,所有的都正常运行,系统ISO模版也能够成功的down下来,但是就是按照模版创建实例失败。提示:Unable to create a deployment for VM

    • #37 by mcsrainbow on 2013/01/30 - 15:37

      这个必须从log里面去定位问题,CloudStack的log对日志级别的区分不好,INFO里面打印了绝大多数的故障原因。
      我建议一方面重复操作,另一方面将log中所有打印的内容仔细查看,我每次都是这样找到原因的。

  14. #38 by monster on 2013/03/09 - 09:21

    博主好,咨询一下,我根据您的步骤安装完CS后,SSVM无法启动,在面板上检测到secondary storage的告警。我的二级存储用的的独立的NFS,在MS上mount以后也能看到分区的信息。
    另外,我有一台MS,一台HOST,一台STORAGE,分别只出一个网卡,那么我的虚拟网络应该怎么配置,还需要桥接吗?

    谢谢。

  15. #39 by ybshen on 2013/04/03 - 19:30

    博主好,我按照你的文档成功安装了cs,但是在注册iso的时候,一直处于未准备的状态,查看了management日志,出现这样一个错误,java.lang.ClassCastException: com.cloud.agent.api.Answer cannot be cast to com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer。不知是什么原因引起的?

    • #40 by tuge on 2013/11/19 - 17:13

      你好。我初次接触CloudStack,按照这篇文档进行到“创建ISO安装源并创建Instance”这一步,输入文档里的URL,一直等待可是ready一直是no,所以后续template后面都无法进行,我看了下网卡流量,发现下载流量为0,这是为什么呢?为什么不在下载?跟你的问题接近,求解答。(*^__^*)

  16. #41 by qw0431 on 2013/04/26 - 10:38

    $ sudo apt-get install cloud-client
    现在提示找不到这个包了,用了cloud-management倒是能装上
    在后面执行
    "我们选择KVM作为虚拟化引擎
    $ sudo /usr/lib/cloud/common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary \
    -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
    "
    直接提示command not found

    不知如何解决,都是严格按照文档执行的

  17. #42 by alfred on 2013/08/03 - 16:00

    博主,你好。按照你的过程来做的,但是在实例创建完毕后,打开控制台,并没有出现ubuntu的开始安装界面。是
    boot failed :could not read from cdrom(code 0004)
    boot from hard disk...
    boot failed:not a bootable disk之类的信息,找不到启动介质,我尝试重新附加iso,重启后还是如此,有什么建议吗

    • #43 by alfred on 2013/08/03 - 18:01

      博主好,重新注册ISO后可以正常到达系统启动安装界面了。期待博主有一个集群环境和高级功能的文章:)

      • #44 by mcsrainbow on 2013/08/04 - 01:22

        能帮上忙我感到很高兴,集群环境和高级功能,也是我需要进一步学习的,如果有心得一定分享出来。

        • #45 by david on 2013/08/19 - 17:23

          云计算能实现和百度等网络盘的功能么?请问如何实现?

        • #46 by david on 2013/08/19 - 17:28

          能否替代传统文件服务器,提供丰富的网络存储和云磁盘功能,能的话该如何实现请问!请问可以加入你的qq么?请流下e-mail 或者qq

  18. #47 by tory burch matelasse on 2013/09/13 - 08:33

    hermes 京都

  19. #48 by tuge on 2013/11/19 - 17:07

    博主,你好。我初次接触CloudStack,按照你的文档进行到“创建ISO安装源并创建Instance”这一步,输入文档里的URL,一直等待可是ready一直是no,所以后续template后面都无法进行,我看了下网卡流量,发现下载流量为0,这是为什么呢?为什么不在下载?求解答。(*^__^*)

  20. #49 by tuge on 2013/11/19 - 19:44

    博主,你好。我第一步下载不了,获取Secondary Storage VM的IP也是没有IP地址呢!如果iso安装失败,ip地址也获取不了吧?所以现在不知道怎么解决了。是不是跟我的网络配置有关呢?
    auto cloudbr0
    iface cloudbr0 inet static
    address 192.168.1.3
    netmask 255.255.255.0
    gateway 192.168.1.1
    bridge_ports eth0
    bridge_fd 5
    bridge_stp off
    bridge_maxwait 1
    dns-nameservers 210.34.48.34 218.85.157.99
    我这边路由器的IP网段就是192.168.1.*的

    • #50 by tuge on 2013/11/19 - 19:49

      补充下,我查看Infrastructure -> Zones -> clolud_1 -> Physical Network Of First Zone -> Network Service Providers -> NetScaler的状态是Disable,是不是这个原因造成无法下载呢?如果是请问怎么启动这个服务呢?求教博主

      • #51 by tuge on 2013/11/19 - 20:01

        还有一点,在注册iso时。下载不成功。不过 Infrastructure ->
        System VMs 这边偶尔能够看到Secondary Storage VM的IP,只是我的主机192.168.1.3 ping 不通这个IP(169.254.3.91),所以也无法SSH到Secondary Storage VM。还有就是,Secondary Storage VM会消失,估计是iso注册失败了吧。由于前两天才接触的cloudstack,所以现在自己不会解决啊。

  21. #52 by tuge on 2013/11/21 - 11:09

    博主好,我根据你的文档进行了cloudstack的安装,成功利用下载的iso启动了实例,在虚拟机里我没有进行10.3.1--10.3.5的操作,直接利用iso制作了template,发现虚拟机不能链接网络,不知道问题出在哪里了?求助

  22. #53 by shane on 2014/03/06 - 08:27

    看了博主的文章,创建成功,但还有以下的设置稍有不同:
    1、NFS如果为独立服务器的话,其他的子结点在使用NFS的时候,需要首先安装包nfs-common;
    2、在Web页面设置Zone的时候,其中很多的IP是不能相互覆盖的;
    3、没有进行防火墙的设置;
    4、内网进行ISO的template的时候,要在Global Settings里面更改网段,才能正常进行下载。

    • #54 by mcsrainbow on 2014/03/06 - 13:30

      谢谢提示,文章有点时间了,能帮上忙就好。

  23. #55 by cqj on 2014/12/11 - 19:57

    博主,你好。初始化数据库这个地方“Detected local IP address as 10.6.203.10",我的主机名和ip已经改好了,但是我初始化数据库还是发现的127.0.0.1这个ip,想请问下出了什么问题?

  24. #56 by fangker on 2015/02/26 - 17:48

    博主,问一下这个东西可不可以用作web服务器的云架设?

    • #57 by mcsrainbow on 2015/03/12 - 15:39

      CloudStack本来就是用来构建私有云的,不过看目前的发展势头,采用OpenStack似乎更靠谱。

  25. #58 by microul on 2015/05/24 - 15:29

    博主,个人pc单网卡部署cloudstack,环境ubuntu 14 + kvm,二级路由下用,通过捆绑域名外网能否web访问cpvm console?求扣扣面料

(will not be published)
*