百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux-KVM虚拟化+websockify(noVNC)

zhezhongyun 2025-01-19 01:52 51 浏览

kvm安装

环境:centos7

1、查看CPU是否支持inter或AMD的虚拟技术

# cat /proc/cpuinfo |grep -E "vmx|svm"

2、安装kvm

# yum install qemu-kvm libvirt virt-install libvirt-python virt-manager virt-install libvirt-client virt-viewer

3、确认是否有装在kvm模块

# lsmod |grep kvm

4、启动并设置为开机自启动

# systemctl start libvirtd
# systemctl status libvirtd
# systemctl enable libvirtd

kvm安装虚拟机

1、桌面下安装

# virt-manager

会大家虚拟机软件,按照提示信息一步步操作即可安装虚拟机。

2、命令行安装

# virt-install --hvm --name "centos" --memory 800 --vcpus 2  --disk=/var/lib/libvirt/images/centos.qcow2,size=20 -l /share/CentOS-7-x86_64-DVD-2009.iso --network bridge=virbr0

virt-install命令参数说明:

-n NAME, --name=NAME:虚拟机名称,需全局惟一;

-r MEMORY, --ram=MEMORY:虚拟机内在大小,单位为MB;

--vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU个数及相关配置;

--cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?来获取支持的CPU模式;

--disk=DISKOPTS:指定存储设备及其属性;格式为--disk /some/storage/path,opt1=val1,opt2=val2等;常用的选项有:

device:设备类型,如cdrom、disk或floppy等,默认为disk;

bus:磁盘总结类型,其值可以为ide、scsi、usb、virtio或xen;

perms:访问权限,如rw、ro或sh(共享的可读写),默认为rw;

size:新建磁盘映像的大小,单位为GB;

cache:缓存模型,其值有none、writethrouth(缓存读)及writeback(缓存读写);

format:磁盘映像格式,如raw、qcow2、vmdk等;

sparse:磁盘映像使用稀疏格式,即不立即分配指定大小的空间;

--nodisks:不使用本地磁盘,在LiveCD模式中常用;

-w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:将虚拟机连入宿主机的网络中,其中NETWORK可以为:

bridge=BRIDGE:连接至名为“BRIDEG”的桥设备;

network=NAME:连接至名为“NAME”的网络;


3、启动、关闭、重启相关

# virsh  start centos       --启动一个虚拟机

# virsh  shutdown centos    --正常关闭一个虚拟机(把服务都停掉,再关电源)

# virsh  reboot centos      --正常重启一个虚拟机,先shutdown再start

web vnc管理kvm

noVNC介绍:

VNC的客户端很多,比如VNC Viewer、TightVNC、RealVNC、UltraVNC等VNC的客户端,可以使用SSH以及VNC的方式来登录及管理QEMU、KVM、libvirt虚拟机, 那有没有通过Web的方式去登录及管理QEMU、KVM、libvirt虚拟机呢,noVNC就是其中一种方案。

noVNC是基于HTML5技术的VNC 客户端,支持手机浏览器(iOS 和 Android) noVNC 使用代理器websockify连接到QEMU

一、下面介绍安装noVNC并使用noVNC连接KVM虚拟机的vnc界面

1、yum的EPEL源配置

#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

2、安装noVNC【宿主机上】

#yum install novnc

会自动安装python-websockify

3、openssl生成证书

#创建证书存放目录
mkdir-p /etc/novnc/ssl
#openssl命令生成证书

#openssl req -x509 -nodes -newkey rsa:2048 -keyout novnc.pem -out novnc.pem -days 365

CountryName (2 letter code) [XX]:CN
StateorProvinceName (full name) []:Beijing
LocalityName (eg, city) [Default City]:XiCheng
OrganizationName (eg, company) [Default Company Ltd]:lihl
OrganizationalUnitName (eg, section) []:IT
CommonName (eg, your name or your server's hostname) []:kvm.cn
EmailAddress[]:XXX

4、修改现有虚拟机配置文件XML,vnc对应端口。注:kvm虚拟机基础vnc,只需要配置端口即可

# virsh edit centos7.0
<graphics type='vnc' port='5910' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>


# virsh edit win7
<graphics type='vnc' port='5911' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>


4、启动Websockify

websockify -D --web=/usr/share/novnc/ --cert=/etc/novnc/ssl/novnc.pem 60800.0.0.0:5910

5、浏览器登录noVNC

http://192.168.3.39:6080/



6、实现一对多:一个端口,多个代理

1、再新建一个kvm虚拟机,可以通过# virt-manager 桌面创建,我这边创建了一个win7的虚拟机

2、配置token文件

websockify -D --web=/usr/share/novnc/ --cert=/etc/novnc/ssl/novnc.pem 6080  --target-config=/usr/share/novnc/conf/kvm.conf


3、启动websockify,加载token配置文件

websockify -D --web=/usr/share/novnc/ --cert=/etc/novnc/ssl/novnc.pem 6080  --target-config=/usr/share/novnc/conf/kvm.conf

4、使用token方式访问两个不同kvm

       http://192.168.3.39:6080/vnc_auto.html?port=6080&path=/conf?token=centos
     http://192.168.3.39:6080/vnc_auto.html?port=6080&path=/conf?token=win7

文章结束,欢迎阅读!

相关推荐

3 分钟!AI 从零开发五子棋全过程曝光,网友:这效率我服了

<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8...

一行代码实现display&quot;过渡动画&quot;原理

作者:Peter谭老师转发链接:https://mp.weixin.qq.com/s/XhwPOv62gypzq5MhhP-5vg写本文的起因上篇文章,提到如何让display出现过渡动画,却没有仔...

脑洞:琼恩·雪诺、蝙蝠侠和魔形女的灵魂宠物了解一下

AlekseiVinogradovisaRussianfreelancedigitalartistwhoshareshisskillsandtalentwith120k...

浏览器的渲染机制、重绘、重排

1、什么是重排和重绘网页生成过程:HTML被HTML解析器解析成DOM树css则被css解析器解析成CSSOM树结合DOM树和CSSOM树,生成一棵渲染树(RenderTree)生成布局(flo...

托福写作高频考题写作思路&amp;词汇丨考虫独家

科技话题与媒体话题是托福写作的常考话题很多考生对这两类话题里的专有词汇表达也许很不了解所以今天就跟随考虫托福写作老师刘云龙老师一起来学习在这些话题的写作里你可以使用哪些有用的表达。希望大家有收获!记得...

在优麒麟上使用 Electron 开发桌面应用

使用Web标准来创建桌面GUI,上手快、成本低、跨平台、自适应分辨率,这些都是Electron的优势。作者/来源:优麒麟Electron是由Github开发,用HTML、CSS和...

php手把手教你做网站(三十八)jquery 转轮盘抽奖,开盲盒

抽奖和开盲盒性质一样的都是通过ajax读取后台的随机数据。1、转轮盘本来是想直接绘图实现轮盘,但是没有找到怎么填充文字,只好把轮盘弄成了背景图,通常用于游戏抽道具,商城积分抽奖,公司年末员工抽奖点击抽...

用 CSS 整活!3D 轮播图手把手教学,快乐代码敲出来

兄弟们,今天咱来搞点好玩的——用CSS整一个3D轮播图!咱野生程序员就是要在代码里找乐子,技术和快乐咱都得要!代码是写不完的,但咱能自己敲出快乐来,走起!一、先整个容器,搭个舞台咋先写一个...

实现一个超酷的 3D 立体卡片效 #前端开发

今天我们来实现一个超酷的3D立体卡片效果。正常情况下就是一个普通的图片展示卡片,鼠标悬停的时候图片会跳出卡片,并将影子投射到背景卡片上,在视觉上有一个3D立体感。html主要分成3个部分:容器→背景层...

Vue 3 Teleport与Suspense:解决UI难题的两个&quot;隐藏大招&quot;

模态框的"层级噩梦"与Teleport的救赎"这个模态框怎么又被父容器截断了?"团队协作开发后台系统时,小张第N次遇到这个问题。多层嵌套的组件结构里,弹窗被overfl...

让交互更加生动!有意思的鼠标跟随 3D 旋转动效

今天,群友问了这样一个问题,如下所示的鼠标跟随交互效果,如何实现:简单分析一下,这个交互效果主要有两个核心:借助了CSS3D的能力元素的旋转需要和鼠标的移动相结合本文,就将讲述如何使用纯CSS...

填坑:transform元素导致zindex失效终极方法

今天遇到了使用css3动画的元素层级被放大置顶的问题,ios浏览器上没问题,安卓原生浏览器和安卓微信上有问题。使用了css3动画的元素z-index失效,兄弟元素设置多高的z-index都盖不住解决办...

诡异的层级错乱:一个被transform隐藏的CSS陷阱

周五下午三点十七分,设计部突然发来紧急截图——原本应该悬浮在顶部的导航菜单,此刻正诡异地被下方的轮播图遮挡。我盯着屏幕上错乱的层级关系,手指下意识地敲下z-index:9999,心里清楚这不过是程序...

动画篇--碎片动画

本文授权转载,作者:Sindri的小巢(简书)前言从最开始动笔动画篇的博客,至今已经过去了四个多月。这段时间回头看了看自己之前的动画文章,发现用来讲解动画的例子确实不那么的赏心悦目。于是这段时间总是想...

Nature:大洋转换断层处的拉张构造与两阶段地壳增生

Nature:大洋转换断层处的拉张构造与两阶段地壳增生转换断层是三种基本的板块边界之一,全球总长度超过48000km(Bird,2003),它们的发现为板块构造理论的建立奠定了重要的基础(Wil...