CloudStack 4.1.0安裝詳解 - 2、KVM
KVM(kernel-based Virtual Machine)是一個開源的系統虛擬化平台,自Linux 2.6.20之後已集成到Linux內核中,因它使用Linux自身的調度器進行管理,所以相對於的虛擬化解決方案而言,其核心源碼很少也更加的穩定。
CloudStack支持與多種虛擬化解決方案的集成。
CloudStack+KVM是最佳的黃金組合!他們都功能強大且免費,你可以毫無顧忌地隨意部署安裝而不必害怕有人找你要授權費。KVM一直以來沒有好的免費的集群管理工具,現在加上CloudStack後,如虎添翼,比起VCenter、XenCenter這類強力商業軟件來講也毫不遜色。
今天我們來主要介紹CloudStack受控端為KVM節點時的安裝方法。鑒於網上文章一大抄,很多內容都是裝來裝去一大堆東西,看觀們一會就暈了,根本不了解為什麼裝這些程序,裝來是干什麼的。這回呢,我會把每一步說明盡可能詳細一些,外加我多次重裝後得到的經驗和教訓,希望能讓後來者可以少走些彎路。
一、環境檢測
KVM虛擬化需要硬件的支持,因此首先需要檢查下你的服務器是否可以支持它,如果這步都過不去的話,那麼下面的內容就不必再看了。
檢查方法:
1
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
如果執行後能顯示出東西,那麼恭喜你,可以跟我繼續啦。Let’s go!
二、安裝KVM相關組件
CentOS直接提供KVM程序源,直接安裝就是了。
1
yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt vconfig
得益於Linux內核的支持,KVM相關包都不大,這步應該可以很快完成。
裝好後為保證管理節點可以正常調用,還需要開放相關端口。
vi /etc/libvirt/libvirtd.conf 去掉如下內容的注釋:
1
listen_tls = 0
2
listen_tcp = 1
3
tcp_port = "16509"
4
auth_tcp = "none"
5
mdns_adv = 0
vi /etc/sysconfig/libvirtd
1
LIBVIRTD_ARGS="--listen"
vi /etc/libvirt/qemu.conf
1
vnc_listen = 0.0.0.0
現在,可以啟動虛擬機服務啦:
1
service libvirtd restart
測試一下是否成功:
1
lsmod | grep kvm
三、安裝NTP時間同步
管理節點會通過各種協議與受控節點通訊,為了確保安全,受控節點接到命令後會進行一系列的校驗,如果兩機的時間不同步的話,會導致命令拒絕執行。因此,最簡單的辦法就是所有的機器都安裝 NTP服務,自動完成時間同步。
當然,如果你可以保證兩機時間相差不大的情況下,此步可以忽略。
安裝方法
1
yum install ntp
四、設置主機名稱
CloudStack管理節點添加主機時要獲取受控端本機名稱,如無法正確獲取會導致無法正常添加主機,Agent啟動時也會報一大堆的錯。
運行以下命令檢查:
1
hostname --fqdn
如無正常返回,請編輯 /etc/hosts 文件,添加主機ip對應的名稱。如:
192.168.19.160 kvm1.cloudstack.com
vi /etc/sysconfig/network 將 HOSTNAME= 改為同你剛設置的一樣。
編輯完後立即生效。如果還不成的話,重啟下服務器應該就會好了。
注意:在CloudStack中添加受控機時,會自動將名稱代入。因此千萬別偷懶,一定要為每台機器設置不同的名稱,否則你將會在管理後台面對一堆同名主機列表而感到無奈~~~
五、配置yum倉庫
默認情況下,CentOS的軟件源中沒有收錄最新版本CloudStack,為了能順利安裝,我們需要手工指定軟件源。
新建 /etc/yum.repos.d/cloudstack.repo 文件,內容為:
1
[cloudstack]
2
name=cloudstack
3
baseurl=http://cloudstack.apt-get.eu/rhel/4.1/
4
enabled=1
5
gpgcheck=0
六、安裝agent
KVM不像XenServer、VCenter等已經內置了強大的管理功能,因此必須安裝一個CloudStack代理來完成主控端發來的指令。
直接通過倉庫安裝:
1
yum install cloud-agent
這個安裝包比較大,如果你的網絡是小水管的話,那麼你現在可以去泡杯茶、抽根煙休息一下啦。
注意:安裝完 cloud-agent 後無需啟動,等管理節點中添加主機時會自動啟動。
默認的安裝目錄:/etc/cloudstack/agent
CloudStack是通過log4j來輸出日志的,因此你可以通過修改 log4j-cloud.xml 文件來調整日志的輸出結構。
七、修改安全策略
默認的SELinux安全策略會限制CloudStack操作,因此需要調整:
vi /etc/selinux/config
1
SELINUX=permissive
以上修改需重啟服務器才能生效,為使設置立即生效可使用下邊的命令
1
setenforce permissive
另需要在 iptables 中把一些端口打開:
1
iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
2
iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT
3
iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT
4
iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT
5
iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT
6
7
iptables-save > /etc/sysconfig/iptables
八、添加主機
好了,到目前為止,你的准備工作已經完成了。
如果創建的是簡單網絡域的話,你現在就可以在管理節點的WEBUI中順利添加這台受控主機啦。這步的操作方法非常簡單,CloudStack中有一個非常友好的向導,應該可以幫助你正確完成添加。另外,網上也有一大堆的文章介紹,我就不詳細說了,等將來有機會時我再給大家介紹下CloudStack高級網絡域的相關功能及添加方法。
附,可能遇到的問題:
1、在管理節點中添加主機失敗
如果很不幸,添加主機時失敗,請不要慌張,這個問題應該不難解決,先看下日志。
管理節點日志在
/var/log/cloudstack/management/catalina.out
受控節點日志在:
/var/log/cloudstack/agent/cloudstack-agent.out
認真反復分析日志,你會找到答案,然後水平提到升華~~~
2、Unable to start agent: Failed to get private nic name
如果你是初學,在設置網絡時千萬別亂選。尤其是別隨便指定流量標簽。
在CloudStack中,流量標簽是同受控主機的網橋相關的,如果設置了流量標簽,則受控機必須設置相應的網橋。cloudstack4.1的agent在啟動時,默認會自動創建cloudbr0和cloudbr1兩個網橋。如果你指定了其他的標簽名,則相應的網橋也要作修改,甚至需要在受控機上手工創建網橋。
如果想修改成其他網橋名字,那麼需要在配置文件裡面指定:
vi /etc/cloudstack/agent/agent.properties
修改下面兩個參數
1
private.network.device
2
public.network.devic
如果網橋指定錯誤的話,那麼就會出現上面的錯誤。
真正明白了這個道理,那麼你就可以進階啦,你將能夠實現不同的網卡使用不同的網絡。
3、Failed to create vnet
如果你再嘗試創建高級網絡,出現的如上的錯誤,那是因為你沒有安裝vconfig程序。
1
yum install vconfig