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