KVM WEB管理工具 WebVirtMgr

WebVirtMgr是一个基于libvirt的Web界面,用于管理虚拟机。它允许您创建和配置新域,并调整域的资源分配。VNC查看器为来宾域提供完整的图形控制台。KVM是目前唯一支持的虚拟机管理程序。

KVM WEB管理工具 WebVirtMgr

KVM

2019年04月28日


xiaoguo.jpeg-98.7kB

一、webvirtmgr介绍及环境说明

温馨提示:安装KVM是需要2台都操作的,因为我们是打算将2台都设置为宿主机所有都需要安装KVM相关组件

github地址https://github.com/retspen/webvirtmgr

WebVirtMgr是一个基于libvirt的Web界面,用于管理虚拟机。它允许您创建和配置新域,并调整域的资源分配。VNC查看器为来宾域提供完整的图形控制台。KVM是目前唯一支持的虚拟机管理程序。

ip地址 主机名 备注 10.4.82.221 abcdocker-kvm web界面、KVM 10.4.82.220 abcdocker-node KVM 镜像位置/opt/ WebVirtMgr存储目录/data/WebVirtMgr KVM虚拟机安装目录/data/kvm/ 需要在2台服务器上配置host,密钥分发也是基于hostname KVM安装这里不再介绍,请查看

Centos7 图形化创建KVM

云计算与虚拟化工具之KVM

查看本机环境

1.查看服务器版本号,建议使用7
[root@abcdocker-kvm ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

2.内核版本
[root@abcdocker-kvm ~]# uname -r
3.10.0-327.el7.x86_64

3.关闭Selinux & 防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

4.设置Yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache

5.查看是否支持虚拟化
cat /proc/cpuinfo | grep -E 'vmx|svm'

6.查看KVM 驱动是否加载
lsmod | grep kvm
如果没有加载kvm驱动,利用命令加载驱动
modprobe -a kvm
modprobe -a kvm_intel

7.本次Python版本
[root@abcdocker-kvm ~]# python -V
Python 2.7.5

现在需要还需要配置Host

2台需要相互做host,同时管理端需要将公钥发送给宿主机,需要基于host进行免密

[root@abcdocker-kvm ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.4.82.220 abcdocker-node
10.4.82.221 abcdocker-kvm

KVM管理端生成公钥
[root@abcdocker-kvm ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
47:15:be:f2:dd:9f:4f:7d:81:5f:55:88:a0:7e:50:cd root@abcdocker-kvm
The key's randomart image is:
+--[ RSA 2048]----+
|          o+oo ..|
|         o oE . .|
|        o . .   .|
|       . o   .. .|
|        S + .. ..|
|         o o ...+|
|            . ..=|
|               .+|
|               .+|
+-----------------+

设置免密,因为自己也同时提供KVM虚拟机,所以也需要配置免密
ssh-copy-id -i .ssh/id_rsa.pub root@abcdocker-kvm
ssh-copy-id -i .ssh/id_rsa.pub root@abcdocker-node

二、安装KVM

2.1 安装KVM依赖包及管理工具

kvm属于内核态,不需要安装。但是需要一些管理工具包

yum install -y qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager python-virtinst libvirt-client virt-viewer qemu-kvm-tool
libvirt 用来管理kvm

yum install -y virt-install
 安装管理KVM命令

启动librirt

systemctl start libvirtd.service
systemctl enable libvirtd.service

三、WebVirtMgr 安装

现在我们要在ip为10.4.82.221上安装控制端,宿主机不需要安装

WebVirtMgr GitHub官方WIKI

3.1 安装依赖包

安装pip、git及supervisor && Nginx

WebVirtMgr只在管理端安装
yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor gcc python-devel

这里稍微说一下,Nginx可以采取源码安装,我使用源码安装演示。不使用Nginx不影响

使用pip安装Python扩展程序库

[root@abcdocker-kvm ~]# pip install numpy
Collecting numpy
  Downloading https://files.pythonhosted.org/packages/e1/72/179a78b565ecf01fe98dab6417581d30acac15c2d93c49f93169ebea99b1/numpy-1.16.3-cp27-cp27mu-manylinux1_x86_64.whl (17.0MB)
    100% |████████████████████████████████| 17.0MB 73kB/s 
Installing collected packages: numpy
Successfully installed numpy-1.16.3
You are using pip version 8.1.2, however version 19.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

提示可以忽略

3.2 git克隆配置并运行WebVirMgr

创建data目录,将WebVirtMgr移动到data目录,同时创建KVM存储目录

[root@abcdocker-kvm ~]# mkdir /data/kvm -pv
mkdir: created directory ‘/data’
mkdir: created directory ‘/data/kvm’

克隆项目
cd /data
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
pip install -r requirements.txt
requirements.txt主要是用于记录所有依赖包及其精确的版本号。以便新环境部署

初始化环境
[root@abcdocker-kvm webvirtmgr]# ./manage.py syncdb
WARNING:root:No local_settings file found.
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table servers_compute
Creating table instance_instance
Creating table create_flavor

You just installed Django's auth system, which means you don't have any superusers defined.
这里需要我们输入Yes,配置管理员用户

配置信息如下

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'): root              #用户名称
Email address: cyh@i4t.com                              #邮箱地址 (可以不填)
Password:                                               #管理员用户密码
Password (again):                                       #重复输入密码
Superuser created successfully.                         #创建成功
Installing custom SQL ...
Installing indexes ...
Installed 6 object(s) from 1 fixture(s)

配置Django 静态页面

./manage.py collectstatic 
输入Yes即可

如果还想继续添加管理员用户,可以执行下面的命令

./manage.py createsuperuser

以上执行Python脚本必须在webvirtmgr目录

3.3 启动WebVirMgr

前台启动WebVirMgr,默认是Debug模式同时日志打印在前台

[root@abcdocker-kvm webvirtmgr]# ./manage.py runserver 0:8000
WARNING:root:No local_settings file found.
WARNING:root:No local_settings file found.
Validating models...

0 errors found
April 26, 2019 - 05:20:08
Django version 1.5.5, using settings 'webvirtmgr.settings'
Development server is running at http://0:8000/
Quit the server with CONTROL-C.

IP+8000端口访问

image_1d9b5coou6htcj2uak9vk11pm.png-39.7kB

用户名和密码是我们刚刚创建的

登录成功,没有报错。我们现在Ctrl+C退出,安装Nginx使用supervisor进行管理。如果不想使用supervisor和安装Nginx下面3.43.5步骤可以跳过

image_1d9b5e6qhfaa5c0152ag14142313.png-40.5kB

3.4 安装Nginx

1.安装依赖
yum install -y gcc glibc gcc-c++ prce-devel openssl-devel pcre-devel

2.安装编译Nginx
cd /root/
wget http://nginx.org/download/nginx-1.10.3.tar.gz
yum install -y gcc glibc gcc-c++ prce-devel openssl-devel pcre-devel
useradd -s /sbin/nologin nginx -M 
tar xf nginx-1.10.3.tar.gz && cd nginx-1.10.3
./configure --prefix=/usr/local/nginx-1.10.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install

ln -s /usr/local/nginx-1.10.3 /usr/local/nginx

更多Nginx文章参考

修改配置文件

cd /usr/local/nginx/conf
cp nginx.conf{,.bak} && >nginx.conf
#修改Nginx配置文件
$ vim nginx.conf

worker_processes  1;
user nginx;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;


    server {
        listen       80;
        server_name  kvm.i4t.com;


        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 $remote_addr;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        client_max_body_size 5120M;
          }
    location /static/ {
        root /data/webvirtmgr;
        expires max;
      }
    }

}

启动Nginx

[root@abcdocker-kvm conf]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx-1.10.3/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1.10.3/conf/nginx.conf test is successful
[root@abcdocker-kvm conf]# /usr/local/nginx/sbin/nginx 

3.5 创建supervisor配置文件

我们supervisorctl所有的操作都需要在/data/webvirtmgr/下,否则提示找不到文件

WebVirtMgr默认使用supervisor进行管理(启动停止服务)所以我们需要配置supervisor

cat > /etc/supervisord.d/webvirtmgr.ini << EOF
[program:webvirtmgr]
command=/usr/bin/python /data/webvirtmgr/manage.py run_gunicorn -c /data/webvirtmgr/conf/gunicorn.conf.py
directory=/data/webvirtmgr
autostart=true
autorestart=true
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=root

[program:webvirtmgr-console]
command=/usr/bin/python /data/webvirtmgr/console/webvirtmgr-console
directory=/data/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=root
EOF

启动supervisor

service supervisord stop
service supervisord start

查看是否启动成功

[root@abcdocker-kvm conf]# supervisorctl status
webvirtmgr                       RUNNING   pid 18246, uptime 0:00:05
webvirtmgr-console               RUNNING   pid 18245, uptime 0:00:05

RUNNING状态为服务正常
supervisorctl restart all 重启所有(这里不执行)

浏览器访问ip+80端口或者通过域名访问

image_1d9b6ocblvbeec1p2t1p1l1rmf1g.png-65.4kB

域名如果是虚拟机需要修改host文件

  • Windows 修改路径 C:\Windows\System32\drivers\etc #编辑hosts文件
  • Mac 修改路径 /etc/hosts

我这里演示一下mac

image_1d9c23pva1hj6qi7ion1aov5fq9.png-67.4kB

Nginx里面定义的域名是kvm.i4t.com这里我们就是使用这个域名访问

image_1d9c262snukp1a8m4ssgsc16fqm.png-43.7kB

这里要说一下,IP和域名都是可以的。用户密码是我们刚刚创建的,如果忘记了可以使用下面的命令从新创建一个管理员用户

./manage.py createsuperuser

四、Web界面配置webvirtmgr

4.1 添加主机设置存储

1.Add Connection 添加宿主机(即KVM主机)

2.点击SSH连接

3.Label 为主机名,必须为主机名做免密

4.IP 为宿主机IP

5.用户名为服务器用户名

6.点击添加

image_1d9b6u2f9q7hq9o18nfud4iab1t.png-48.8kB

添加完后点击主机名激活

image_1d9b74dn6i271bfk1k971voa1ki32a.png-24kB

创建存储KVM镜像目录

KVM中的虚拟机都是以镜像的方式进行存储

image_1d9b777v914dvmih7771bgqecd2n.png-29.4kB

服务器创建KVM镜像目录

mkdir -p /data/kvm

名称: 这里的名称显示的名称

路径: 即存储KVM虚拟机路径

image_1d9b7mhgf1pop12m3cau44h1kf24b.png-42.6kB

创建完毕,现在需要创建镜像(相当于虚拟硬盘大小)

image_1d9b7p3o513a51gaudte1v3485n4o.png-49kB

创建40G镜像

下面“Metadata”前的小方框一定不能勾选(默认是勾选的,要去掉!)

这里添加的“镜像”就是所创建虚拟机的硬盘空间(我测试环境给了150G)

虚拟机所占用的空间就是这个“镜像”所在的宿主机下路径所在的分区空间(也就是/home/kvm/kvmstorage/,即宿主机的home分区)

image_1d9c7v3vd11921gb125snfrj5f5j.png-84kB

创建完毕

image_1d9b9mknj4h9cnk18enoj5m2qar.png-50.8kB

4.2 上传镜像

创建完虚拟硬盘,我们在创建一个IOS镜像目录

点击>存储池>NEW_Stored

image_1d9b9okjc1b3hc8jtsq1l0po0jb8.png-31.6kB

image_1d9b9prk71ehk1404sqv1umu1pcebl.png-39kB

点击上传镜像

image_1d9b9stcr1l2e1p6l4irijtd63c2.png-50.6kB

选中镜像选择上传

image_1d9ba4ff21ta4v56dmdmf1ng5cf.png-58.3kB

除了在浏览器上传,还可以直接下载阿里云镜像站镜像。只要镜像在/opt下就会被获取

wget -P /opt/ https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

我们使用的是虚拟机,这里我就安装用虚拟机的光盘镜像进行导入镜像

首先需要右击虚拟机挂载

VMware15虚拟机下载

image_1d9b2lf6t1skpngsmm6fno1ts99.png-77.1kB

挂在完成后复制镜像

[root@abcdocker-kvm ~]# dd if=/dev/cdrom of=/opt/CentOS-7.2.iso

#我们创建完镜像存储目录,在/opt下的镜像都会在web页面显示。没有显示刷新一下或者重启

[root@abcdocker-kvm ~]# ll /opt/
total 4228096
-rw-r--r-- 1 root root 4329570304 Apr 25 21:40 CentOS-7.2.iso

这里说一下,如果使用Web界面上传镜像nginx出现413的情况请修改client_max_body_size参数

image_1d9ba995c18ktajslg4nul1ictcs.png-53.3kB

[root@abcdocker-kvm opt]# grep -rn "client_max_body_size" /usr/local/nginx/conf/nginx.conf
30:     client_max_body_size 5120M; 

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

修改完毕后,重新上传即可

1.jpg-44.8kB

4.3 创建桥接网卡

默认KVM虚拟机的网络为NAT,只可以宿主机访问。宿主机之外就无法访问,不满足我们的业务要求,所以我们

创建桥接网卡

1.编辑宿主机网卡
[root@abcdocker-kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
UUID=286d3fd9-f01e-459c-bd68-ae98c096c8fa
DEVICE=eth0
ONBOOT=yes
#IPADDR=10.4.82.221
#GATEWAY=10.4.82.1
#NETMASK=255.255.255.0
#DNS1=10.4.82.1
#DNS2=223.5.5.5
BRIDGE=br0

## 注释原来的IP,添加一行BRIDGE=br0

2.添加bro虚拟网卡
[root@abcdocker-kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE=br0
BOOTPROTO=none
ONBOOT=yes
TYPE=Bridge
IPADDR=10.4.82.221
GATEWAY=10.4.82.1
NETMASK=255.255.255.0
DNS1=10.4.82.1
DNS2=223.5.5.5

#br0网卡除了添加基础信息,还需要将IP和DNS添加上即可

3.restart network

/etc/init.d/network restart

4.验证,可以看到已经有5:br0网卡
[root@abcdocker-kvm network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
    link/ether 00:0c:29:ba:3a:83 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:f2:41:f9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:f2:41:f9 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 00:0c:29:ba:3a:83 brd ff:ff:ff:ff:ff:ff
    inet 10.4.82.221/24 brd 10.2.52.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::84e7:9ff:fe17:fbd1/64 scope link
       valid_lft forever preferred_lft forever

温馨提示:以上操作有风险,需要做好网络断开的准备!

添加桥接网卡,这里说明一下。不要开启Open vSwitch

如果添加还没开启vSwithch会提示internal error: Unable to add port vnet0 to OVS bridge br0

image_1d9fmubvheti14lh1h77d0b15759.png-68.5kB

网络类型选择BRIDGE

桥接名称和显示名称都修改为br0

这里科普一下 vSwitch(Virtual Switch)指虚拟交换机或虚拟网络交换机,工作在二层数据网络,通过软件方式实现物理交换机的二层(和部分三层)网络功能。

添加完成后的状态

image_1d9b92fje53a1q6oq6rc1813n80.png-39.6kB

配置完成后需要我们在网络池里面禁用Default,因为默认走的是Default。不禁用会出现问题

目前Default网卡处于禁用状态

123.png-137.6kB

image_1d9c4s8lp1g7m1e5d1nbb1npm1qgt3f.png-56.8kB

Bridge添加完成后,刷新页面会显示 interface,如果不显示,重启 libvirtd 和 supervisord

查看Interfaces

当我们设置完桥接网卡,Interfaces会自动更新最新网卡

默认是eth0

image_1d9c32pjqtdkhhh1brf5bf1fvl13.png-61.3kB

修改后为br0桥接网卡

image_1d9b95e2c1r0u7dg8kl1q4utul8q.png-32.7kB

点进去我们可以看到现在的网卡提供的设备是eth0

image_1d9b96j8514re1ccbt297hl1nph97.png-38.7kB

4.4 创建虚拟机

image_1d9b9buho17kk8791dv1eovaak9k.png-26.8kB

这里我们选择创建自定义虚拟机

image_1d9b9cap51des1as1rv416p7ss9a1.png-54.9kB

设置名称、cpu、硬盘(都是中文我就不翻译了)

image_1d9c5g1vqn1m1pn5d1hm821m9n56.png-113.8kB

点击设置,点Media 选择连接

image_1d9bas0nb4js62p1kaj1s691r31f5.png-46.4kB

image_1d9batfeh2481rpe18k91l8o14rlfi.png-46.4kB

我们点击开机

image_1d9bau8451gobcdrhv16bu1j76fv.png-41.6kB

查看控制台的2种方法

image_1d9bb4eo412bt10dv7v5tgolomgp.png-47.1kB

321.png-101.7kB

配置eth0为网卡

键盘移动到Install Centos 7,按tab 输入net.ifnames=0 biosdevname=0

如果不执行还有第二种方法修改网卡 Centos7 修改网卡为eth0

322.png-187.3kB

接下来就是配置KVM,后面就不详细说了

image_1d9caqdh5v7r18tv1vn1vh8qqf9.png-268.5kB

如果我们之前的服务器安装过KVM,这里我们直接添加即可

KVM图形化安装虚拟机

KVM安装

最后我们可以一下添加完后的结构

1111111.png-100.8kB

2222222.png-272.4kB

我们可以查看一下快照,会自动将KVM快照打印出来

创建快照不支持中文,中文会提示内部500

image_1d9fq2hif5i515h7uqg1dfr8uu.png-110.7kB

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论
网站搭建
加入我们
  • 站长QQ:381493251一键联系
  • abcdocker 微信公众号
    abcdocker QQ群