一、介绍
github地址https://github.com/retspen/webvirtmgr
WebVirtMgr是一个基于libvirt的Web界面,用于管理虚拟机。它允许您创建和配置新域,并调整域的资源分配。VNC查看器为来宾域提供完整的图形控制台。KVM是目前唯一支持的虚拟机管理程序。
IP | 安装软件 |
---|---|
192.168.209.133 | KVM、 |
192.168.209.134 | KVM、WebVirtMgr、nginx |
二、查看本机环境
1.查看服务器版本号,建议使用7
cat /etc/redhat-release
2.内核版本
uname -r
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版本
python -V
8、本地解析
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.209.133 abcdocker-node
192.168.209.134 abcdocker-kvm
9、免密
管理端生成
ssh-keygen
设置免密,因为自己也同时提供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
# 启动librirt
systemctl start libvirtd.service
systemctl enable libvirtd.service
四、WebVirtMgr 安装
4.1 安装依赖包
# 管理端安装
yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor gcc python-devel
# 使用pip安装Python扩展程序库
pip install numpy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
4.2 git克隆配置并运行WebVirMgr
# 创建data目录,将WebVirtMgr移动到data目录,同时创建KVM存储目录
mkdir /data/kvm -pv
# 克隆项目
cd /data
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# 说明:requirements.txt主要是用于记录所有依赖包及其精确的版本号。以便新环境部署
# 初始化环境
./manage.py syncdb
## 这里需要我们输入Yes,配置管理员用户
配置信息如下
Would you like to create one now? (yes/no): yes #是否现在创建管理员用户
Username (leave blank to use 'root'): root #用户名称
Email address: #邮箱地址 (可以不填)
Password: #管理员用户密码
Password (again): #重复输入密码
Superuser created successfully. #创建成功
# 配置Django 静态页面
./manage.py collectstatic
输入Yes即可
# 如果还想继续添加管理员用户,可以执行下面的命令
./manage.py createsuperuser
4.3 启动WebVirMgr
前台启动WebVirMgr,默认是Debug模式同时日志打印在前台
./manage.py runserver 0:8000
访问:http://192.168.209.134:8000
4.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.16.1.tar.gz
useradd -s /sbin/nologin nginx -M
tar xf nginx-1.16.1.tar.gz && cd nginx-1.16.1.tar.gz
./configure --prefix=/usr/local/nginx-1.16.1 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /usr/local/nginx-1.16.1 /usr/local/nginx
# 修改配置文件
cd /usr/local/nginx/conf
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
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx
4.5 创建supervisor配置文件
WebVirtMgr默认使用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
# 启动
systemctl start supervisord
systemctl enable supervisord
# 检查
supervisorctl status
# 重启所以(非执行)
supervisorctl restart all
五、Web界面配置webvirtmgr
5.1 添加主机设置虚拟硬盘
1.Add Connection 添加宿主机(即KVM主机)
2.点击SSH连接
3.Label 为主机名,必须为主机名做免密
4.IP 为宿主机IP
5.用户名为服务器用户名
6.点击添加
# 创建镜像目录
mkdir /data/kvm
5.2 上传镜像
创建一个IOS镜像目录
# 下载镜像
wget -P /opt/ https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
- 虚拟机直接导入镜像
[root@kvm ~]# dd if=/dev/cdrom of=/opt/CentOS-7-x86_64-DVD-1810.iso
8962048+0 records in
8962048+0 records out
4588568576 bytes (4.6 GB) copied, 40.6923 s, 113 MB/s
[root@kvm ~]# ll /opt/
total 4481024
-rw-r--r-- 1 root root 4588568576 Jun 29 09:50 CentOS-7-x86_64-DVD-1810.iso
# 刷新页面就可以看到了
- web页面上传报错413
解决:
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
5.3 创建桥接网卡
默认KVM虚拟机的网络为NAT,只可以宿主机访问
温馨提示:以下操作有风险,需要做好网络断开的准备!
1.编辑宿主机网卡
## 注释原来的IP,添加一行BRIDGE=br0
[root@kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
#IPADDR=192.168.209.134
#NETMASK=255.255.255.0
#GATEWAY=192.168.209.254
#DNS1=180.76.76.76
#DNS2=223.5.5.5
BRIDGE=br0
2.添加bro虚拟网卡
## br0网卡除了添加基础信息,还需要将IP和DNS添加上即可
[root@kvm ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=none
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.209.134
NETMASK=255.255.255.0
GATEWAY=192.168.209.254
DNS1=180.76.76.76
DNS2=223.5.5.5
3.重启网卡
systemctl restart network
4.验证
ip a
- 添加桥接网卡
# 说明
如果添加还没开启vSwithch会提示internal error: Unable to add port vnet0 to OVS bridge br0
vSwitch(Virtual Switch)指虚拟交换机或虚拟网络交换机,工作在二层数据网络,通过软件方式实现物理交换机的二层(和部分三层)网络功能。
5.4 创建虚拟机