[ kvm ] 学习笔记 9:WebVirtMgr 基础及安装使用
目录
- 1. 前言
- 2. webvirtmgr 简介
- 3. webvirtmgr 部署实践
- 3.1 配置 webvirtmgr 主机
- 3.2 kvm node节点配置
- 3.3 控制台和kvm节点交互配置
1. 前言
上一篇:[kvm] Ovirt基础及安装使用 介绍了 ovirt 的安装和基础使用,本篇则介绍更加轻量级的 webvirtmgr,相比较 ovirt,webvirtmgr则显得更加轻量化和简单易用。
ovirt 比较适合较大的集群规模,比如虚拟机上千的集群,而对于虚拟机10-200 之间来说,采用 webvirtmgr 将更加便捷。
2. webvirtmgr 简介
webvirtmgr 特点
操作简单,易于使用
通过libvirt的API接口对kvm进行管理
提供对虚拟机生命周期管理
WebVirtMgr 功能
宿主机管理支持以下功能:
CPU利用率
内存利用率
网络资源池管理
存储资源池管理
虚拟机镜像
虚拟机克隆
快照管理
日志管理
虚机迁移
虚拟机管理支持以下功能:
CPU利用率
内存利用率
光盘管理
关/开/暂停虚拟机
安装虚拟机
VNC console连接
创建快照
3. webvirtmgr 部署实践
我们线上有也有在用 webvirtmgr,这里在测试环境搭建做下记录,环境如下:
首先,selinux 和 防火墙都是关闭状态。
修改主机名:
[root@192.168.118.14 ~]#hostnamectl set-hostname webvirtmgr.super.com
[root@192.168.118.14 ~]#echo -e "192.168.118.14 webvirtmgr.super.com\n192.168.118.15 node1.super.com" >> /etc/hosts [root@192.168.118.15 ~]#hostnamectl set-hostname node1.super.com
[root@192.168.118.15 ~]#echo -e "192.168.118.14 webvirtmgr.super.com\n192.168.118.15 node1.super.com" >> /etc/hosts
关闭 NetworkManager 服务,否则后面通过 virsh 创建网桥设备时,会创建失败。
#systemctl stop NetworkManager ; systemctl disable NetworkManager
3.1 配置 webvirtmgr 主机
启用epel的源,我一般是使用阿里云的centos源及epel源,见`http://mirrors.aliyun.com/help/centos`, `http://mirrors.aliyun.com/help/epel`
#wget -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
首先安装必备的一些包
[root@192.168.118.14 ~]#yum install gcc python-devel openssl-devel -y
[root@192.168.118.14 ~]#yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
配置国内 pip 源,默认国外 pip 太慢了。
[root@192.168.118.14 ~]#mkdir -pv ~/.pip/
mkdir: created directory ‘/root/.pip/’
[root@192.168.118.14 ~]#cat ~/.pip/pip.conf
[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
安装 numpy 模块
[root@192.168.118.14 ~]#pip install numpy
本地是 python 2.7 最新版本的 numpy 不支持,这就需要手动下载安装。
[root@192.168.118.14 ~]#wget https://pypi.tuna.tsinghua.edu.cn/packages/c4/33/8ec8dcdb4ede5d453047bbdbd01916dbaccdb63e98bba60989718f5f0876/numpy-1.16.2-cp27-cp27mu-manylinux1_x86_64.whl#sha256=fb3c83554f39f48f3fa3123b9c24aecf681b1c289f9334f8215c1d3c8e2f6e5b [root@192.168.118.14 ~]#pip install numpy-1.16.2-cp27-cp27mu-manylinux1_x86_64.whl 测试是否安装成功:
[root@192.168.118.14 ~]#python
Python 2.7.5 (default, Jun 20 2019, 20:27:34)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
没有报错,说明安装成功。
下载 webvirtmgr 程序包
[root@192.168.118.14 ~]#git clone git://github.com/retspen/webvirtmgr.git
安装python程序依赖的库文件
[root@192.168.118.14 ~/webvirtmgr]# pip install -r requirements.txt
[root@192.168.118.14 ~/webvirtmgr]#./manage.py syncdb
生成配置文件
创建管理员用户
接下来,将 webvirtmgr 项目整个做成web可以访问的站点
[root@192.168.118.14 ~]#mkdir -pv /var/www
[root@192.168.118.14 ~]#cp -a webvirtmgr/ /var/www/
[root@192.168.118.14 ~]#chown -R nginx:nginx /var/www/
修改nginx 主配置文件:
将默认的 server 段注释掉
[root@192.168.118.14 ~]#vim /etc/nginx/nginx.conf
新增配置文件 webvirtmgr.conf
[root@192.168.118.14 ~]#cat /etc/nginx/conf.d/webvirtmgr.conf
server {
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
}
}
检查语法:
[root@192.168.118.14 ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@192.168.118.14 ~]#nginx
[root@192.168.118.14 ~]#netstat -ntplu | egrep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17710/nginx: master
启动成功,通过 web 尝试访问。
修改配置 supervisor 服务
[root@192.168.118.14 ~]#vim /etc/supervisord.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
logfile=/var/log/supervisor/webvirtmgr.log
log_stderr=true
user=nginx
[program:webvirtmgr-console]
command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx 启动服务
[root@192.168.118.14 ~]#systemctl start supervisord
[root@192.168.118.14 ~]#systemctl status supervisord
● supervisord.service - Process Monitoring and Control Daemon
Loaded: loaded (/usr/lib/systemd/system/supervisord.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2019-08-13 09:51:25 CST; 1s ago
Process: 17741 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS)
Main PID: 17744 (supervisord)
CGroup: /system.slice/supervisord.service
├─17744 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
├─17745 /usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console
├─17746 /usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
├─17755 /usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
├─17756 /usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
├─17757 /usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
├─17758 /usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
├─17759 /usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py
└─17760 /usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py Aug 13 09:51:25 webvirtmgr.super.com systemd[1]: Starting Process Monitoring and Control Daemon...
Aug 13 09:51:25 webvirtmgr.super.com systemd[1]: Started Process Monitoring and Control Daemon.
浏览器尝试访问webvirtmgr 地址:http://192.168.118.14/login/
上面创建的两个用户都可以登录。
登录成功。到此,webvirtmgr控制台安装完毕。
3.2 kvm node节点配置
切换到 node1 节点(192.168.118.15)安装部署
[root@192.168.118.15 ~]#yum install libvirt qemu-kvm virt-viewer -y
这里有一步容易忽视,会造成后面虚拟机无法创建成功,需要注意下。
[root@192.168.118.15 ~]#ln -vs /usr/libexec/qemu-kvm /usr/bin/
‘/usr/bin/qemu-kvm’ -> ‘/usr/libexec/qemu-kvm’
不需要默认nat网络模式,移除
[root@192.168.118.15 ~]#mv /etc/libvirt/qemu/networks/default.xml /tmp/
[root@192.168.118.15 ~]#systemctl start libvirtd
[root@192.168.118.15 ~]#systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-08-13 09:59:25 CST; 1s ago
Docs: man:libvirtd(8)
http://libvirt.org
Main PID: 20741 (libvirtd)
CGroup: /system.slice/libvirtd.service
└─20741 /usr/sbin/libvirtd Aug 13 09:59:25 node1.super.com systemd[1]: Starting Virtualization daemon...
Aug 13 09:59:25 node1.super.com systemd[1]: Started Virtualization daemon.
3.3 控制台和kvm节点交互配置
到此,kvm 主机算配置完成,接下来需要配置控制台到kvm主机交互的环节
webvirtmgr 主机
切换到 nginx 用户,生成密钥对,然后将公钥拷贝到 kvm主机节点,实现免密码登录,因为命令是通过nginx用户发送到kvm主机执行的。
[root@192.168.118.14 ~]#su - nginx -s /bin/bash
-bash-4.2$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair. Enter file in which to save the key (/var/lib/nginx/.ssh/id_rsa): Created directory '/var/lib/nginx/.ssh'.
Your identification has been saved in /var/lib/nginx/.ssh/id_rsa.
Your public key has been saved in /var/lib/nginx/.ssh/id_rsa.pub.
The key fingerprint is:
b4:0d:f6:0e:2d:5e:94:2b:56:97:b4:e0:7b:e3:26:f9 nginx@webvirtmgr.super.com
The key's randomart image is:
+--[ RSA 2048]----+
| . . |
| . + o |
| + = + |
| o O + |
| S B o |
| o * + . |
| . + o |
| + |
| E |
+-----------------+ # 将密钥拷贝到 KVM主机
ssh-copy-id root@192.168.118.15
注意:如果这里是非22端口则采用如下命令:
ssh-copy-id '-p [ssh端口] root@192.168.118.15'
可以在 webvirtmgr 安装 libvirt-client 进行测试:
[root@192.168.118.14 ~]#yum install libvirt-client -y
-bash-4.2$ virsh --connect qemu+ssh://root@192.168.118.15/system list --all
Id Name State
----------------------------------------------------
访问成功,接下来就可以在 web 页面进行操作了。
这里是直接使用 root用户,建议使用普通用户,但是要注意权限,点击添加
点进来如果没有任何报错,那么基本上已经添加主机成功了。
1. 创建网桥
在创建网桥这一步要非常小心,因为稍微不注意网卡起不来就有可能直接无法连接服务器。
关闭 NetworkManager 服务
[root@192.168.118.15 ~]#systemctl stop NetworkManager; systemctl disable NetworkManager
点击创建。
这里发现使用 web 页面创建网桥没有成功。
[root@192.168.118.15 ~]#brctl show
bridge name bridge id STP enabled interfaces
如果没有创建成功,则直接通过命令行创建:
[root@192.168.118.15 ~]#virsh iface-bridge eth0 br0
Created bridge br0 with attached device eth0
Bridge interface br0 started
[root@192.168.118.15 ~]#brctl show
bridge name bridge id STP enabled interfaces
br0 8000.5254006205ad yes eth0
创建成功,切换到web页面刷新
创建的 br0 网桥已经出现。
2. 创建网络池
3. 创建存储池
一般可以创建两个存储池:
(1) 用来存放虚拟磁盘文件(本地)
(2) 用来存放 iso 文件 (nfs)
创建 iso 存储池需要在 webvirtmgr 节点安装 nfs 配置
[root@192.168.118.14 ~]#yum install nfs-utils -y
[root@192.168.118.14 ~]#cat /etc/exports
/iso *(rw,sync)
[root@192.168.118.14 ~]#systemctl start rpcbind
[root@192.168.118.14 ~]#systemctl start nfs
在 kvm 主机上测试
[root@192.168.118.15 ~]#showmount -e 192.168.118.14
Export list for 192.168.118.14:
/iso *
[root@192.168.118.15 ~]#mkdir -pv /iso
mkdir: created directory ‘/iso’
ok,nfs是可以访问到的。切换到 web 界面进行配置
两个存储池创建成功,接下来就可以尝试创建虚拟机了。
4. 创建虚拟机
(1)创建虚拟磁盘文件
(2)创建虚拟机
创建完成后,启动虚拟机
可以直接通过控制台查看虚拟机。虚拟机创建完成。
现在拷贝 Centos 7 镜像到 存储池的 iso 目录下。
[root@192.168.118.14 ~]#scp 192.168.118.8:/usr/local/src/CentOS-7-x86_64-Minimal-1511.iso /iso/
切换到web页面查看存储池。
关闭当前虚拟机,为虚拟机添加 iso CDROM
再次开启虚拟机,就可以为虚拟机安装操作系统了。
完毕。
[ kvm ] 学习笔记 9:WebVirtMgr 基础及安装使用的更多相关文章
- 【Python学习笔记一】基础环境安装:idea+python
IDEA 安装 1.下载IDEA 官网下载地址: https://www.jetbrains.com/idea/ 2.安装的时候配置基本选择默认配置就行 参考链接:https://blog.csd ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE
go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- Typescript 学习笔记一:介绍、安装、编译
前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- InterSystems Ensemble学习笔记(一) Ensemble介绍及安装
系列目录 InterSystems Ensemble学习笔记(一) Ensemble介绍及安装InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移 一 ...
- Flutter学习笔记(1)--环境安装
flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...
随机推荐
- 第12组 Alpha冲刺(1/6)
Header 队名:To Be Done 组长博客 作业博客 团队项目进行情况 燃尽图(组内共享) 展示Git当日代码/文档签入记录(组内共享) 注: 由于GitHub的免费范围内对多人开发存在较多限 ...
- Python socket 通信功能简介
常用的地址家族AF_UNIX:基于文件,实现同一主机不同进程之间的通信AF_INET:基于网络,适用于IPv4AF_INET6:基于网络,使用于IPv6 常见的连接类型SOCK_STREAM:即TCP ...
- FCS省选模拟赛 Day4
传送门 Solution Code /* 斯坦纳树:O(n*3^n+kE*2^n) 暂且把O(k*E)当成是spfa的复杂度 15:15~16:20 原题:bzoj_4774 */ #include ...
- ubuntu之路——day9.3 softmax regression激活函数
Softmax 用于在深度学习中处理多分类(C > 2)问题,分类器最后的输出单元需要Softmax 函数进行数值处理.关于Softmax 函数的定义如下所示: 其中vi表示 vi = z[L] ...
- Assignment4:闰年判断输入异常时的处理方法
一.问题描述 在输入界面输入年份,界面返回是否为闰年. 判断依据为:输入的数字可以被4整除但不可以被100整除 || 输入的数字可以被400整除 如果输入为数字以外的其他字符,会抛出异常.那么如何防止 ...
- python简单图形界面GUI入门——easygui【转】
原文:https://blog.csdn.net/mingqi1996/article/details/81272621 感觉gui做起来成就感比较高,学完基础语言顺便花一个下午看看GUI设计,现在回 ...
- WebSocket——SuperWebSocket实现服务端和客户端
WebSocket——SuperWebSocket实现服务端和客户端具体实现如下: 注:本作者是基于vs2019 enterprise版本,所有项目均为.Net Framwork4.7版本(因为Web ...
- hibernate如何配置自动生成表
hibernate自动生成表有两种方法: 1.直接写代码,通过方法来创建数据库表. 2.通过 hibernate.cfg.xml配置标签来创建数据表. 下面依次实现: 1.直接写代码,通过方法来创建数 ...
- 磁盘性能指标--IOPS与吞吐量
磁盘性能指标--IOPS---------------------------------------------------------- IOPS (Input/Output Per ...
- C语言函数库分类