在 CentOS 6.4 上安裝 CloudStack 4.2
又到年底,下月開始休假,所以這周基本上算今年 “努力” 的最后一周,接下來六周都不會有技術(shù)文章更新。
和 OpenStack, OpenNebula 類似,CloudStack 是另一款開源云計算平臺。CloudStack 的前身是 Cloud.com 家的一款商業(yè)云計算產(chǎn)品(也有開源版本),2011年 Cloud.com 被 Citrix 收購,2012年的時候 Citrix 將收購的云平臺 CloudStack 全部捐給了 Apache 基金會,自己則以 Citrix CloudPlatform (powered by Apache CloudStack) 的形式為客戶提供商業(yè)化的云計算解決方案。
按照《OpenStack, OpenNebula, Eucalyptus, CloudStack 社區(qū)活躍度比較》的統(tǒng)計,貌似 CloudStack 項目的活躍程度僅次于 OpenStack. 和大多數(shù)云計算、集群軟件一樣,CloudStack 也是控制節(jié)點+計算節(jié)點這種架構(gòu),控制節(jié)點(cloudstack-management)用來統(tǒng)一管理計算節(jié)點,提供資源分配和任務(wù),提供 API、GUI、數(shù)據(jù)庫等服務(wù);計算節(jié)點(cloudstack-agent)則用來跑虛擬機(jī)。我們需要做的是,
- 在控制節(jié)點上安裝 cloudstack-management;
- 在(每個)計算節(jié)點上安裝 cloudstack-agent 和 kvm.
在控制節(jié)點上
安裝完 CentOS 6.4 系統(tǒng)后,升級系統(tǒng)并修改 hostname 后重啟:
- # yum update
- # echo "cloudstack.vpsee.com" > /etc/hostname
- # vi /etc/sysconfig/network
- NETWORKING=yes
- NETWORKING_IPV6=no
- HOSTNAME=cloudstack.vpsee.com
- # echo "192.168.2.150 cloudstack cloudstack.vpsee.com" >> /etc/hosts
- # reboot
添加 cloudstack 軟件包的官方源,安裝 ntp, cloudstack-management, mysql 數(shù)據(jù)庫服務(wù)器:
- # vi /etc/yum.repos.d/cloudstack.repo
- [cloudstack]
- name=cloudstack
- baseurl=http://cloudstack.apt-get.eu/rhel/4.2/
- enabled=1
- gpgcheck=0
- # yum update
- # yum install ntp
- # yum install cloudstack-management
- # yum install mysql-server
修改 mysql 配置文件,加入下面幾行,啟動 ntp, mysql 服務(wù)并運行 mysql_secure_installation 給 mysql 設(shè)置密碼:
- # vi /etc/my.cnf
- ...
- [mysqld]
- ...
- innodb_rollback_on_timeout=1
- innodb_lock_wait_timeout=600
- max_connections=350
- log-bin=mysql-bin
- binlog-format = 'ROW'
- [mysqld_safe]
- ...
- # service ntpd start
- # chkconfig ntpd on
- # service mysqld start
- # chkconfig mysqld on
- # mysql_secure_installation
修改 SELINUX 設(shè)置,并配置防火墻允許訪問 mysql 的 3306 端口:
- # vi /etc/selinux/config
- ...
- SELINUX=permissive
- ...
- # setenforce permissive
- # vi /etc/sysconfig/iptables
- ...
- -A INPUT -p tcp --dport 3306 -j ACCEPT
- ...
- # service iptables restart
使用 cloudstack-setup-databases 初始化 ClouStack 數(shù)據(jù)庫,完成后運行 cloudstack-setup-management:
- # cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:root -i 192.168.2.150
- # cloudstack-setup-management
- Starting to configure CloudStack Management Server:
- Configure sudoers ... [OK]
- Configure Firewall ... [OK]
- Configure CloudStack Management Server ...[OK]
- CloudStack Management Server setup is Done!
控制節(jié)點應(yīng)該和存儲分開,這里為了方便,我們把 NFS 也裝在這個控制節(jié)點上,并自己掛載自己的 NFS 分區(qū):
- # yum install nfs-utils
- # mkdir -p /export/primary
- # mkdir -p /export/secondary
- # vi /etc/exports
- /export *(rw,async,no_root_squash,no_subtree_check)
- # exportfs -a
- # vi /etc/sysconfig/nfs
- ...
- LOCKD_TCPPORT=32803
- LOCKD_UDPPORT=32769
- MOUNTD_PORT=892
- RQUOTAD_PORT=875
- STATD_PORT=662
- STATD_OUTGOING_PORT=2020
- ...
- # service rpcbind start
- # service nfs start
- # chkconfig nfs on
- # chkconfig rpcbind on
- # reboot
- # mkdir -p /mnt/primary
- # mkdir -p /mnt/secondary
- # mount -t nfs 192.168.2.150:/export/primary /mnt/primary
- # mount -t nfs 192.168.2.150:/export/secondary /mnt/secondary
修改防火墻配置,開放下面一些端口:
- # vi /etc/sysconfig/iptables
- ...
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
- -A INPUT -s 192.168.2.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT
- ...
- # service iptables restart
- # service iptables save
創(chuàng)建虛擬機(jī)需要有模版,這個模版可以自己做,也可以下載官方現(xiàn)成的。需要注意的是,官方文檔中的 /usr/lib64/cloud/common/… 路徑不對,應(yīng)該是 /usr/share/cloudstack-common/…:
- # /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://d21ifhcun6b1t2.cloudfront.net/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2 -h kvm -s -F
在計算節(jié)點上
為了保持一致,我們在計算節(jié)點上也采用 CentOS 6.4. 在每個計算節(jié)點上都需要如下的安裝和配置。升級系統(tǒng)并修改 hostname、重啟:
- # yum update
- # echo "cloudstack01.vpsee.com" > /etc/hostname
- # vi /etc/sysconfig/network
- NETWORKING=yes
- NETWORKING_IPV6=no
- HOSTNAME=cloudstack01.vpsee.com
- # echo "192.168.2.151 cloudstack01 cloudstack.vpsee.com" >> /etc/hosts
- # reboot
添加 cloudstack 軟件包的官方源,安裝 ntp, cloudstack-agent 和 kvm:
- # vi /etc/yum.repos.d/cloudstack.repo
- [cloudstack]
- name=cloudstack
- baseurl=http://cloudstack.apt-get.eu/rhel/4.2/
- enabled=1
- gpgcheck=0
- # yum update
- # yum install ntp
- # yum install cloudstack-agent
- # yum install qemu-kvm
修改 libvirt 相關(guān)配置文件,去掉下面幾行的注釋,注意把 auth_tcp 改成 “none”,如果需要 vnc 訪問的話別忘了取消 qemu.conf 里面的 vnc_listen 相關(guān)注釋,重啟 libvirtd 服務(wù)使配置生效:
- # vi /etc/libvirt/libvirtd.conf
- ...
- listen_tls = 0
- listen_tcp = 1
- tcp_port = "16509"
- auth_tcp = "none"
- mdns_adv = 0
- ...
- # vi /etc/sysconfig/libvirtd
- ...
- LIBVIRTD_ARGS="--listen"
- ...
- # vi /etc/libvirt/qemu.conf
- ...
- vnc_listen = "0.0.0.0"
- ...
- # service libvirtd restart
別忘了讓防火墻開放必要的端口:
- # iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
- # iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT
- # iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT
- # iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT
- # iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT
- # iptables-save > /etc/sysconfig/iptables
測試
打開瀏覽器,訪問控制節(jié)點 http://192.168.2.150:8080/client/ 就會看到登錄界面,默認(rèn)用戶名和密碼是 admin/password,登錄后修改密碼、做一些配置后就可以開始用了: