1. 前言

​ 当Kvm宿主机越来越多,需要对宿主机的状态进行调控,决定采用WebVirtMgr作为Kvm虚拟化的web管理工具,图形化的WEB,让人能更方便的查看Kvm宿主机的情况和操作。

​ WebVirtMgr是近两年来发展较快,比较活跃,非常清新的一个Kvm管理平台,提供对宿主机和虚机的统一管理,它有别于Kvm自带的图形管理工具(virtual machine manager),让Kvm管理变得更为可视化,对中小型Kvm应用场景带来了更多方便。

​ WebVirtMgr采用几乎纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常Kvm的管理操作变的更加的可视化。

 

2. 特点

  • 操作简单,易于使用
  • 通过 libvirt 的API接口对Kvm进行管理
  • 提供对虚拟机生命周期管理

 

3. 功能

  • 宿主机管理支持以下功能
CPU利用率
内存利用率
网络资源池管理
存储资源池管理
虚拟机镜像
虚拟机克隆
快照管理
日志管理
虚机迁移
  • 虚拟机管理支持以下功能
CPU利用率
内存利用率
光盘管理
关/开/暂停虚拟机
安装虚拟机
VNC console连接
创建快照

 

4. 安装部署

WebVirtMgr官网: https://github.com/retspen/webvirtmgr/wiki/Install-WebVirtMgr

注意

WebVirtMgr只提供对Kvm的管理功能,所以需要提前安装部署好KVM虚拟化的环境,才能保证可以正常使用WebVirtMgr这款工具。

4.1 安装WebVirtMgr相关依赖

首先要安装Kvm虚拟化环境,这里我将WebVirtMgr服务器和Kvm服务器放在同一台机器上部署的,即单机部署。

4.1.1 安装epel源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

4.1.2 安装依赖及环境

yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx

4.1.3 安装编译软件

yum -y install gcc python-devel

4.1.4 安装numpy

numpy 是 Python 进行科学计算的基础软件包。

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

#安装可能报错,执行以下命令升级pip后,进行下载安装
python -m pip install --upgrade --force pip

4.2 安装Python需求

4.2.1 下载WebVirtMgr

[root@kvm-server-01 ~]# git clone git://github.com/retspen/webvirtmgr.git

4.2.2 安装 WebVirtMgr 的python依赖

[root@kvm-server-01 ~]# cd webvirtmgr/
[root@kvm-server-01 webvirtmgr]# pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

4.2.3 检查 sqlite3

自带不需要安装,导入模块检查一下。

[root@kvm-server-01 webvirtmgr]# python
Python 2.7.5 (default, Apr 2 2020, 13:16:51)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlite3
>>> exit()

4.2.4 初始化账号

#给脚本添加执行权限
[root@kvm-server-01 webvirtmgr]# chmod +x manage.py

#执行脚本
[root@kvm-server-01 webvirtmgr]# ./manage.py syncdb

4.2.5 生成配置文件

[root@kvm-server-01 webvirtmgr]# ./manage.py collectstatic

4.2.6 添加其他超级用户

#这个是管理员账号,用上面的admin和这个账号都可以登录
[root@kvm-server-01 webvirtmgr]# ./manage.py createsuperuser

4.3 配置Nginx

警告:通常,WebVirtMgr仅可从端口8000上的本地主机访问。通过配置nginx使用反向代理,可以使用80端口直接访问,这样访问不怎么安全。

设置加密连接的方式,使用8000端口访问。

[root@kvm-server-01 ~]# ssh 10.0.0.11 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080

4.3.1 修改Nginx配置文件

  • 配置WebVirtMgr的Nginx配置文件
[root@kvm-server-01 webvirtmgr]# 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 ~ .*\.(js|css)$ {
proxy_pass http://127.0.0.1:8000;
}

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
}
}
  • 修改/etc/nginx/nginx.conf文件,注释server部分
  • 重启nginx服务,设置开机自启动
[root@kvm-server-01 ~]# systemctl restart nginx.service
[root@kvm-server-01 ~]# systemctl enable nginx.service

4.3.2 移动 webvirtmgr 软件包目录

[root@kvm-server-01 ~]# mkdir /var/www
[root@kvm-server-01 ~]# mv webvirtmgr /var/www/
[root@kvm-server-01 ~]# chown -R nginx:nginx /var/www/webvirtmgr/

4.4 配置 supervisord

4.4.1 添加webvirtmgr.ini文件

  • 创建 /etc/supervisord.d/webvirtmgr.ini 文件
[root@kvm-server-01 ~]# cat /etc/supervisord.d/webvirtmgr.ini
[program:webvirtmgr]
command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx

[program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx
  • 启动守护进程supervisord
[root@kvm-server-01 ~]# systemctl  start supervisord.service 
[root@kvm-server-01 ~]# systemctl enable supervisord.service

4.4.2 检查服务端口

[root@kvm-server-01 ~]# netstat -tln | grep -E '6080|8000' 
tcp 0 0 127.0.0.1:6080 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
tcp6 0 0 ::1:6080 :::* LISTEN
tcp6 0 0 ::1:8000 :::* LISTEN

4.5 使用浏览器访问

浏览器输入网址:http://10.0.0.11

只有超级管理员登陆后才能看到“基础构架”窗口

4.6 远程连接设置

使用tcp进行对远程libvirtd进行连接访问的配置

4.6.1 修改文件 libvirtd,用来启用tcp的端口

[root@kvm-server-01 ~]# grep -Ev "^$|#" /etc/sysconfig/libvirtd
LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf
LIBVIRTD_ARGS="--listen"

4.6.2 修改文件/etc/libvirt/libvirtd.conf

[root@kvm-server-01 ~]# grep -Ev "^$|#" /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"

4.6.3 重启libvirtd

[root@kvm-server-01 ~]# systemctl restart libvirtd.service

4.6.4 查看端口16509是否启动

[root@kvm-server-01 ~]# netstat -tln | grep 16509
tcp 0 0 0.0.0.0:16509 0.0.0.0:* LISTEN

4.6.5 在source host连接dest host远程libvirtd查看信息

[root@kvm-server-01 ~]# virsh -c qemu+tcp://10.0.0.11/system
Welcome to virsh, the virtualization interactive terminal.

Type: 'help' for help with commands
'quit' to quit

virsh #

4.6.6 WEB端进行TCP连接

4.6.7 添加多台进行管理

4.7 更新控制台显示

解决控制台连接失败的问题,如下图:

4.7.1 同步 webvirtmgr 的源码

在webvirtmgr目录下进行 git pull 拉取最新源码,同步当前目录。

[root@kvm-server-01 ~]#  cd /var/www/webvirtmgr
[root@kvm-server-01 webvirtmgr]# git pull
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 9 (delta 3), reused 3 (delta 3), pack-reused 6
Unpacking objects: 100% (9/9), done.
From git://github.com/retspen/webvirtmgr
79c8a8b..86bb20f master -> origin/master
Updating 79c8a8b..86bb20f
Fast-forward
.travis.yml | 3 +--
README.rst | 4 ----
requirements.txt | 2 +-
3 files changed, 2 insertions(+), 7 deletions(-)

4.7.2 生成配置文件

[root@kvm-server-01 webvirtmgr]# ./manage.py collectstatic
WARNING:root:No local_settings file found.

You have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes

0 static files copied, 75 unmodified.

4.7.3 重启 supervisord 服务

[root@kvm-server-01 webvirtmgr]# systemctl restart supervisord.service

再次使用控制台:

kvm_webvirtmgr-10.png

 

5. 界面基础操作

5.1 创建存储池

点击前面创建的宿主机,进入虚拟机部署界面

点击“存储池”按钮,创建存储池(即创建磁盘镜像存放的位置)

注意

创建存储池时,首先要在宿主机上创建一个目录,然后在”路径“设置栏中添加该目录。

把提前下载好的centos镜像拷贝到上面创建的存储池目录下;这里可以放不同版本的系统镜像(windows也可以),以便在下面安装过程中选择不同镜像安装系统

5.2 添加磁盘镜像

5.3 宿主机网卡的桥接模式设置

注意

下面的“设备”一项要填写桥接的物理网卡(即br0对应的那个网卡,这里填的是宿主机之前的网卡eth0) 网关地址也一定要填写正确,不然虚拟机和宿主机同网段机器则会网络不通。(如下这一步其实就是创建桥接的网卡配置,也可以在服务器上执行命令virsh iface-bridge eth0 br0创建)

5.4 创建网络池

5.5 创建虚拟主机实例

注意

这里的镜像需要手动上传到服务器的存储目录下。

5.6 删除虚拟主机实例

5.7 克隆虚拟及实例操作

进入虚机配置界面,在克隆配置项,为新的虚机的“名字”,“MAC地址”,“磁盘镜像”进行设置

登录之后修改IP地址即可