kvm快速上手(ubuntu+kvm+webvirtmgr)
Posted MyThk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kvm快速上手(ubuntu+kvm+webvirtmgr)相关的知识,希望对你有一定的参考价值。
通常服务器在安装操作系统的时候,管理员会选择最小化安装,在没有GUi环境下,不方便使用virtmanager的时候,可以为服务器安装网页版虚拟机管理后台WebVirtmgr来进行KVM资源和虚拟机管理。
需要注意的是虚拟机服务和virt-manager(或webvirtmgr)服务是互相独立的,完全可以管理端安装在一台服务器,虚拟机服务安装在另一台服务器上,所以即使删除了webvirtmgr所有相关内容,相关的所有kvm资源、配置并不会受到影响,虚拟机仍然由libvirtd服务正常运行。
1. 环境准备
1.1 宿主机:Ubuntu 18.04
1.2 安装包:
apt install qemu qemu-kvm libvirt-bin bridge-utils \
git python-pip python-libvirt python-libxml2 \
novnc nginx supervisor
1.3 IP设置 :编辑/etc/netplan/50-cloud-init.yaml,并用netplan apply命令应用修改。
network:
version: 2
ethernets:
ens33:
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [ens33]
dhcp4: no
addresses: [192.168.0.11/24]
gateway4: 192.168.0.1
nameservers:
[192.168.0.1] :
1.4 启动服务:如果使用virt-manager,在启用libvirtd服务后,就已经可以正常工作了
systemctl enable libvirtd && systemctl start libvirtd
2. 安装WEB控制台 - webvirtmgr
2.1 下载git项目,安装依赖
cd /var/www
git clone git://github.com/retspen/webvirtmgr.git
cd webvirtmgr
# 安装依赖时,如果安装requirements.txt中的软件遇到下载
# 困难时,可以指定服务器镜像进行安装
pip install django==1.5.5 -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install -r requirements.txt
# 安装数据库,并收集静态文件
syncdb
collectstatic
chown -R www-data /var/www
2.2 生成SSHKEY(用于web服务连接到虚拟机服务)
su -s /bin/bash www-data
ssh-keygen
ssh-copy-id root@localhost
ssh root@localhost
# 连接一次接受指纹,或者在sshd配置中关闭StrictHostKeyChecking
2.3 设置supervisor,保持服务激活
# 配置文件/etc/supervisor/conf.d/webvirtmgr.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
stdout_logfile=/var/log/supervisor/webvirtmgr.log
redirect_stderr=true
user=www-data
[program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console -d
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=www-data
2.4 nginx vhost配置
server {
listen 80;
server_name _;
access_log /var/log/nginx/webvirtmgr_access.log;
error_log /var/log/nginx/webvirtmgr_error.log;
location /static/ {
root /var/www/webvirtmgr/webvirtmgr;
expires max;
}
location / {
proxy_pass http://127.0.0.1:8080;
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 100M;
# 使用网页上传较在文件(比中操作系统镜像)时,
# 需将体积限制和超时时间限制都调大,
# 具体数值取决于上传文件大小和网络情况。
}
}
2.5 启动服务
systemctl enable nginx supservisor
systemctl start nginx supervisor
3. 常用管理
3.1 添加服务器:登录nginx发布的站点,点击Add connection即可。
3.2 管理存储池:
3.2.1 建议为虚拟机硬盘镜像、ISO镜像分别建立dir类型存储池(等效于virsh pool-create-as --name vmdir_pool --type dir --target /data/vm_pool);
3.2.2 存储池准备好后,可以向ISO存储池上传系统镜像,同时也需要为新建的虚拟机创建硬盘镜像(需要为虚拟机添加几块磁盘,就创建几个硬盘镜像)。
3.3 管理网络:分别创建Bridge网络(桥接到本机物理网络)、NAT网络(通过对虚拟机流量进行NAT转发实现联网),ISOLATE网络(隔离在KVM服务器内部的虚拟网络)。
3.4 创建虚拟机:
* webvirtmgr有一个很大的缺陷,只提供对虚拟机极为有限的修改,无法对已存在的虚拟进行设备増删和调整,而且创建的时候不能为同一个network添加多块网卡。如果碰到这种需求,只能在虚拟机停机时,进入实例的settings界面,对定义XML直接修改,或者用virsh命令进行修改
4. 关于配置
4.1 外网环境使用时,需要对外映射一个和控制台服务相同的端口,比如webvirtmgr-console使用TCP6000作为服务端口,则在外网映射TCP6000到服务器的TCP6000。
4.2 /var/www/webvirtmgr/webvirtmgr/settings.py中,可以修改服务端口、域名、证书。
WS_PORT = 6000
WS_HOST = '0.0.0.0'
WS_PUBLIC_HOST = "vm.mykvm.com"
WS_CERT = "/etc/nginx/keys/fullchain.pem"
WS_KEY = "/etc/nginx/keys/private.key"
4.3 如果 web服务的端口与服务器上已有服务产生冲突,可以到配置文件/var/www/webvirtmgr/conf/gunicorn.conf.py 中调整配置项"bind"。
以上是关于kvm快速上手(ubuntu+kvm+webvirtmgr)的主要内容,如果未能解决你的问题,请参考以下文章