一种PVE平台下的虚拟机之间获取IP地址的方法与流程

文档序号:34066689发布日期:2023-05-06 15:28阅读:867来源:国知局
一种PVE平台下的虚拟机之间获取IP地址的方法与流程

本发明涉及pve平台下虚拟机处理,具体是一种pve平台下的虚拟机之间动态获取ip地址的方法。


背景技术:

1、proxmox virtual environment也叫proxmox ve,可以简称为pve,其是一个集计算、网络及存储的平台,该平台集成了基于内核的虚拟机管理程序(kvm)和基于linux容器(lxc)这两种虚拟化技术,同时还集成了软件定义存储和虚拟网络功能。借助web的管理界面工具,可以轻松地管理和配置虚拟机、容器、高可用性集群、软件定义存储、虚拟网络以及备份等。pve的主要特性包括去中心化、超融合、高可用、开源低成本、易于实施管理等。基于pve平台的特性,使得pve平台在很多场景下得到应用,例如,基于pve平台使得需要在一台服务器上部署多台虚拟机变得异常方便、稳定且高效,并且可以同时部署linux和windows多套不同系统的虚拟机。

2、但在pve平台上部署了不同系统的虚拟机之间动态获取对方的ip地址是一件非常难的事情,目前并没有针对这种情况的解决方案。在现有技术中,往往是通过预先固定写死ip地址或者手动临时操作命令来配置ip地址,这种解决方案,一旦ip地址有编号,则需要重复之前的操作,无法动态来获取ip地址,非常不灵活,效率低下。为此,希望具有能够动态获取虚拟机之间特别是不同系统的虚拟机之间的ip地址。


技术实现思路

1、针对现有技术的不足,本发明的目的是提供一种pve平台下的虚拟机之间动态获取ip地址的方法,其能够解决背景技术所描述的问题。

2、实现本发明的目的的技术方案为:一种pve平台下的虚拟机之间获取ip地址的方法,包括如下步骤:

3、步骤1:在pve平台上安装至少两台虚拟机,分别记为第一虚拟机和第二虚拟机,第一虚拟机和第二虚拟机的操作系统相异,

4、在pve平台上启用分别与第一虚拟机和第二虚拟机通讯连接的qga,在第一虚拟机和第二虚拟机上也各自安装qga;

5、步骤2:通过shell脚本上运行预设指令,获取包括虚拟机id的第一虚拟机的网卡信息;

6、步骤3:通过shell脚本上运行预设指令获取第二虚拟机的虚拟机id,并且通过第一虚拟机的虚拟机id和第二虚拟机的虚拟机id建立两个虚拟机通讯连接,将包括第一虚拟机的虚拟机id的网卡信息写入到第二虚拟机的指定文件,

7、遍历指定文件,找到满足prefix=24并且 ip_address_type=ipv4的地址为第一虚拟机的ip地址;

8、步骤4:每间隔预设时间重复执行步骤2和步骤3,从而使得第二虚拟机动态地获得第一虚拟机ip地址。

9、进一步地,第一虚拟机为采用window系统,其作为ip广播系统,第二虚拟机采用debian9.9系统,其作为云控系统。

10、进一步地,在步骤1中,还包括在pve平台上将网卡模式设置为半虚拟化。

11、进一步地,在步骤1中,对于ip广播系统的第一虚拟机直接下载qga的软件,对于云控系统的第二虚拟机,通过执行命令apt-get install qemu-guest-agent来安装qga。

12、进一步地,在步骤2中和步骤3中,所述shell脚本安装在pve平台上。

13、进一步地,在步骤2中,获得第一虚拟机的虚拟机id的具体实现,包括以下步骤:

14、先执行命令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 文件中,

15、其中,网卡信息的json表达式先做了字符替换,字符替换包括-替换为_,最后用jq命令来做内容解析,取第一个数组中的所有网卡配置信息。

16、进一步地,在步骤3中,将包括第一虚拟机的虚拟机id的网卡信息写入到第二虚拟机的指定文件的具体实现,包括以下步骤:

17、先运行命令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,

18、其中,依次执行命令1和命令2的结果存放到指定文件中,指定文件的存储路径是/home/webserver/yk_dockerfiles,dip.txt是所述存储路径下的指定文件,指定文件的内容也是json格式。

19、本发明的有益效果为:本发明只需要在pve平台上设置好qga(包括设置两个虚拟机的名称、网卡模式)以及在虚拟机上安装qga即可,部署简单,只需要shell脚本即可自动动态地获得目标虚拟机的ip地址,免除了手动配置麻烦,效率更高效。



技术特征:

1.一种pve平台下的虚拟机之间获取ip地址的方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的pve平台下的虚拟机之间获取ip地址的方法,其特征在于,第一虚拟机为采用window系统,其作为ip广播系统,第二虚拟机采用debian9.9系统,其作为云控系统。

3.根据权利要求1所述的pve平台下的虚拟机之间获取ip地址的方法,其特征在于,在步骤1中,还包括在pve平台上将网卡模式设置为半虚拟化。

4.根据权利要求1所述的pve平台下的虚拟机之间获取ip地址的方法,其特征在于,在步骤1中,对于ip广播系统的第一虚拟机直接下载qga的软件,对于云控系统的第二虚拟机,通过执行命令apt-get install qemu-guest-agent来安装qga。

5.根据权利要求1所述的pve平台下的虚拟机之间获取ip地址的方法,其特征在于,在步骤2中和步骤3中,所述shell脚本安装在pve平台上。

6.根据权利要求1或5所述的pve平台下的虚拟机之间获取ip地址的方法,其特征在于,在步骤2中,获得第一虚拟机的虚拟机id的具体实现,包括以下步骤:

7.根据权利要求6所述的pve平台下的虚拟机之间获取ip地址的方法,其特征在于,在步骤3中,将包括第一虚拟机的虚拟机id的网卡信息写入到第二虚拟机的指定文件的具体实现,包括以下步骤:


技术总结
本发明公开一种PVE平台下的虚拟机之间获取IP地址的方法,包括:步骤1:在PVE平台上安装相应操作系统的至少两台虚拟机,分别记为第一虚拟机和第二虚拟机,并且在PVE平台和两个虚拟机上均安装QGA;步骤2:SHELL脚本获取包括虚拟机ID的第一虚拟机的网卡信息;步骤3:通过SHELL脚本上运行预设指令获取第二虚拟机的虚拟机ID,将包括第一虚拟机的虚拟机ID的网卡信息写入到第二虚拟机的指定文件,遍历指定文件,找到满足条件的地址为第一虚拟机的IP地址;步骤4:每间隔预设时间重复执行步骤2和步骤3,动态地获得IP地址。本发明部署简单,可自动动态地获得IP地址,免除了手动配置麻烦,效率更高效。

技术研发人员:姚传军,朱正辉,赵定金,明德,张常华,蔡文生
受保护的技术使用者:广东保伦电子股份有限公司
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1