debian8+kvm+webvirtmgr 部署

RT 基本上难度也不是太大,不过webvirtmgr比较烦……真的……(估计我姿势不对
一、装环境(包括kvm nginx 以及webvirtmgr需要的py相关的组件)(参考资料1、2)

apt-get install qemu-kvm bridge-utils virt-manager virt-viewer git python-pip python-libvirt python-libxml2 novnc supervisor nginx sasl2-bin
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
pip install -r requirements.txt # or python-pip (RedHat, Fedora, CentOS, OpenSuse)
./manage.py syncdb
./manage.py collectstatic

会让你设置一个webvirtmgr的管理员账号,输入用户名和密码设置即可
以后还需要添加的话用这个命令:

./manage.py createsuperuser

最后

mv webvirtmgr/ /var/www/

把文件夹挪到www下面(或者你喜欢的路径)
装完后先丢那边 网卡先不动,先配置nginx和webvirtmgr
二、配置nginx
(这里说明一下 我的版本是nginx1.8.0 不同版本的nginx略有不同,1.8.0的话也可以用于tengine)
其实也就是conf和站点设置,conf的设置可以参考我另外一篇博文:
tengine+php5+dz论坛部署
站点的设置我们参考官方的wiki:(参考资料2)

vim /etc/nginx/conf.d/webvirtmgr.conf

复制粘贴吧:

server {
listen 80 default_server;
server_name $hostname;
#access_log /var/log/nginx/webvirtmgr_access_log;
location /static/ {
root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var
expires max;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
client_max_body_size 1024M; # Set higher depending on your needs
}
}

保存然后重启一下
这样配置上后测试一下 至少主页还有登陆的功能应该已经可以访问了
三、配置webvirtmgr和kvm之间的通信
这一步很恶心。。。因为:
1、我当时的环境是localhost里面装kvm和webvirtmgr,然后本想用local socks的方式 但是却死活不通,后面只好放弃转而用tcp连接的方式,tcp连接方式适合于1台控制机器访问多台kvm机器,如果kvm和webvirtmgr在同一台机器,而且机器又要放到公网的话请务必注意安全(可以通过iptables或者上层的网络设备上对访问进行限制)
2、配置完了后发现无法连接,ss -nat观察发现端口没起来。。。喵喵喵?
3、配置tcp通信的账号密码的时候密码不能粘贴。。。只能手打。。。特神奇。。。
总之开始吧
按照官方文档 我们配置一下tcp通信用的账号密码(参考资料2)

saslpasswd2 -a libvirt <用户名>

提示让你输入密码:

Password: xxxxxx
Again (for verification): xxxxxx

然后检查一下

sasldblistusers2 -f /etc/libvirt/passwd.db

应该会有如下提示信息:

<用户名>@webvirtmgr.net: userPassword

顺便说一下,删除账号的命令是

saslpasswd2 -a libvirt -d <用户名>

设置好账号密码后 测试一下通信

virsh -c qemu+tcp://<目标主机>/system nodeinfo
Please enter your authentication name: <用户名>
Please enter your password: xxxxxx

正确的话就会显示目标物理机器的硬件信息
如果提示:

error: unable to connect to server at 'host:16509': Connection refused
error: failed to connect to the hypervisor

说明你也踩到我这一章节开头写的第二个坑了。。。解决方案如下(参考资料3)

sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
sed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf
sed -i 's/#auth_tcp = "sasl"/auth_tcp = "none"/g' /etc/libvirt/libvirtd.conf
vim /etc/default/libvirtd
找到#libvirt_opts = ""
修改为:libvirt_opts = "-d -l"

增加-l监听tcp
然后 service libvirtd restart 之后…… 卧槽?服务为什么起不来?
总之这个服务再也没起来过。但是问题却解决了(端口开始监听中)。。。这一点不明所以。。。但是的确可用。。。如果有知道原因的人还请指教一番
最后,访问webvirtmgr,配置一下tcp连接

Label 设置个名称
第二个地方输入服务器地址,我是本机就直接输入localhost了
用户名和密码 写这一章节开头我们设置的用户名和密码,点击添加 正常的话就会出现图片里左侧那个绿色的框框
然后点名字 进入管理页面
三、配置网桥(参考资料4)
当然你是nat模式那我就不说啥了。。。不过我们应该都用网桥模式吧。。。
虽然用brctl会很简单,但是如果机器需要重启的话 你除非设置了开机自动设置 否则会很蛋疼,所以我们直接vim一下interfaces写死在里面好了,我们也默认走eth0

vim /etc/network/interfaces
auto br0
iface br0 inet static
address <本机ip>
netmask <掩码>
gateway <网关>
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0

:wq保存一下
然后service networking restart 理论上就生效了(有时候则是两个一起生效?好像是的。。。总之重启一下也是可以的……重启大法好~)
之后我们到webvirtmgr,配置一下网络

大概是这个样子,桥接名称要和interfaces里面的一致(一般也都会写br0的吧……)
创建后就完成了
四、开一个虚拟机 并装好系统
webvirtmgr使用了存储池的概念,需要先设置一下磁盘文件、iso文件都在哪里


非常简单易懂了。。。
创建好后,把iso文件丢到那个设置的路径里即可
然后我们开始开虚拟机

里面自带了一些预设 并支持自定义配置(New Flavor)、导入XML(From XML)等
创建好后在这里挂载已经上传好的iso(这里的截图是开机状态,默认创建好是关机的,我只是随手找了一台虚拟机截图而已~)

在Access里面 可以设置控制台的方式(vnc或spice),还可设置控制台密码,以及启用控制台也在里面
一切就绪后 Power里开机即可,然后开控制台安装系统~不喜欢网页vnc的话也可以用自己的vnc,也是支持的=w=
这个控制台的优点在于http,比V*ware家的那个flash控制台不知道高到哪里去了~
而且支持一个控制台控制多个主机,功能也很强大,也可以针对已经配置好的机器再进行配置修改,甚至是直接编辑xml等,还有一些很细节的地方,比如可以单独设定一个网卡开机启动,或者单独设定一台机器是否开机就启动这样的
参考资料:
1、webvirtmgr安装:https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr
2、webvirtmgr-tcp方式连接配置:https://github.com/retspen/webvirtmgr/wiki/Setup-TCP-Authorization
3、Linux下开启Libvirtd的tcp监控:http://yansu.org/2013/03/25/open-tcp-port-of-libvirt.html
4、如何在 Ubuntu 上搭建网桥:https://linux.cn/article-7605-1.html