分类: 电脑技术
作者: admin

kvm的虚拟化管理方案-Archipel

1. Archipel介绍

  • 一个开源的虚拟化管理方案
  • 基于libvirt,可以方便的将virt-manager/virsh/virt-install等方式创建的虚拟机导入进来
  • 使用XMPP协议(Extensible Messaging and Presence Protocol)通信,成熟的通信协议,Gtalk就是用XMPP.
  • XMPP从某种程度来说相当于消息队列
  • XMPP Server使用ejabberd,一个流行的支持高并发的XMPP Server,同时又有扩容和集群设计
  • 因为XMPP的特性,Archipel号称实时管理
  • 同样也是XMPP的优势,可选其它客户端,只要支持XMPP即可.
  • 这意味着,手机上也可以管理虚拟机了!
  • 支持多帐号和权限配置
  • 支持实时迁移
  • VMCasts功能可以很方便的制作和分发虚拟机模板
  • UI用户界面是测试使用过的开源虚拟化管理平台中(CloudStack/oVirt/OpenQRM/Ganeti Web Manager/proxmox/OpenStack/)**最易用**的

2. 概念

Host = 安装kvm,直接运行在硬件上的操作系统

Guest = 跑在Host中的虚拟机

XMPP = 可扩展消息协议

3. 预览

http://wiki.muxueqztools.googlecode.com/hg/t2t/img/archipel.png

4. 需要安装的软件

  • qemu-kvm 0.12以上版本,编译时开启spice选项
  • spice-client,客户端连接需要,服务器可以不装
  • libvirt,安装于每台KVM主机,提供虚拟化管理的API
  • archipel-agent,安装于每台KVM主机,调用libvirt来管理虚拟机,由Archipel的Web GUI来调用。

5. 安装

5.1. KVM主机

#!highlight bash
yum install libvirt libvirt-python python-setuptools python-devel numpy
easy_install archipel-agent

5.2. XMPP Server

5.2.1. bin方式

#去 http://www.process-one.net/en/ejabberd/downloads 下载对应的安装包,文件名类似 ejabberd-2.1.10-linux-x86_64-installer.bin
chmod +x ejabberd-2.1.10-linux-x86_64-installer.bin
./ejabberd-2.1.10-linux-x86_64-installer.bin
#然后一路回车
#您接受这个软件授权协议吗? [y/n]: y
#安装目录 [/opt/ejabberd-2.1.10]:
#ejabberd服务器域名  [localhost]: your.fqdn.com
#管理员用户名  [admin]:
#管理员密码  :123456
#重新输入密码  :123456
#集群 [y/N]:
#您确定要继续? [Y/n]:
#OK
useradd ejabberd
chown -R ejabberd /opt/ejabberd-2.1.10

5.2.2. (可选)Yum/rpm方式

#!highlight bash
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-5.noarch.rpm
#rpm -ivh 'ftp://ftp.muug.mb.ca/mirror/centos/6.2/os/x86_64/Packages/libntlm-1.0-3.el6.x86_64.rpm'
#yum install ejabberd

5.2.3. 配置XMPP Server

5.2.3.1. 使用打包好的配置
#!highlight bash
wget https://wiki.muxueqztools.googlecode.com/hg/ejabberd.cfg -O /opt/ejabberd-2.1.10/conf/ejabberd.cfg
sed -i 's/xmpp.example.com/your.FQDN.com/g' /opt/ejabberd-2.1.10/conf/ejabberd.cfg'
#启动服务
/opt/ejabberd-2.1.10/bin/ejabberd.init  start
5.2.3.2. (可选)手动配置
#修改DNS解析,在DNS Server或/etc/hosts中添加下面一行
X.X.X.X    your.fqdn.com #X.X.X.X为XMPP Server的IP,your.fqdn.com是你XMPP的域名
#剩余的按照 https://github.com/primalmotion/Archipel/wiki/Ejabberd%3A-Configuration 中的配置
5.2.3.3. 参考配置

[[/ejabberd.cfg]]

6. 将KVM主机添加到Archipel管理中

6.1. 添加第一个Archipel-agent

#!highlight bash
#初始化生成Archipel-agent配置文件
archipel-initinstall -x your.FQDN.com
#初始化XMPP Server上的数据
archipel-tagnode --jid=admin@FQDN --password=YOURPASSWORD --create
archipel-rolesnode --jid=admin@FQDN --password=YOURPASSWORD --create
archipel-adminaccounts --jid=admin@FQDN --password=YOURPASSWORD --create
archipel-vmparkingnode --jid=admin@FQDN --password=YOURPASSWORD --create
[OPTIONAL] archipel-vmrequestnode --jid=admin@FQDN --password=YOURPASSWORD --create

#启动libvirtd
/etc/init.d/libvirtd start

#将Archipel-agent添加到XMPP Server中
archipel-vmparkingnode --jid=admin@FQDN --password=YOURPASSWORD -a hypervisor_jid@FQDN
/etc/init.d/archipel start

以后的Archipel-agent不需要执行上面的命令,执行下面的即可

#!highlight bash
archipel-initinstall -x your.FQDN.com
archipel-vmparkingnode --jid=admin@FQDN --password=YOURPASSWORD -a hypervisor_jid@FQDN
/etc/init.d/libvirtd start
/etc/init.d/archipel start

7. 注意事项

7.1. 修改libvirt连接数限制

默认情况下,libvirt中限制最多只有20个客户端连接 当虚拟机数量接近的时候,可能会出现这样的错误报告 :

error: Failed to reconnect to the hypervisor
error: no valid connection
error: Cannot recv data: Connection reset by peer

可以加大:

echo 'max_clients = 200' >> /etc/libvirt/libvirtd.conf

7.2. 修改libvirt spice侦听地址

默认情况下,libvirt中的spice侦听的是127.0.0.1,我们需要改为0.0.0.0

sed -i 's/# spice_listen = "0.0.0.0"/spice_listen = "0.0.0.0"/g' /etc/libvirt/qemu.conf

即可