环境介绍
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 - |
更新系统的安装源
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 1 Enter new UNIX password: 2 Retype new UNIX password: 3 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]模块中加入以下参数
1 innodb_rollback_on_timeout=1 2 innodb_lock_wait_timeout=600
3 max_connections=350 4 log-bin=mysql-bin 5 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 |
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 1 /export *(rw,async,no_root_squash,no_subtree_check) |
刷新配置
挂载测试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 1 Filesystem Size Used Avail Use% Mounted on 2 ... 3 10.6.203.10:/export/primary 434G 7.8G 404G 2% /mnt/primary 4 10.6.203.10:/export/secondary 434G 7.8G 404G 2% /mnt/secondary $ sudo vim /etc/fstab |
增加以下内容
1 10.6.203.10:/export/primary /mnt/primary nfs rw,tcp,intr 0 1 2 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 |
整个过程大概需要花费半个小时
01 --2012-11-12 14:49:18-- http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 02 Resolving download.cloud.com (download.cloud.com)... 207.171.189.81 03 Connecting to download.cloud.com (download.cloud.com)|207.171.189.81|:80... connected. 04 HTTP request sent, awaiting response... 200 OK 05 Length: 286036668 (273M) [binary/octet-stream] 06 Saving to: `/usr/lib/cloud/common/scripts/storage/secondary/4aae2546-33e1-4784-9e69-09e1ef9d6fb4.qcow2' 07 08 100%[===>] 286,036,668 188K/s in 24m 53s 09 10 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] 11 12 Uncompressing to /usr/lib/cloud/common/scripts/storage/secondary
/4aae2546-33e1-4784-9e69-09e1ef9d6fb4.qcow2.tmp (type bz2)...could take a long time 13 Moving to /mnt/secondary/template/tmpl/1/3///4aae2546-33e1-4784-9e69-09e1ef9d6fb4.qcow2...could take a while 14 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 |
修改以下配置
1 listen_tls = 0 2 listen_tcp = 1 3 tcp_port = "16059" 4 auth_tcp = "none" 5 mdns_adv = 0 |
查看配置
$ cat /etc/libvirt/libvirtd.conf | grep -v '#' | grep -v "^$" 1 listen_tls = 0 2 listen_tcp = 1 3 tcp_port = "16509" 4 mdns_adv = 0 5 unix_sock_group = "libvirtd" 6 unix_sock_rw_perms = "0770" 7 auth_unix_ro = "none" 8 auth_unix_rw = "none" 9 auth_tcp = "none" $ sudo vim /etc/init/libvirt-bin.conf |
修改以下参数
1 env libvirtd_opts="-d -l" # sudo vim /etc/libvirt/qemu.conf |
修改以下参数
重启服务
$ sudo service libvirt-bin restart |
5.3 配置安全策略
$ sudo dpkg --list "apparmor" 1 Desired=Unknown/Install/Remove/Purge/Hold 2 | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend 3 |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) 4 ||/ Name Version Description 5 +++-========================================== 6 ii apparmor 7 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 01 # This file describes the network interfaces available on your system 02 # and how to activate them. For more information, see interfaces(5). 03 04 # The loopback network interface 05 auto lo 06 iface lo inet loopback 07 08 # The primary network interface 09 auto eth0 10 iface eth0 inet manual 11 12 # Public network 13 auto cloudbr0 14 iface cloudbr0 inet static 15 address 10.6.203.10 16 netmask 255.255.0.0 17 gateway 10.6.255.1 18 bridge_ports eth0 19 bridge_fd 5 20 bridge_stp off 21 bridge_maxwait 1 22 dns-nameservers 10.6.255.253 61.139.2.69 23 24 # Private network 25 auto cloudbr1 26 iface cloudbr1 inet manual 27 bridge_ports eth0 28 bridge_fd 5 29 bridge_stp off 30 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 1 * Stopping Tomcat servlet engine tomcat6 [ OK ] $ sudo update-rc.d -f tomcat6 remove 1 Removing any system startup links for /etc/init.d/tomcat6 ... 2 /etc/rc0.d/K08tomcat6 3 /etc/rc1.d/K08tomcat6 4 /etc/rc2.d/S92tomcat6 5 /etc/rc3.d/S92tomcat6 6 /etc/rc4.d/S92tomcat6 7 /etc/rc5.d/S92tomcat6 8 /etc/rc6.d/K08tomcat6 |
启动cloud-management
$ cd ~ $ sudo /etc/init.d/cloud-management restart 1 * Starting CloudStack-specific Tomcat servlet engine cloud-management [ OK ] |
登陆用户界面
http://10.6.203.10:8080/client/ |
默认账号密码
可以看到如下图所示向导界面
选择左边的按钮"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
|