CloudStack是一个功能强大、UI友好的开源云(IaaS)计算解决方案。自Ctrix将CloudStack捐献给 apache 后,一直持续高速发展,其社区活跃度已经渐渐遇上风头一时无两的另外一开源云OpenStack平台。 mysql
CloudStack拥有全部开源云平台中最为友善的管理界面,并且其天生的多语种支持会使中文用户感受很爽。 linux
今天咱们来详细介绍一下CloudStack最新版本 4.1.0 在 CentOS 6.4 下的安装部署的步骤。鉴于网上文章一大抄,不少内容都是装来装去一大堆东西,看官们一会就晕了,根本不了解为何装这些程序,装来是干什么的。这回呢,我会把每一步说明尽量详细一些,外加个人经验和理解(很多心得是重装了10次以上后得出的),但愿能让后来者能够少走些弯路。 web
CloudStack可分为管理节点安装和受控节点安装。 sql
管理节点安装无特殊要求,彻底能够安装到虚拟机环境下。 shell
受控节点因要建立虚拟机,故须要硬件虚拟化支持,推荐使用独立主机安装。CloudStack支持多种虚拟化方案,包括:KVM、Xen、XenServer、VMware。因XenServer、VMware已包含有强大的虚拟机管理功能,CloudStack能够直接与其通讯调用其管理接口,所以这两种受控机环境下,无需安装任何软件。但KVM、Xen的受控机必须安装 CloudStack-Agent 以后,才能被CloudStack管理。 数据库
本篇咱们主要来说解管理节点搭建步骤: apache
因咱们要使用网络安装方式,因此要首先保证你的服务器能够正常联网。 浏览器
ping www.baidu.com
CloudStack运行时须要获取本机名称,如没法正确获取可能致使服务没法正常启动并报一大堆的错。 tomcat
运行如下命令检查: 安全
hostname --fqdn
如无正常返回,请编辑 /etc/hosts 文件,添加主机ip对应的名称。
如: 192.168.19.135 manage.cloudstack.com
vi /etc/sysconfig/network 将 HOSTNAME= 改成同你刚设置的同样。
编辑完后当即生效。若是还不成的话,重启下服务器应该就会好了。
管理节点会经过各类协议与受控节点通信,为了确保安全,受控节点接到命令后会进行一系列的校验,若是两机的时间不一样步的话,会致使命令拒绝执行。
最简单的办法就是,全部服务器都安装 ntp实现时间的自动同步。
yum install ntp
服务器上的SELinux会拦截CloudStack的一些命令,致使CloudStack操做失败,所以启动CloudStack前须要对SELinux进行设置。
vi /etc/selinux/config
SELINUX=permissive
以上修改需重启服务器才能生效,为使设置当即生效可以使用下边的命令
setenforce permissive
默认状况下,CentOS的软件源中没有收录最新版本CloudStack,为了能顺利安装,咱们须要手工指定软件源。
新建 /etc/yum.repos.d/cloudstack.repo 文件,内容为:
[cloudstack] name=cloudstack baseurl=http://cloudstack.apt-get.eu/rhel/4.1/ enabled=1 gpgcheck=0
设置好源之后,咱们就能够直接使用 yum安装了,很是简单方便。
安装管理节点的命令为:
yum install cloud-client
若是你的CentOS 是最小化安装的话,将须要安装 160 兆以上的东东,请耐心等待哈...
CloudStack使用mysql管理数据,但安装cloud-client时没有包含mysql,这时须要咱们手工安装,并导入数据。这是能够理解的,由于数据库能够被安装到其它机器上。
yum install mysql-server
默认的,mysql有链接数限制,没法知足CloudStack管理节点的要求,须要手工设定。
vi /etc/my.cnf
增长如下内容:
innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 max_connections=350 log-bin=mysql-bin binlog-format='ROW'
注:若是没改的话会发生什么现象我没有尝试,不过仍是建议按要求修改。
max_connections的参数应设置350乘以你准备部署的管理节点的数量。这里假定只安装一个管理节点。
如今,启动 mysql 服务:
service mysqld start
缺省安装的mysql安全级别比较低,须要手工设置mysql下密码、禁用远程访问,删除无用帐户及测试数据库。方法也很简单,直接使用以下命令按向导提示一步步来便可:
mysql_secure_installation
数据库准备好后,需导入CloudStack的表及基础数据,这样云平台才能正常使用:
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:刚才设定的root密码
若是没有意外的话,最后会输出 CloudStack has successfully initialized database 字样,表示数据库已经准备好了。
虽然管理节点已经安装完了,但目前还没法使用,由于CloudStack的运转还须要依赖于系统虚机。(系统虚机的用处参见第七节)。系统虚机模板必须导入到网络存储上,因此咱们接下来要安转网络存储。
CloudStack支持多种网络存储协议,如iSCSI、NFS、VMFS等。因为NFS简单易用,推荐使用NFS搭建网络存储。
说明:CloudStack使用了两种网络存储。一种是主存储,主存储用于存放虚拟机硬盘文件。主存储也可以使用本地存储,并不是必需使用网络存储。二级存储用于存放虚拟机模板/快照/ISO文件,二级存储只能使用网络存储。
咱们这里以NFS为例。安装NFS服务:
yum install nfs-utils
编辑 /etc/export 文件,设置主存储和二级存储的路径
# vi /etc/exports
在文件中,增长以下内容
/export *(rw,async,no_root_squash)
实际创建文件夹
mkdir -p /export/secondary mkdir -p /export/primary
修改 /etc/sysconfig/nfs 将其中的端口号所有打开
LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 RQUOTAD_PORT=875 STATD_PORT=662 STATD_OUTGOING_PORT=2020
接着开放iptables相关端口:
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 111 -j ACCEPT -A INPUT -p udp -m udp --dport 111 -j ACCEPT -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT -A INPUT -p tcp -m tcp --dport 32803 -j ACCEPT -A INPUT -p udp -m udp --dport 32769 -j ACCEPT -A INPUT -p tcp -m tcp --dport 892 -j ACCEPT -A INPUT -p udp -m udp --dport 892 -j ACCEPT -A INPUT -p tcp -m tcp --dport 875 -j ACCEPT -A INPUT -p udp -m udp --dport 875 -j ACCEPT -A INPUT -p tcp -m tcp --dport 662 -j ACCEPT -A INPUT -p udp -m udp --dport 662 -j ACCEPT
service iptables restart
启动NFS服务:
service nfs start service rpcbind start
设置服务为自动重启
chkconfig nfs on chkconfig rpcbind on
系统虚机在CloudStack中扮演着重要的角色,如系统虚机没有正确导入,CloudStack将没法管理二级存储,也就没法完成导入模板、建立新的虚机等操做。
系统虚机文件很大,没有包含在CloudStack安装程序中,须要咱们手工下载并导入。
因系统虚机须要存放在二级存储上,故需先mount 二级存储到本地硬盘
mkdir /tmp/iso -p mount -t nfs 127.0.0.1:/export/secondary /tmp/iso cd /usr/share/cloudstack-common/scripts/storage/secondary/
不一样的虚拟机实现方案系统虚机模板也是不一样的
若是你的受控机使用 KVM,则使用下面的命令:
./cloud-install-sys-tmplt -m /tmp/iso/ -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
若是你的受控机使用XenServer,则使用下面的命令:
./cloud-install-sys-tmplt -m /tmp/iso/ -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2 -h xenserver -F
若是你的受控机使用vCenter,则使用下面的命令:
./cloud-install-sys-tmplt -m /tmp/iso/ -u http://download.cloud.com/templates/burbank/burbank-systemvm-08012012.ova -h vmware -F
文件较大,需耐心等待.……
固然,你也能够把文件下载到本地,而后用 -f 参数导入。如:
./cloud-install-sys-tmplt -m /tmp/iso/ -f /var/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
太好了,目前为止咱们的准备工做都完成了,如今你已经能够登录CloudStack控制台啦。
先初始化一下管理节点,这步只要执行一次就好了:
cloudstack-setup-management
启动CloudStack服务:
service cloudstack-management restart
启动CloudStack服务须要花点时间,这期间你能够查看下它的日志,确保它正常启动:
tail -100f /var/log/cloudstack/management/catalina.out
通常状况下,它会正常启动。若是启动时报权限问题,通常是由于 cloud用户没有/var/log/cloudstack/management/ 写入权限致使。
chown cloud:cloud /var/log/cloudstack/ -R
启动成功能后,你如今就能够用谷歌、火狐浏览器访问管理节点啦:
注:IE访问可能有兼容性问题。
Cloudstack基于tomcat提供web服务,默认使用了8080端口。若是你想改用其它端口,能够修改 /etc/tomcat6/server.xml 文件进行配置。
CloudStack原生支持中文,怎么样看着亲切吧?
默认的用户名为 admin 密码是 password 。
初次登录时会显示向导页面,一步步引导你建立第一个基础架构。目前咱们的准备工做还没有完成,还没法正确添加,所以这里先选择跳过。
登录后点击“基础架构”,CloudStack资源管理的功能都在“基础架构”下。
其中,“区域”能够理解为一个机房;
“提供点”能够理解为一个机架;
“群集”是机架中主机的分组管理;
“主存储”是网络存储,主要用于存放虚拟机硬盘的,固然你也可使用本地存储;
“二级存储”也是网络存储,主要用于存在虚拟机模板、快照的。
“系统VM”是CloudStack自带的专用虚机,用于管理二级存储及远程终端。其中二级存储虚机必须正常启动模板等一干功能才可用。远程终端虚机正常启动后,才能经过WEB页面直接访问虚机控制台。
“虚拟路由器”也是CloudStack自带的专用虚机。主要用于网络隔离、端口转发等网络相关功能。
注意:CloudStack有一个全局属性来控制二级存储所在的网段。若是这个网段没配或配置的不对,将没法成功能添加上二级存储。
在 CloudStack 管理页面上,选择“全局设置”,在右上边的搜索框中输入 sites 搜索。
修改 secstorage.allowed.internal.sites 为二级存储当前网段,如 192.168.0.0/24
搜索 local,修改system.vm.use.local.storage 为 true,容许系统虚机使用本地存储。
修改后,重启 CloudStack 生效。
server cloudstack-management restart
好了,如今CloudStack管理节点全部的准备工做都已经完成了。接下来你就能够添加本身的第一个“区域”了。
这步的操做方法,CloudStack中已经提供了一个很是友好的向导,能够帮助你正确完成添加。另外,网上也有一大堆的文章介绍,我就不详细说了,等未来有机会时我再给你们介绍下CloudStack高级网络域的相关功能及添加方法。
检查iptables是否阻挡了8080端口。检查cloudstack-management服务是否正常启动。
server cloudstack-management status
若是启动状态不正常,则须要检查一下日志。
日志位于 /var/log/cloudstack/management/catalina.out 。根据日志中的错误提示,进行相应的处理,绝大多数问题均可以获得解决。
若是日志信息不够详细,能够修改 /etc/cloudstack/management/log4j-cloud.xml来调整日志的输出级别。
默认的登录用户名为 admin 密码是 password 。
若是登录时提示不正确,多是导入基础数据库时有的问题。
从新导入基础数据库:
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:root密码
若是还不行,参考5将数据库删掉再从新导入。
检查/etc/sysconfig/nfs配置文件是否把端口都开放了。
检查iptables是否有阻挡。
检查CloudStack的“全局设置”,secstorage.allowed.internal.sites属性是否设置正确。
建立好“基础架构”后,就能够导入ISO文件或虚拟机模板,为建立虚机作准备了。
若是你发现注册ISO或注册模板时,状态字段一直不动,已就绪永远都是no,那通常都是由于二级存储有问题或Secondary Storage VM 有问题了。
选择“控制板”->系统容量,检查二级存储容量是否正确。
检查系统VM中的Secondary Storage VM是否正常启动。
安装完CloudStack后,咱们每每会作各类实验,可能会把系统搞得很乱。想删除的话很是麻烦,由于它们之间每每存在层级关系,必须先从最底层删起。有没简单的办法直接推倒重来呢?答案是有的,最简单只要重置下其数据库便可。
先停掉CloudStack服务:
service cloudstack-management stop
登录mysql控制台,删除数据库:
mysql -u root -p
drop database cloud; drop database cloud_usage; drop database cloudbridge; quit;
从新导入基础数据:
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:root密码
从新导入系统虚机:
mount -t nfs 127.0.0.1:/export/secondary /tmp/iso rm -rf /tmp/iso/ cd /usr/share/cloudstack-common/scripts/storage/secondary/
参考第7节,导入相应的系统虚机模板。
重启cloudstack服务
service cloudstack-management start
这时,你再登录就会发现一个全新的CloudStack啦。
CloudStack在4.1之前的版本中,区域、提供点等都可使用中文命名,但4.1版本时殊不知为什么作了限制,蛋疼。
若是在乎这个功能,请使用4.1之前的版本。推荐使用 4.0.2版。