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