WebVirtMgr介绍
WebVirtMgr是一个KVM管理平台,让kvm管理变得更为可视化,对中小型kvm应用场景带来了更多方便。WebVirtMgr采用几乎纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常kvm的管理操作变的更加的可视化。
WebVirtMgr 特点
操作简单,易于使用 、通过libvirt的API接口对kvm进行管理、提供对虚拟机生命周期管理
WebVirtMgr 功能
宿主机管理支持以下功能、CPU利用率、内存利用率、网络资源池管理、存储资源池管理、虚拟机镜像、虚拟机克隆、快照管理、日志管理、虚机迁移、虚拟机管理支持以下功能、CPU利用率、内存利用率、光盘管理、关/开/暂停虚拟机、安装虚拟机、VNC console连接、创建快照
##尽量参考官方文档##
官方文档
WebVirtMgr 管理工具安装
本次安装是以centos7.4 为例
一、安装前的部署
安装一些依赖包
yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx gcc python-devel wget vim net-tools lrzsz
1 安装pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip -V #查看pip版本
pip install numpy
2.安装python的需要包和配置Django环境
git clone git://github.com/retspen/webvirtmgr.git
3.安装nginx
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx -y
4.安装supervisor
安装参考
开机自启参考
cat /etc/supervisord.conf
如果没有这个文件按照一下步骤安装
有的话忽略此步骤
pip install supervisor
mkdir /etc/supervisord.d/
echo_supervisord_conf > /etc/supervisord.conf
sudo su - root -c "echo_supervisord_conf > /etc/supervisord.conf"
新建文件夹
vi /etc/supervisord.d/app.conf
配置文件 app.conf
内容为
[program:appname]
command=/root/soft/push.api
directory=/root/soft/push.api
autostart=true
autorestart=true
user=root
stdout_logfile = /var/log/supervisor/pushapi.log
stderr_logfile = /var/log/supervisor/pushapi-error.log
修改 在配置文件最下方修改为
vi /etc/supervisord.conf
[include]
files = /etc/supervisord.d/*.ini
supervisord -c /etc/supervisord.conf
/usr/bin/supervisorctl start all
/usr/bin/supervisorctl stop all
二、安装环境
cd webvirtmgr
pip install -r requirements.txt
# or python-pip (RedHat, Fedora, CentOS, OpenSuse)
./manage.py syncdb
1.创建用户
输入以下用户信息
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): admin
Email address: 275301281@qq.com
Password: admin
Password (again):admin
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 6 object(s) from 1 fixture(s)
./manage.py collectstatic
2.配置一个超级用户
./manage.py createsuperuser
WARNING:root:No local_settings file found.
Username (leave blank to use 'root'): yes
Email address: 275301281@qq.com
Password: Lenovo@123
Password (again): Lenovo@123
Superuser created successfully.
3.设置nginx
a、使用:8000端口
(1)移动这个webvirtmgr目录到/var/www下
cd ..
mv webvirtmgr /var/www/
webvirtmgr 目录下还有一个名称为webvirtmgr 的文件夹
不要单独移动 webvirtmgr/webvirtmgr 文件
(2)编辑配置文件
vi /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
}
}
(3)启动nginx并设置开机自启动(如果不设置开机自启动,重启服务器supervisor无法管理Django进程),并开机自启动supervisord
/etc/init.d/nginx start
或者
systemctl restart nginx
systemctl enable supervisord
分配权限
chown nginx.nginx /var/www/webvirtmgr
4.设置supervisor
在/etc/supervisord.conf末尾加入下面的配置:
vi /etc/supervisord.conf
[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
进程无法启动或者报错 可以选择吧 log 注释取消
5、重启supervisord
开机自启参考
设置完之后重启即可
systemctl restart supervisord.service
systemctl enable supervisord.service
systemctl status supervisord.service
6.更新
cd /var/www/webvirtmgr
git pull
./manage.py collectstatic
systemctl restart supervisord
创建用户
python -V
Python 2.6.6
由此可看出,系统默认的Python版本是2.6.6
说明上面命令默认是python2.6执行的
既然使用python2.6执行上面的命令报错,那就换用其他版本python2执行(如果当前是python3.3.0,那么就将下面的/usr/bin/python2换成/usr/bin/python2.6)
/usr/bin/python2 manage.py syncdb //最终发现使用python2执行这个命令就不报错了
###########################################################################
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): admin
Email address:
Password:
Password (again):
###########################################################################
/usr/bin/python2 manage.py collectstatic //生成配置文件(同样使用python2版本执行,不要使用默认的python执行)
###########################################################################
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
..........
###########################################################################
/usr/bin/python2 manage.py createsuperuser //添加管理员账号(同样使用python2版本执行,不要使用默认的python执行)
WARNING:root:No local_settings file found.
Username: ops //这个是管理员账号,用上面的admin和这个管理员账号都可以登陆webvirtmgr的web界面管理平台
Email address:
Password:
Password (again):
Superuser created successfully.
7、如果有错误或不运行
(仅用于调试面板或显影)
./manage.py runserver 0:8000
#或者后台运行脚本
nohup python /var/www/webvirtmgr/manage.py runserver 0:8000 >/dev/null &
nohup python /var/www/console/webvirtmgr-console >/dev/null &
访问:http://x.x.x.x:8000(x.x.x.x - your server IP address ),输入创建的用户和密码,如果没有创建,请用python manager.py createsuperuser,命令创建。登录后如下图所示
8、配置虚拟机所在宿主机
webvirtmgr客户端就这样搭建完了,接下来需要配置虚拟机所在宿主机的,参考git地址.
配置宿主机
配置宿主机环境:
system: centos 7.4
1.下载并执行脚本
libvirt-bootstrap.sh
如果虚拟机比较多,该脚本执行时间会比较长,因为会执行service libvirt-guests restart,会将所有运行的虚拟机挂起然后再恢复,感觉这一步不是必须的,因为我有一台只设置ssh认证,也可以正常连接。
curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh
或者用wget
wget -O - http://retspen.github.io/libvirt-bootstrap.sh | sudo sh
9、.配置防火墙
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT
设置TCP授权
webvirtmgr新建服务器连接时需要此账号
(1)用saslpasswd2命令给libvirt的用户lenovo设置密码
saslpasswd2 -a libvirt lenovo
Password: xuewenlong
Again (for verification): xuewenlong
(2)生成一个密码库
sasldblistusers2 -f /etc/libvirt/passwd.db
lenovo@webvirtmgr.net: userPassword
设置ssh授权
ssh-keygen -t rsa //产生公私钥
直接回车,回车,回车
ssh-copy-id 192.168.1.120
/由于这里webvirtmgr和kvm服务部署在同一台机器,所以这里本地信任。如果kvm部署在其他机器,那么这个是其他它的ip 同时也要设置ssh key密钥
提示输入密码的时候直接输入之前1.120的密码
ssh 192.168.1.120 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080
/*--原配置内容--------------/
ssh-copy-id 1.1.1.1 ssh 1.1.1.1 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080
/*--原配置内容--------------/
其他kvm 主机加入已经部署的kvm web 操作
之前的web管理
在部署web管理的主机上执行命令
ssh-keygen -t rsa
然后在执行
ssh-copy-id 192.168.1.165
添加新的kvm宿主机
查看新加的kvm宿主机状态 看有无报错
删除新加的账号:
sudo saslpasswd2 -a libvirt -d lenovo
10.确认验证新加的账号配置
virsh -c qemu+tcp://IP_address/system nodeinfo
(virsh -c qemu+tcp://192.168.1.50/system nodeinfo)
Please enter your authentication name: lenovo
Please enter your password: xxxxxx
CPU model: x86_64
CPU(s): 2
CPU frequency: 2611 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 2019260 kB
注意:账号全名带hostname,如lenovo@webvirtmgr.NET
测试的时候这一步测试没有成功 但是可以链接
11.设置ssh认证
ssh和tcp设置一种即可,其实就是设置无密码登录,要注意的是从webvirtmgr的什么用户到宿主机的什么用户的无密码登录,比如我用root跑的django webvirtmgr,而宿主机也是root跑的virsh,所以需要设置root到root的无密码登录。而git官网推荐的是用nginx用户跑django webvirtmgr,webvirtmgr用户跑的virsh,所以设置的是nginx用户到宿主机webvirtmgr用户的无密码登录。
12.使用tcp认证连接服务器
访问:http://192.168.1.120:8000,xxxx是webvirtmgr的ip地址,点击new connection
13.填写kvm宿主机的一些信息
基础架构可以看到一些vm虚拟机
网页控制台 远程链接报错1006
安装vnc即可
yum install -y novnc
网页控制台 远程链接报错505
切换到
运行
cd /var/www/console/
./webvirtmgr-console &
后台运行脚本
nohup python /var/www/webvirtmgr/manage.py runserver 0:8000 >/dev/null &
nohup python /var/www/console/webvirtmgr-console >/dev/null &