WebVirtMgr是一个基于libvirt的Web界面,用于管理虚拟机。它允许您创建和配置新域,并调整域的资源分配。VNC查看器为来宾域提供完整的图形控制台。KVM是目前唯一支持的虚拟机管理程序。
KVM WEB管理工具 WebVirtMgr
KVM
2019年04月28日
一、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端口访问
用户名和密码是我们刚刚创建的
登录成功,没有报错。我们现在Ctrl+C退出,安装Nginx使用supervisor进行管理。如果不想使用supervisor和安装Nginx下面3.4和3.5步骤可以跳过
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端口或者通过域名访问
域名如果是虚拟机需要修改host文件
我这里演示一下mac
Nginx里面定义的域名是kvm.i4t.com这里我们就是使用这个域名访问
这里要说一下,IP和域名都是可以的。用户密码是我们刚刚创建的,如果忘记了可以使用下面的命令从新创建一个管理员用户
./manage.py createsuperuser
四、Web界面配置webvirtmgr
4.1 添加主机设置存储
1.Add Connection 添加宿主机(即KVM主机)
2.点击SSH连接
3.Label 为主机名,必须为主机名做免密
4.IP 为宿主机IP
5.用户名为服务器用户名
6.点击添加
添加完后点击主机名激活
创建存储KVM镜像目录
KVM中的虚拟机都是以镜像的方式进行存储
服务器创建KVM镜像目录
mkdir -p /data/kvm
名称: 这里的名称显示的名称
路径: 即存储KVM虚拟机路径
创建完毕,现在需要创建镜像(相当于虚拟硬盘大小)
创建40G镜像
下面“Metadata”前的小方框一定不能勾选(默认是勾选的,要去掉!)
这里添加的“镜像”就是所创建虚拟机的硬盘空间(我测试环境给了150G)
虚拟机所占用的空间就是这个“镜像”所在的宿主机下路径所在的分区空间(也就是/home/kvm/kvmstorage/,即宿主机的home分区)
创建完毕
4.2 上传镜像
创建完虚拟硬盘,我们在创建一个IOS镜像目录
点击>存储池>NEW_Stored
点击上传镜像
选中镜像选择上传
除了在浏览器上传,还可以直接下载阿里云镜像站镜像。只要镜像在/opt下就会被获取
wget -P /opt/ https://mirrors.aliyun.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
我们使用的是虚拟机,这里我就安装用虚拟机的光盘镜像进行导入镜像
首先需要右击虚拟机挂载
VMware15虚拟机下载
挂在完成后复制镜像
[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参数
[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
修改完毕后,重新上传即可
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: 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: 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: 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: 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: 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
网络类型选择BRIDGE
桥接名称和显示名称都修改为br0
这里科普一下 vSwitch(Virtual Switch)指虚拟交换机或虚拟网络交换机,工作在二层数据网络,通过软件方式实现物理交换机的二层(和部分三层)网络功能。
添加完成后的状态
配置完成后需要我们在网络池里面禁用Default,因为默认走的是Default。不禁用会出现问题
目前Default网卡处于禁用状态
Bridge添加完成后,刷新页面会显示 interface,如果不显示,重启 libvirtd 和 supervisord
查看Interfaces
当我们设置完桥接网卡,Interfaces会自动更新最新网卡
默认是eth0
修改后为br0桥接网卡
点进去我们可以看到现在的网卡提供的设备是eth0
4.4 创建虚拟机
这里我们选择创建自定义虚拟机
设置名称、cpu、硬盘(都是中文我就不翻译了)
点击设置,点Media 选择连接
我们点击开机
查看控制台的2种方法
配置eth0为网卡
键盘移动到Install Centos 7,按tab 输入net.ifnames=0 biosdevname=0
如果不执行还有第二种方法修改网卡 Centos7 修改网卡为eth0
接下来就是配置KVM,后面就不详细说了
如果我们之前的服务器安装过KVM,这里我们直接添加即可
KVM图形化安装虚拟机
KVM安装
最后我们可以一下添加完后的结构
我们可以查看一下快照,会自动将KVM快照打印出来
创建快照不支持中文,中文会提示内部500
相关文章:
- KVM 安装
- Xtrabackup安装以及应用
- Kubernetes 1.14 二进制集群安装
- Kuerbernetes 1.11 集群二进制安装