CN116074284B - 一种pve平台下的虚拟机之间获取ip地址的方法 - Google Patents
一种pve平台下的虚拟机之间获取ip地址的方法 Download PDFInfo
- Publication number
- CN116074284B CN116074284B CN202310361342.5A CN202310361342A CN116074284B CN 116074284 B CN116074284 B CN 116074284B CN 202310361342 A CN202310361342 A CN 202310361342A CN 116074284 B CN116074284 B CN 116074284B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- pve
- platform
- address
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种PVE平台下的虚拟机之间获取IP地址的方法,包括:步骤1:在PVE平台上安装相应操作系统的至少两台虚拟机,分别记为第一虚拟机和第二虚拟机,并且在PVE平台和两个虚拟机上均安装QGA;步骤2:SHELL脚本获取包括虚拟机ID的第一虚拟机的网卡信息;步骤3:通过SHELL脚本上运行预设指令获取第二虚拟机的虚拟机ID,将包括第一虚拟机的虚拟机ID的网卡信息写入到第二虚拟机的指定文件,遍历指定文件,找到满足条件的地址为第一虚拟机的IP地址;步骤4:每间隔预设时间重复执行步骤2和步骤3,动态地获得IP地址。本发明部署简单,可自动动态地获得IP地址,免除了手动配置麻烦,效率更高效。
Description
技术领域
本发明涉及PVE平台下虚拟机处理技术领域,具体是一种PVE平台下的虚拟机之间动态获取IP地址的方法。
背景技术
Proxmox Virtual Environment也叫Proxmox VE,可以简称为PVE,其是一个集计算、网络及存储的平台,该平台集成了基于内核的虚拟机管理程序(KVM)和基于Linux容器(LXC)这两种虚拟化技术,同时还集成了软件定义存储和虚拟网络功能。借助Web的管理界面工具,可以轻松地管理和配置虚拟机、容器、高可用性集群、软件定义存储、虚拟网络以及备份等。PVE的主要特性包括去中心化、超融合、高可用、开源低成本、易于实施管理等。基于PVE平台的特性,使得PVE平台在很多场景下得到应用,例如,基于PVE平台使得需要在一台服务器上部署多台虚拟机变得异常方便、稳定且高效,并且可以同时部署LINUX和WINDOWS多套不同系统的虚拟机。
但在PVE平台上部署了不同系统的虚拟机之间动态获取对方的IP地址是一件非常难的事情,目前并没有针对这种情况的解决方案。在现有技术中,往往是通过预先固定写死IP地址或者手动临时操作命令来配置IP地址,这种解决方案,一旦IP地址有编号,则需要重复之前的操作,无法动态来获取IP地址,非常不灵活,效率低下。为此,希望具有能够动态获取虚拟机之间特别是不同系统的虚拟机之间的IP地址。
发明内容
针对现有技术的不足,本发明的目的是提供一种PVE平台下的虚拟机之间动态获取IP地址的方法,其能够解决背景技术所描述的问题。
实现本发明的目的的技术方案为:一种PVE平台下的虚拟机之间获取IP地址的方法,包括如下步骤:
步骤1:在PVE平台上安装至少两台虚拟机,分别记为第一虚拟机和第二虚拟机,第一虚拟机和第二虚拟机的操作系统相异,
在PVE平台上启用分别与第一虚拟机和第二虚拟机通讯连接的QGA,在第一虚拟机和第二虚拟机上也各自安装QGA;
步骤2:通过SHELL脚本上运行预设指令,获取包括虚拟机ID的第一虚拟机的网卡信息;
步骤3:通过SHELL脚本上运行预设指令获取第二虚拟机的虚拟机ID,并且通过第一虚拟机的虚拟机ID和第二虚拟机的虚拟机ID建立两个虚拟机通讯连接,将包括第一虚拟机的虚拟机ID的网卡信息写入到第二虚拟机的指定文件,
遍历指定文件,找到满足prefix=24并且 ip_address_type=ipv4的地址为第一虚拟机的IP地址;
步骤4:每间隔预设时间重复执行步骤2和步骤3,从而使得第二虚拟机动态地获得第一虚拟机IP地址。
进一步地,第一虚拟机为采用WINDOW系统,其作为IP广播系统,第二虚拟机采用DEBIAN9.9系统,其作为云控系统。
进一步地,在步骤1中,还包括在PVE平台上将网卡模式设置为半虚拟化。
进一步地,在步骤1中,对于IP广播系统的第一虚拟机直接下载QGA的软件,对于云控系统的第二虚拟机,通过执行命令apt-get install qemu-guest-agent来安装QGA。
进一步地,在步骤2中和步骤3中,所述SHELL脚本安装在PVE平台上。
进一步地,在步骤2中,获得第一虚拟机的虚拟机ID的具体实现,包括以下步骤:
先执行命令ipvmid=`qm list|grep 'ipbroadcast'|awk '{print $1}'`,其中,ipbroadcast是第一虚拟机的名称,然后再执行以下命令a:qm agent $ipbroadcastnetwork-get-interfaces |tr -s "-" "_" |jq '.[0].ip_addresses'>/usr/src/dip.txt,从而获得第一虚拟机的网络配置信息的JSON表达式,执行前述命令a后,将第一虚拟机的网卡信息的配置信息以JSON的格式写入/usr/src/dip.txt 文件中,
其中,网卡信息的JSON表达式先做了字符替换,字符替换包括-替换为_,最后用jq命令来做内容解析,取第一个数组中的所有网卡配置信息。
进一步地,在步骤3中,将包括第一虚拟机的虚拟机ID的网卡信息写入到第二虚拟机的指定文件的具体实现,包括以下步骤:
先运行命令ykvmid=`qm list|grep 'yunkong'|awk '{print $1}'`,其中,yunkong是第二虚拟机的名称,然后再依次执行命令1和命令2,以将步骤2中获取到的包括第一虚拟机的虚拟机ID的网卡信息JSON表达式写入到第二虚拟机的指定文件中,其中,命令1为ipstr=`cat /usr/src/dip.txt,命令2为pvesh create /nodes/pve/qemu/$ykvmid/agent/file-write --content $ipstr --file /home/webserver/yk_dockerfiles/dip.txt,
其中,依次执行命令1和命令2的结果存放到指定文件中,指定文件的存储路径是/home/webserver/yk_dockerfiles,dip.txt是所述存储路径下的指定文件,指定文件的内容也是JSON格式。
本发明的有益效果为:本发明只需要在PVE平台上设置好QGA(包括设置两个虚拟机的名称、网卡模式)以及在虚拟机上安装QGA即可,部署简单,只需要SHELL脚本即可自动动态地获得目标虚拟机的IP地址,免除了手动配置麻烦,效率更高效。
附图说明
图1为本发明的流程示意图;
图2是执行相应命令的示意图;
图3是执行相应命令获得JSON表达式的示意图;
图4是执行相应命令的示意图;
图5示例包括三个地址的示意图。
具体实施方式
下面,结合附图以及具体实施方案,对本发明做进一步描述:
如图1-图5所示,一种PVE平台下的虚拟机之间获取IP地址的方法,包括如下步骤:
步骤1:在PVE平台上安装至少两台虚拟机,分别记为第一虚拟机和第二虚拟机,第一虚拟机和第二虚拟机的操作系统相异,例如,第一虚拟机为采用WINDOW系统,其作为IP广播系统,第二虚拟机采用DEBIAN9.9系统,其作为云控系统。
PVE平台是安装在硬件服务器上的一个虚拟平台,本实施例是基于Linux Debian发行版的系统并搭建在硬件服务器上形成的PVE平台。
在PVE平台上启用分别与第一虚拟机和第二虚拟机通讯连接的虚拟机子系统代理模拟器(也即是QEMU GUEST AGENT,简称为QGA),第一虚拟机和第二虚拟机通过各自对应的QGA与所在的宿主机(也即是PVE平台)实现通讯,以使得在PVE平台下发的各种操作命令能够被第一虚拟机和第二虚拟机远程执行。
在一个可选的实施方式中,PVE平台上还将网卡模式设置为半虚拟化,以保证PVE平台的运行效率。由于半虚拟化的网卡模式不仅支持QGA,并且相比于全虚拟化效率更高。
在第一虚拟机和第二虚拟机上也各自安装虚拟机子系统代理模拟器,相当于在PVE平台上安装的虚拟机子系统代理模拟器为服务端,在两个虚拟机上安装的虚拟机子系统代理模拟器为客户端,使得服务端和客户端之间能够通讯,进而使得PVE平台和虚拟机之间能够通讯。
其中,对于作为IP广播系统的第一虚拟机可以直接下载QGA的软件,对于作为云控系统的第二虚拟机,可以通过执行命令apt-get install qemu-guest-agent来安装QGA。
步骤2:获取第一虚拟机的虚拟机ID,虚拟机ID是一个整数,其在第一虚拟机安装在PVE平台上时,会直接给第一虚拟机分配一个整数,并且是动态分配的,该整数即是虚拟机ID。同样的,也获取第二虚拟机的虚拟机ID,其也是在第二虚拟机安装在PVE平台上时,会直接给第二虚拟机分配一个整数,并且是动态分配的,该整数即是虚拟机ID。
获取第一虚拟机的虚拟机ID通过在PVE平台上安装SHELL脚本,并且通过在SHELL脚本上运行命令即可,如图2所示,图2是执行相应命令的示意图,在本实施例中,先执行命令ipvmid=`qm list|grep 'ipbroadcast'|awk '{print $1}'`,其中,ipbroadcast是第一虚拟机的名称,然后再执行以下命令:qm agent $ipbroadcast network-get-interfaces|tr -s "-" "_" |jq '.[0].ip_addresses'>/usr/src/dip.txt,从而获得第一虚拟机的网络配置信息的JSON表达式,执行前述命令后,会将第一虚拟机的网卡信息的配置信息以JSON的格式写入/usr/src/dip.txt 文件中。在这个过程中,需要注意的是,网卡信息的JSON表达式先做了字符替换(-替换为_),最后用jq命令来做内容解析,取第一个数组中的所有网卡配置信息,如图3所示,图3是执行相应命令获得JSON表达式的示意图。
步骤3:获取第二虚拟机的虚拟机ID也是通过在PVE平台上安装的SHELL脚本上运行相应命令来实现的,并且通过第一虚拟机的虚拟机ID和第二虚拟机的虚拟机ID建立两个虚拟机通讯连接。如图4所示,图4是执行相应命令的示意图,先运行命令ykvmid=`qm list|grep 'yunkong'|awk '{print $1}'`,其中,yunkong是第二虚拟机的名称。如图4所示,图4是执行命令ykvmid=`qm list|grep 'yunkong'|awk '{print $1}'`的示意图。然后再依次执行命令1和命令2,以将步骤2中获取到的包括第一虚拟机的虚拟机ID的网卡信息JSON表达式写入到第二虚拟机的指定文件中。其中,命令1为ipstr=`cat /usr/src/dip.txt,命令2为pvesh create /nodes/pve/qemu/$ykvmid/agent/file-write --content $ipstr --file /home/webserver/yk_dockerfiles/dip.txt。
其中,依次执行命令1和命令2的结果存放到指定文件中,指定文件的存储路径是/home/webserver/yk_dockerfiles,dip.txt是所述存储路径下的文件,也即所述指定文件。并且指定文件的内容也是JSON格式。
并遍历指定文件,找到满足prefix=24并且 ip_address_type=ipv4的地址为第一虚拟机的IP地址。如图5所示,图5中有三个地址,但仅有一个地址满足上述条件,因此,该地址才是第一虚拟机的真实IP地址。
步骤2和步骤3中,qm命令是PVE平台自带的系统命令,其余命令在SHELL脚本上执行。
步骤4:每间隔预设时间(例如间隔10秒)重复执行步骤2和步骤3,从而能够动态地将第一虚拟机的虚拟机ID更新到第二虚拟机上,并且将第一虚拟机的虚拟机ID作为第一虚拟机的虚拟机IP,从而使得第二虚拟机能够动态获取到第一虚拟机的虚拟机IP,并且将第一虚拟机的虚拟机IP写入第二虚拟机上的指定文件中,从而能够实现完全自动地动态获取到基于windows系统上的IP地址,无需人为参与,即使第一虚拟机的IP产生变化,也能够及时获得。
本发明只需要在PVE平台上设置好QGA(包括设置两个虚拟机的名称、网卡模式)以及在虚拟机上安装QGA即可,部署简单,只需要SHELL脚本即可自动动态地获得目标虚拟机的IP地址,免除了手动配置麻烦,效率更高效。
本说明书所公开的实施例只是对本发明单方面特征的一个例证,本发明的保护范围不限于此实施例,其他任何功能等效的实施例均落入本发明的保护范围内。对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及变形,而所有的这些改变以及变形都应该属于本发明权利要求的保护范围之内。
Claims (4)
1.一种PVE平台下的虚拟机之间获取IP地址的方法,其特征在于,包括如下步骤:
步骤1:在PVE平台上安装至少两台虚拟机,分别记为第一虚拟机和第二虚拟机,第一虚拟机和第二虚拟机的操作系统相异,
在PVE平台上启用分别与第一虚拟机和第二虚拟机通讯连接的QGA,在第一虚拟机和第二虚拟机上也各自安装QGA;
步骤2:通过SHELL脚本上运行预设指令,获取包括虚拟机ID的第一虚拟机的网卡信息;
步骤3:通过SHELL脚本上运行预设指令获取第二虚拟机的虚拟机ID,并且通过第一虚拟机的虚拟机ID和第二虚拟机的虚拟机ID建立两个虚拟机通讯连接,将包括第一虚拟机的虚拟机ID的网卡信息写入到第二虚拟机的指定文件,
遍历指定文件,找到满足prefix=24并且 ip_address_type=ipv4的地址为第一虚拟机的IP地址;
步骤4:每间隔预设时间重复执行步骤2和步骤3,从而使得第二虚拟机动态地获得第一虚拟机IP地址。
2.根据权利要求1所述的PVE平台下的虚拟机之间获取IP地址的方法,其特征在于,第一虚拟机为采用WINDOW系统,其作为IP广播系统,第二虚拟机采用DEBIAN9.9系统,其作为云控系统。
3.根据权利要求1所述的PVE平台下的虚拟机之间获取IP地址的方法,其特征在于,在步骤1中,还包括在PVE平台上将网卡模式设置为半虚拟化。
4.根据权利要求1所述的PVE平台下的虚拟机之间获取IP地址的方法,其特征在于,在步骤2中和步骤3中,所述SHELL脚本安装在PVE平台上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310361342.5A CN116074284B (zh) | 2023-04-07 | 2023-04-07 | 一种pve平台下的虚拟机之间获取ip地址的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310361342.5A CN116074284B (zh) | 2023-04-07 | 2023-04-07 | 一种pve平台下的虚拟机之间获取ip地址的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116074284A CN116074284A (zh) | 2023-05-05 |
CN116074284B true CN116074284B (zh) | 2023-06-30 |
Family
ID=86175370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310361342.5A Active CN116074284B (zh) | 2023-04-07 | 2023-04-07 | 一种pve平台下的虚拟机之间获取ip地址的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116074284B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240924A (zh) * | 2019-12-27 | 2020-06-05 | 广东睿江云计算股份有限公司 | 一种Linux虚拟机Socket监听的检测方法及其系统 |
CN112988330A (zh) * | 2021-03-24 | 2021-06-18 | 江苏天翼安全技术有限公司 | 一种指定ip地址来创建虚拟机的方法及系统 |
WO2023010819A1 (zh) * | 2021-08-04 | 2023-02-09 | 苏州浪潮智能科技有限公司 | 一种虚拟机内部配置的修改方法、系统及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111862A (zh) * | 2014-07-17 | 2014-10-22 | 湖南昇云科技有限公司 | 云计算平台中获取虚拟机ip地址方法与系统 |
CN107370622B (zh) * | 2017-07-14 | 2020-05-26 | 苏州浪潮智能科技有限公司 | 一种虚拟机复用宿主机mac和ip的方法及系统 |
CN111988230B (zh) * | 2020-08-19 | 2023-04-07 | 海光信息技术股份有限公司 | 虚拟机通信方法、装置、系统及电子设备 |
CN112433820A (zh) * | 2020-12-03 | 2021-03-02 | 中国科学技术大学 | 一种获取虚拟机主机ip的方法及系统 |
-
2023
- 2023-04-07 CN CN202310361342.5A patent/CN116074284B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240924A (zh) * | 2019-12-27 | 2020-06-05 | 广东睿江云计算股份有限公司 | 一种Linux虚拟机Socket监听的检测方法及其系统 |
CN112988330A (zh) * | 2021-03-24 | 2021-06-18 | 江苏天翼安全技术有限公司 | 一种指定ip地址来创建虚拟机的方法及系统 |
WO2023010819A1 (zh) * | 2021-08-04 | 2023-02-09 | 苏州浪潮智能科技有限公司 | 一种虚拟机内部配置的修改方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116074284A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144439B2 (en) | Emulation-based testing of a microservices architecture | |
US11429369B2 (en) | Distributed upgrade in virtualized computing environments | |
CN107566541B (zh) | 容器网络资源分配方法、系统、存储介质和电子设备 | |
CN108089913B (zh) | 一种超融合系统的虚拟机部署方法 | |
EP2385464A1 (en) | Method and system for automatic generation of operating system boot images | |
CN106126273B (zh) | 一种升级bios的方法 | |
CN110463162B (zh) | 应用部署方法、装置及系统 | |
US20030217131A1 (en) | Processing distribution using instant copy | |
CN108958742A (zh) | 一种批量安装操作系统的方法、相关设备及系统 | |
CN106549789B (zh) | 一种实现服务器安装的方法及系统 | |
CN109474443B (zh) | 一种新增服务器的配置方法、装置、系统和通信设备 | |
CN112749095B (zh) | 一种切换操作系统执行测试任务的方法、系统及介质 | |
US11636016B2 (en) | Cloud simulation and validation system | |
CN107968816B (zh) | 一种利用移动终端搭建云平台的方法 | |
CN113489603A (zh) | 一种网络靶场中交互式背景流量发生方法与系统 | |
CN112468545A (zh) | 一种云主机创建方法、装置、系统、设备及可读存储介质 | |
CN113849228A (zh) | 操作系统批量部署方法、系统、终端及存储介质 | |
CN116074284B (zh) | 一种pve平台下的虚拟机之间获取ip地址的方法 | |
CN112667293B (zh) | 一种部署操作系统的方法、装置及存储介质 | |
CN103051668B (zh) | 一种服务器资源管理系统及管理方法 | |
CN110737444A (zh) | 基于固件的操作系统远程自适应动态部署方法及系统 | |
CN105827467A (zh) | 一种注册中心升级方法、相关设备及系统 | |
CN111857761A (zh) | 一种容器集群服务应用程序升级的方法及设备 | |
CN115454580B (zh) | 一种节点主机资源管理方法、装置与计算设备 | |
CN115766717B (zh) | 超融合分布式系统自动化部署方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |