在CentOS上安装Cloudstack Mangement Server

CentOS, Cloudstack


Prof.P的TA的活….

Cloudstack是一个从商业化到开源的云平台,提供有WebUI页面,方便管理,网上文档也比较完整。此次是为了完成TA的任务,其实是这个prof的项目,每周二十小时,淡淡的忧伤。

一开始我们选择的是在ubuntu 12.04 LTS desktop上去搭建这个平台,一开始用的tomcat6.0.33版本,遇到的问题是WEBUI无法访问, 其中的一个cloudstack specific tomcat servlet service无法开启. 更换到tomcat6.0.35之后, webUI可以成功访问, 但是总是提示invalide user name or password, 初始化了数据库很多遍还是无法解决问题, 最后才转到CentOS 6.4(x86_64)平台上.

整个安装过程基本上和手册上一致, 建议直接使用root账户, 或者sudo -s保持整个安装过程一致.

配置RPM package repository

/etc/yum.repos.d/下创建一个cloudstack.repo 内容如下

[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.1/ #手册里是4.0
enabled=1
gpgcheck=0

然后yum update一下

设置hostname

使用hostname --fqdn返回hostname,如果没有需要编辑/etc/hostname 给一个主机名. 一般形如management1.lab.example.org

安装需要的软件包

yum install ntp #时间同步服务器
yum install cloudstack-management #cloudstack管理服务器
yum install ssh #方便将来管理
yum install mysql-server #数据库

如果你需要cloudstack连接xenserver的话, 需要下载vhd-utilmv/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver (这里手册还没有更新过来)

wget http://download.cloud.com.s3.amazonaws.com/tools/vhd-util
chmod 755 vhd-util	
mv vhd-util /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver

数据库设置与初始化

修改/etc/my.cnf[mysqld]模块里添加如下语句

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

完成后service mysqld start

记得run一下mysql_secure_installation配置一个mysql数据库root密码. 这里假设为<mysqlrootpasswd>

接下来可以利用cloudstack management软件来初始化相关的数据库, 命令如下

 cloudstack-setup-databases cloud:@localhost --deploy-as=root:<mysqlrootpasswd>

手册上的指令比较复杂但是有详细的解释, 有一些ip和加密key的设置, 而且cloud:<dbpassword>@localhost是这是database中cloud用户的密码, 可以设置, 我在这里留空了. 后面那个是mysql的root帐户密码. 这里需要注意的, 如果你使用的是无线网卡提供网络, 你可以留意下那个自动检测的mangement server ip的地址,可能会自动设置成别的网卡的地址, 可以手动去修改(/etc/cloudstack/mangement/db.properties), 或者在运行这个指令的时候把不需要的网卡用ifconfig down掉.

运行 management server

在运行这个之前请确保必要的服务都开启了 例如

 service tomcat6 start
 service mysqld start
 service sshd start

最后运行这个

 cloudstack-setup-management

这样应该就能在访问主机ip的8080端口下client文件夹可以看到webui xxx.xxx.xxx.xxx:8080/client

默认登陆密码是 adminpassword. 如果出现invalide username之类的无法登陆, 请核实cloudstack的这两个setup命令, 再运行一遍. 然后在运行

service cloudstack-management start
cloudstack-setup-management

操作WebUI管理cloud

通过WebUI可以方便的管理cloudstack,这里请重点参考cloudstack的文档。

配置NFS

安装手册里有知道如何配置独立的NFS server. 这里我们的NFS Server 和 Cloudstack MS是一个服务器. 根据试用的观察, 如果配置了NFS, 那么以后Cloudstack中导入的template和新建的instance和vhd都是放在这个primary nfs存储里. (如何使用本地存储的配置待更新.)

 yum install nfs-utils
 yum install rpcbind #rpc是nfs必须的
 mkdir -p /export/primary 
 mkdir -p /export/secondary 

配置NFS, 在/ect/exports里添加/export *(rw,async,no_root_squash),然后运行exporfs -a.

/etc/sysconfig/nfs中 uncomment 这些

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

应该在iptables中把这些端口 编辑/etc/sysconfig/iptables (未测试, 为了图方便, 我disable了iptables. 按照手册来说,这些设置应该是cloudstack-setup-management自动设置好的)

-A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s <NETWORK> -m state --state NEW -p udp --dport 662 -j ACCEPT  

<NETWORK>应该是你正在用的网卡, eth0 wlan0之类的. 编辑好之后, restart iptables 这个service

开启相关服务

service rpcbind start
service nfs start

通过cloudstack的webUI可以方便的添加主存储和次级存储。主存储是用来存储SystemVM和Guest VM的。但是在WebUI添加zone的时候,如果选择了local storage,则可以利用host主机的本地存储来存储GuestVM 除非是在全局配置里选择system.vm.use.local.storage的话,那么SystemVM也可以使用local storage。

下载system VM模板

VM模板是给cloudstack虚拟机使用的, 应该放在次级存储里. 我们这里是在management server里下载. 也可以用host机器通过nfs upload进去.

# xenserver
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.vhd.bz2 -h xenserver
# kvm
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm

安装apache2

因为template和iso的上传需要使用这种url的方式.

yum install httpd

/var/www/html下可以放iso和vhd.gz

为了能够支持iso的上传,记得在/etc/mime.types中添加

 # MIME type                                     Extensions
  none/none                                       iso

然后restart httpd服务. 记得看反馈信息hostname和ip之类的, 然后试试访问能否下载的你放入html文件夹下的文件.

注意这里文件权限比较重要, 建议使用chmod a+x *.iso *.vhd.gz使得访问者有下载的权限.如果还是出现connection refused的状态提示,请看文末的 Q&A

设置相关服务开机启动

有如下服务需要开机启动

service sshd start
service iptables start
service ntpd start
service httpd start
service rpcbind start
service mysqld start
service nfs start
service tomcat6 start
cloudstack-setup-management

连通host(KVM和XENSERVER)与MS

连通XenServer

连通XenServer非常方便, 只需要配置静态IP到一个网段,然后接上switch就行了. 剩下的工作可以交给Management Server来操作.


Trouble Shooting

遇到问题无法解决的话,可以试试一下方面

iptables

cloudstack-setup-management应该会take care 这些问题, 但是如果实在不行可以尝试stop iptables来排除问题出在它身上的可能.

service iptables stop #可以在本次启动中stop掉iptabls
selinux

selinux应该被设置为disabled或者permissive

查看日志文件

/var/log/cloudstack/management/management-server.log

一般利用grep命令

grep –I –E ‘exception|unable|fail|invalid|leak|warn|error’ /var/log/cloudstack/management/management-server.log

杂记

配置网关

在我搭建的cloud中,MS(Management Server)是作为网关的, 为了让子网内的所有host能够有网络连接.(如果使用高级网络模式,则不需要这些设置) 记得读研的时候就专研过iptables,不过已经忘记的查不多了,只能到网上随便找了一个.

假设我们有wlan0和eth0 两张网卡, 192.168.1.0/24是内网. 首先得打开ip_forward by echo 1 > /proc/sys/net/ipv4/ip_forward 然后需要配置

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD  -o wlan0 -i eth0 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

可以使用service iptables save将配置存入文件

配置端口映射

配置端口映射的代码如下

iptables -A PREROUTING -t nat -i wlan0 -p tcp --dport 3005 -j DNAT --to 192.168.1.55:3389

上述指令将wlan0访问3005端口的转发到目标ip的3389端口(windows remote connector端口).


Reference

  1. http://www.cloudstack-china.org/2012/11/1318.html
  2. http://www.ibm.com/developerworks/cn/cloud/library/1303_chenyz_cloudstack/
  3. http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.1.0/html/Installation_Guide/index.html
  4. http://heylinux.com/archives/2093.html 这个是用的ubuntu server
  5. http://www.cloudstack-china.org/2013/01/1494.html
  6. http://bbs.chinaunix.net/thread-4065267-1-1.html
  7. http://xmodulo.com/2012/05/how-to-set-up-nfs-server-on-xenserver.html
  8. http://xenme.com/2121

Q&A | Tips

cloudstack上传模板时候 ‘connection refused’

需要修改全局参数中的secstorage.allowed.internal.sites,比如我们内网网段192.168.1.0/24. 确认后,重新启动management server即可。

避免使用service cloudstack-management restart

有时候,会出现一些问题,导致你无法再登入webUI,推荐使用stopstart命令来取代这个指令。