主流服务器虚拟化技术简单使用——KVM(二)

时间:2021-04-24 18:06:40

KVM管理

通过Linux工具管理

主流服务器虚拟化技术简单使用——KVM(一)部署了一台KVM,提到KVM可以通过命令行工具(virt-install、virsh)和GUI工具(virt-manager)管理虚拟机。实际上virt-install、virsh、virt-manager只是管理工具,如果部署多台KVM,并不需要每一台都安装这些管理工具,因为它们也可以管理其它KVM。甚至于这些管理工具也不一定需要安装在某一台KVM上,可以安装在任意一台Linux中。

Tips:virt-install、virsh、virt-manager不单能够管理kvm,还能管理Xen和其它支持libvirt的hypervisor。这里使用主流服务器虚拟化技术简单使用——KVM(一)中第二种方式部署了两台KVM,演示在其中一台KVM的virt-manager上管理另一台KVM。

特别注意:这些KVM管理工具依赖libvirtd进程,但从CentOS7.4默认源(Base)安装的libvirt无法正常运行,推测是默认源中的libvirt版本较高,而操作系统的环境较旧,尝试使用CentOS7.4镜像搭建的源,能够正常使用。

若在已安装的操作系统(且安装时环境未选择这些虚拟化工具)的CentOS中部署这些工具仍然需要使用镜像源:

[root@localhost ~]# yum -y install virt-install libvirt-python virt-manager virt-install libvirt-client

主流服务器虚拟化技术简单使用——KVM(二)

输入你要管理的物理机IP

主流服务器虚拟化技术简单使用——KVM(二)

如果你的环境和我主流服务器虚拟化技术简单使用——KVM(一)相同,应该会遇到这个问题。

主流服务器虚拟化技术简单使用——KVM(二)

提示需要安装openssh-askpass或者相似的软件,一般通过yum安装该软件即可。

Tips:openssh-askpass包含用于OpenSSH的X11密码对话框,这里它需要和virt-manager安装在一台服务器上。

1.可以先通过 yum info openssh-askpass.x86_64 查看这个包的描述信息。

[root@localhost ~]# yum info openssh-askpass.x86_64
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.lzu.edu.cn
* extras: mirrors.nwsuaf.edu.cn
* updates: mirrors.nju.edu.cn
已安装的软件包
名称 :openssh-askpass
架构 :x86_64
版本 :7.4p1
发布 :16.el7
大小 :16 k
源 :installed
来自源:base
简介 : A passphrase dialog for OpenSSH and X
网址 :http://www.openssh.com/portable.html
协议 : BSD
描述 : OpenSSH is a free version of SSH (Secure SHell), a program for
: logging into and executing commands on a remote machine. This package
: contains an X11 passphrase dialog for OpenSSH.

2.yum安装

[root@localhost ~]# yum -y install openssh-askpass.x86_64

3.安装之后再次连接,首次登陆会有提示是否要连接(输入yes),然后输入密码即可。

主流服务器虚拟化技术简单使用——KVM(二)

主流服务器虚拟化技术简单使用——KVM(二)

这样就可以管理其他物理机(此例中为192.168.202.130)的虚拟机。

 主流服务器虚拟化技术简单使用——KVM(二)

若无法访问其它物理机上虚拟机的控制台,可能与ssh配置有关。

主流服务器虚拟化技术简单使用——KVM(二)

修改相应配置和重启服务即可。

[root@node1 ~]# vi /etc/ssh/sshd_config 
  X11Forwarding no    找到该行,将no修改为yes
  X11Forwarding yes
[root@node1 ~]# systemctl restart sshd

 但是访问虚拟机控制台,反复输入密码(我需要输入8次)这个问题暂时不知道是什么原因,可以通过设置ssh免密登陆规避这个问题。

主流服务器虚拟化技术简单使用——KVM(二)

通过web页面管理

通过命令行管理,没有GUI、操作不方便,数据不直观。virt-manager虽然是GUI,但是只能安装在Linux中。我们平常都是使用windows,这样只能通过windows远程Linux,但Linux由于多种原因一般是不安装图像界面的。现在集群管理、监控等,主流都是通过web管理,操作便捷、信息丰富,kvm也有基于web管理的工具(webvirtmgr)。

关于webvirtmgr介绍推荐参考这个文档,写的比较详细:https://jeremy-xu.oschina.io/2016/08/%E8%AF%95%E7%94%A8webvirtmgr/#%E5%BE%85%E6%94%B9%E8%BF%9B%E7%9A%84%E5%9C%B0%E6%96%B9

参考文档使用CentOS 6,有一些地方需要结合webvirtmgr官网改动:https://pypi.org/project/webvirtmgr/

主流服务器虚拟化技术简单使用——KVM(二)

官网中比较重要的是我用红色圈处理的三个链接,其中Install WebVirtMgr介绍了各种发行版的操作系统如何部署webvirtmgr,Setup Host Server中包含一个部署KVM的脚本(写本文时已失效),Wiki介绍如何配置webvirtmgr管理KVM。

 

部署webvirtmgr需要注意的几点:

1.webvirtmgr只需要部署在一台服务器中,让其他KVM主机加入webvirtmgr进行管理。

Tips:为了webvirtmgr节点的稳定性,部署webvirtmgr这台服务器,一般不部署KVM。

2.按照官方文档在CentOS7.4部署webvirtmgr需要使用epel扩展源

$ sudo yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

if this doesn't work, use yum install epel-release

$ sudo yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx

$ sudo yum -y install gcc python-devel

$ sudo pip install numpy

而且会因为依赖安装最新版的libvirt(写本文时CentOS7.4是Base源中是4.5),但是CentOS7.4无法运行这个版本的libvirt,将产生报错:

[root@localhost storage-backend]# libvirtd
2018-12-26 02:56:50.419+0000: 4877: info : libvirt version: 4.5.0, package: 10.el7_6.3 (CentOS BuildSystem <http://bugs.centos.org>, 2018-11-28-20:51:39, x86-01.bsys.centos.org)
2018-12-26 02:56:50.419+0000: 4877: info : hostname: localhost.localdomain
2018-12-26 02:56:50.419+0000: 4877: error : virModuleLoadFile:53 : 内部错误:Failed to load module '/usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so': /usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so: undefined symbol: rbd_diff_iterate2

libvirt_storage_backend_rbd.so应该是连接ceph块设备(rbd)的一个模块,这里暂时不用连接ceph,最简单粗暴的做法就是移除该模块,重启libvirtd。

[root@localhost storage-backend]# mv libvirt_storage_backend_rbd.so libvirt_storage_backend_rbd.so.bak
[root@localhost storage-backend]# systemctl restart libvirtd

其实安装过程中,有些包是epel里面的,libvirt相关的包还是从base中安装的,最稳妥的做法就是禁用base,使用镜像源中的libvirt相关包。

3.webvirtmgr官方部署方案使用Nginx做web服务器,通过访问该服务器的8000端口使用webvirtmgr。部署文档提示这样访问不太安全,建议使用ssh访问webvirtmgr,这个视自身情况而定做修改。

5.webvirtmgr要访问虚拟机的控制台需要yum -y install novnc,开启kvm主机的6080端口。

6.webvirtmgr接入kvm主机有4种方式,个人最推荐的是ssh。

主流服务器虚拟化技术简单使用——KVM(二)

ssh连接kvm主机必须设置ssh秘钥登陆,具体设置方法参考Wiki(部署目录)中的

主流服务器虚拟化技术简单使用——KVM(二)

更多管理方式

命令行工具比较适合排除故障的时候使用,virt-manager和webvirtmgr功能都差不多,主要在于C/S和B/S的区别。虽然webvirtmgr在逻辑结构、信息显示这些方面比virt-manager好一些,但它的功能仍然比较基础,两者都只是将逐台管理KVM主机的工作整合到一处,只适合管理小型虚拟化平台。大型的虚拟化平台更多使用的是rhev(或rhev开源版ovirt)、OpenStack,他们能够实现监控告警,资源集中管理等诸多强大的功能。

Tips:由于docker技术的迅速发展,小型虚拟化平台基本上被docker替代,像webvirtmgr最后一次更新还是在2015.1.23日。相较于服务器虚拟化,docker自身开销更小,更加灵活,现在小型虚拟化平台可能只有在开发、测试环境会使用到。