• -

      作者:SRE运维博客

      博客地址: https://www.cnsre.cn/

      文章地址:https://www.cnsre.cn/posts/211117937177/

      相干话题:https://www.cnsre.cn/tags/kvm/

    • -
      WebVirtMgr是近两年来倒退较快,比拟沉闷,十分清爽的一个KVM治理平台,提供对宿主机和虚机的对立治理,它有别于kvm自带的图形管理工具(virtual machine manager),让kvm治理变得更为可视化,对中小型kvm利用场景带来了更多不便。

WebVirtMgr介绍

WebVirtMgr采纳简直纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常kvm的治理操作变的更加的可视化。

  • WebVirtMgr 特点

操作简略,易于应用 、通过libvirt的API接口对kvm进行治理、提供对虚拟机生命周期治理

  • WebVirtMgr 性能

宿主机治理反对以下性能、CPU利用率、内存利用率、网络资源池治理、存储资源池治理、虚拟机镜像、虚拟机克隆、快照治理、日志治理、虚机迁徙、虚拟机治理反对以下性能、CPU利用率、内存利用率、光盘治理、关/开/暂停虚拟机、装置虚拟机、VNC console连贯、创立快照

官网文档

https://github.com/retspen/we...

装置前的部署

装置一些依赖包

yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx gcc python-devel wget vim net-tools lrzsz 

装置pip

wget https://bootstrap.pypa.io/get-pip.py python get-pip.py pip -V 

pip install numpy

装置python的须要包和配置Django环境

git clone git://github.com/retspen/webvirtmgr.git

装置nginx

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install nginx -y

装置supervisor

装置参考

https://www.2cto.com/kf/20171...

开机自启参考

https://blog.csdn.net/binggoo...

cat  /etc/supervisord.conf

{{< alert theme="warning" dir="ltr" >}}
⚠️ 留神

如果没有这个文件依照一下步骤装置

有的话疏忽此步骤
{{< /alert >}}

pip install supervisormkdir /etc/supervisord.d/echo_supervisord_conf > /etc/supervisord.conf

新建文件夹

vim /etc/supervisord.d/app.conf

配置文件 app.conf

内容为

[program:appname]command=/root/soft/push.apidirectory=/root/soft/push.apiautostart=trueautorestart=trueuser=rootstdout_logfile = /var/log/supervisor/pushapi.logstderr_logfile = /var/log/supervisor/pushapi-error.log

批改 在配置文件最下方批改为

vim  /etc/supervisord.conf[include]files = /etc/supervisord.d/*.ini

supervisord -c /etc/supervisord.conf/usr/bin/supervisorctl start all/usr/bin/supervisorctl stop all

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4855142804875926"

 crossorigin="anonymous"></script>

<ins class="adsbygoogle"

 style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-4855142804875926" data-ad-slot="5670838583"></ins>

<script>

 (adsbygoogle = window.adsbygoogle || []).push({});

</script>

装置环境

cd webvirtmgr pip install -r requirements.txt 

./manage.py syncdb

创立用户

输出以下用户信息

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): yesUsername (leave blank to use 'root'): adminEmail address: 275301281@qq.comPassword: adminPassword (again):admin Superuser created successfully.Installing custom SQL ...Installing indexes ...Installed 6 object(s) from 1 fixture(s)./manage.py collectstatic

配置一个超级用户

./manage.py createsuperuser

WARNING:root:No local_settings file found.Username (leave blank to use 'root'): yesEmail address: 275301281@qq.comPassword: Lenovo@123Password (again): Lenovo@123Superuser created successfully.

设置nginx

a、应用:8000端口

挪动这个 webvirtmgr 目录到 /var/www

cd  ..mv webvirtmgr /var/www/

{{< alert theme="warning" dir="ltr" >}}
⚠️ 留神:
webvirtmgr 目录下还有一个名称为webvirtmgr 的文件夹
不要独自挪动 webvirtmgr/webvirtmgr 文件
{{< /alert >}}

编辑配置文件

vim /etc/nginx/conf.d/webvirtmgr.confserver {    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     }}

启动nginx并设置开机自启动

(如果不设置开机自启动,重启服务器supervisor无奈治理Django过程),并开机自启动supervisord

/etc/init.d/nginx start

或者

systemctl restart   nginx systemctl enable supervisord 

调配权限

chown nginx.nginx /var/www/webvirtmgr

设置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.pydirectory=/var/www/webvirtmgrautostart=trueautorestart=truelogfile=/var/log/supervisor/webvirtmgr.loglog_stderr=trueuser=nginx[program:webvirtmgr-console]command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-consoledirectory=/var/www/webvirtmgrautostart=trueautorestart=true#stdout_logfile=/var/log/supervisor/webvirtmgr-console.logredirect_stderr=trueuser=nginx    

{{< alert theme="warning" dir="ltr" >}}
⚠️ 留神

过程无奈启动或者报错 能够抉择吧 log 正文勾销
{{< /alert >}}

重启supervisord

开机自启参考

https://blog.csdn.net/binggoo...

设置完之后重启即可

systemctl restart  supervisord.servicesystemctl enable  supervisord.servicesystemctl status   supervisord.service 

更新

cd /var/www/webvirtmgr git pull

./manage.py collectstatic

systemctl  restart supervisord

如果有谬误或不运行

 ./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,命令创立。登录后如下图所示

配置虚拟机所在宿主机

webvirtmgr客户端就这样搭建完了,接下来须要配置虚拟机所在宿主机的,参考git地址.

配置宿主机

下载并执行脚本

如果虚拟机比拟多,该脚本执行工夫会比拟长,因为会执行 service libvirt-guests restart,会将所有运行的虚拟机挂起而后再复原,感觉这一步不是必须的,因为我有一台只设置ssh认证,也能够失常连贯。

curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh

如果没有curl就用wget

wget -O - http://retspen.github.io/libvirt-bootstrap.sh | sudo sh

配置防火墙

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT

设置TCP受权

参考:https://github.com/retspen/webvirtmgr/wiki/Setup-TCP-authorization

webvirtmgr新建服务器连贯时须要此账号

用saslpasswd2命令给libvirt的用户cnsre设置明码

saslpasswd2 -a libvirt cnsrePassword: cnsreAgain (for verification): cnsre

生成一个明码库

sasldblistusers2 -f /etc/libvirt/passwd.db cnsre@webvirtmgr.cn: userPassword

设置ssh受权

ssh-keygen -t rsa       # 产生公私钥

间接回车,回车,回车

ssh-copy-id 192.168.1.120  

{{< alert theme="warning" dir="ltr" >}}
⚠️ 留神

因为这里webvirtmgr和kvm服务部署在同一台机器,所以这里本地信赖。

如果kvm部署在其余机器,那么这个是其余它的ip 同时也要设置ssh key密钥
{{< /alert >}}

提醒输出明码的时候间接输出之前1.120的明码

ssh 192.168.1.120 -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080

web 平台退出其余kvm宿主机

在部署web治理的主机上执行命令

ssh-keygen -t rsa

而后在执行

ssh-copy-id 192.168.1.165

增加新的kvm宿主机

查看新加的kvm宿主机状态 看有无报错

删除新加的账号

sudo saslpasswd2 -a libvirt -d cnsre

确认验证新加的账号配置

virsh -c qemu+tcp://IP_address/system nodeinfo(virsh -c qemu+tcp://192.168.1.50/system nodeinfo)Please enter your authentication name: cnsrePlease enter your password: xxxxxxCPU model:           x86_64CPU(s):              2CPU frequency:       2611 MHzCPU socket(s):       1Core(s) per socket:  2Thread(s) per core:  1NUMA cell(s):        1Memory size:         2019260 kB

{{< alert theme="warning" dir="ltr" >}}
⚠️ 留神

账号全名带hostname,如 cnsre@webvirtmgr.cn

测试的时候这一步测试没有胜利 然而能够链接
{{< /alert >}}

设置ssh认证

{{< notice warning "留神" >}}
ssh和tcp设置一种即可,其实就是设置无明码登录,要留神的是从webvirtmgr的什么用户到宿主机的什么用户的无明码登录,比方我用root跑的django webvirtmgr,而宿主机也是root跑的virsh,所以须要设置root到root的无明码登录。而git官网举荐的是用nginx用户跑django webvirtmgr,webvirtmgr用户跑的virsh,所以设置的是nginx用户到宿主机webvirtmgr用户的无明码登录。
{{< /notice >}}

参考:https://github.com/retspen/webvirtmgr/wiki/Setup-SSH-Authorizatio

应用tcp认证连贯服务器

拜访:http://192.168.1.120:8000,xxxx是webvirtmgr的ip地址,点击new connection

填写kvm宿主机的一些信息

基础架构能够看到一些vm虚拟机

KVM WEB治理常见报错

网页控制台 近程链接报错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 &
    • -

      作者:SRE运维博客

      博客地址: https://www.cnsre.cn/

      文章地址:https://www.cnsre.cn/posts/211117937177/

      相干话题:https://www.cnsre.cn/tags/kvm/

    • -