一种边缘计算虚拟机镜像缓存方法技术

技术编号:37997455 阅读:7 留言:0更新日期:2023-06-30 10:11
本发明专利技术公开了一种边缘计算虚拟机镜像缓存方法,包括:根据用户需要将虚拟机的自定义镜像导出,同时生成缓存文件;基于nginx对缓存文件进行访问,将虚拟机的自定义镜像上传到image

【技术实现步骤摘要】
一种边缘计算虚拟机镜像缓存方法


[0001]本专利技术属于边缘计算
,特别是涉及一种边缘计算虚拟机镜像缓存方法。

技术介绍

[0002]在边缘计算场景,用户需要将虚拟机的自定义镜像导出到云端备份,并且使用导出的镜像在原来的集群创建新的虚拟机。这种场景特征是用户导出镜像非常大,边缘到云端的上传下载受到带宽限制,耗时严重。而基于nginx做开发,nginx缓存模块只能缓存后端服务的http响应,无法缓存上传镜像的body内容,因此,需要一种镜像缓存解决方案,加快镜像获取,缩短虚拟机部署时间。

技术实现思路

[0003]为实现上述目的,本专利技术提供了如下方案:一种边缘计算虚拟机镜像缓存方法,包括:
[0004]根据用户需要将虚拟机的自定义镜像导出,同时生成缓存文件;
[0005]基于nginx作为HTTP和反向代理web服务器,对所述缓存文件进行访问,通过启用sendfile()系统调用来替换read()和write()调用,将所述虚拟机的自定义镜像上传到image

proxy镜像服务代理程序;
[0006]通过image

proxy镜像服务代理程序将镜像文件以数据流的形式上传到云端备份,在上传云端的过程中生成nginx缓存文件,通过io.tee管道的方式,一边上传镜像一边写缓存文件,进行云端镜像备份;基于nginx下载镜像,在原来的集群创建新的虚拟机,完成虚拟机部署。
[0007]优选地,在上传云端的过程中生成nginx缓存文件,通过io.tee管道的方式,一边上传镜像一边写缓存文件,进行云端镜像备份的过程包括,
[0008]通过io.tee管道的方式,破解nginx缓存文件的文件格式,将上传的镜像数据转换为nginx缓存,实现image

proxy的自定义缓存;
[0009]所述破解nginx缓存文件的文件格式的过程包括,获取缓存文件名称和缓存目录结构,基于所述缓存文件名和缓存目录结构破解缓存文件格式。
[0010]优选地,所述获取缓存文件名称和缓存目录结构的过程包括,
[0011]基于nginx配置proxy_cache_key,为每个镜像生成一个hash值,将所述hash值传递到image

proxy,获得缓存文件名称;
[0012]根据proxy_cache_path的level值设置缓存文件的索引目录层级,获得缓存目录结构。
[0013]优选地,基于nginx配置proxy_cache_key,为每个镜像生成一个hash值,将所述hash值传递到image

proxy,获得缓存文件名称的过程包括,
[0014]通过ngx_http_request_t*r结构获取proxy_hash_key,通过ngx_crc32_update和ngx_md5_update方法生成crc32值和hash值;
[0015]开发nginx模块,基于所述nginx模块开发cache

hash

header指令,设置所述nginx模块的postconfiguration回调函数,将指令挂载在NGX_HTTP_REWRITE_PHASE阶段,在nginx发送代理请求时将crc32值和hash值添加到proxy header传递到image

proxy。
[0016]优选地,基于所述缓存文件名和缓存目录结构破解缓存文件格式的过程包括,通过src/http/ngx_http_file_cache.c的ngx_http_file_cache_read方法,当nginx读取缓存文件时,通过校验crc32值判断文件有效性,通过校验valid_sec判断缓存是否过期,image

proxy构建获得缓存文件头部;
[0017]按业务需求自定义其余文件内容的header和body,更新Content

Length字段为body大小,发送reload信号至nginx加载缓存文件。
[0018]优选地,基于nginx下载镜像,在原来的集群创建新的虚拟机,完成虚拟机部署的过程包括,
[0019]基于所述image

proxy镜像服务代理程序的多副本同步机制,同步本地缓存控制信息,设置缓存副本数,当副本数不足时,从其他节点同步缓存;当副本数足够时,将下载镜像请求重定向到已缓存的节点。
[0020]优选地,当副本数不足时,从其他节点同步缓存;当副本数足够时,将下载镜像请求重定向到已缓存的节点的过程包括,
[0021]虚拟机通过访问镜像服务域名的方式下载镜像,当域名解析到有缓存的镜像代理服务节点则直接返回镜像;当域名解析到没有缓存的镜像代理服务节点,则设置proxy_cache_convert_head为off,发送head请求到其他节点,返回200响应的节点表示已缓存,返回204响应的节点表示没有缓存;
[0022]通过image

proxy保存每个节点的缓存情况,预设缓存节点个数,当所述预设缓存节点个数的所有节点均返回已缓存,则返回302重定向到已缓存节点;否则从已缓存的节点上同步缓存,返回的响应会自动生成本地的nginx缓存。
[0023]优选地,基于nginx下载镜像,在原来的集群创建新的虚拟机,完成虚拟机部署的过程还包括,采用k8s集群方式进行部署,在集群环境中部署image

service镜像服务,镜像服务对应多个副本的pod容器实现负载均衡和高可用,每个pod容器包含一个nginx和image

proxy。
[0024]优选地,在集群环境中部署image

service镜像服务的过程包括,
[0025]通过配置域名image

service,利用dns解析实现负载均衡和高可用,将域名image

service解析到各个节点的nginx,再由nginx反向代理到image

proxy镜像服务代理程序。
[0026]优选地,所述通过配置域名image

service,利用dns解析实现负载均衡和高可用,将域名image

service解析到各个节点的nginx,再由nginx反向代理到image

proxy镜像服务代理程序的过程包括,
[0027]当用户虚拟机导出虚拟机镜像时,将数据流上传到image

service,由nginx反向代理到image

proxy,image

proxy上传的同时生成nginx缓存;
[0028]当用户用导出的镜像创建虚拟机时,从image

servic本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种边缘计算虚拟机镜像缓存方法,其特征在于,包括:根据用户需要将虚拟机的自定义镜像导出,同时生成缓存文件;基于nginx作为HTTP和反向代理web服务器,对所述缓存文件进行访问,通过启用sendfile()系统调用来替换read()和write()调用,将所述虚拟机的自定义镜像上传到image

proxy镜像服务代理程序;通过image

proxy镜像服务代理程序将镜像文件以数据流的形式上传到云端备份,在上传云端的过程中生成nginx缓存文件,通过io.tee管道的方式,一边上传镜像一边写缓存文件,进行云端镜像备份;基于nginx下载镜像,在原来的集群创建新的虚拟机,完成虚拟机部署。2.根据权利要求1所述的边缘计算虚拟机镜像缓存方法,其特征在于,在上传云端的过程中生成nginx缓存文件,通过io.tee管道的方式,一边上传镜像一边写缓存文件,进行云端镜像备份的过程包括,通过io.tee管道的方式,破解nginx缓存文件的文件格式,将上传的镜像数据转换为nginx缓存,实现image

proxy的自定义缓存;所述破解nginx缓存文件的文件格式的过程包括,获取缓存文件名称和缓存目录结构,基于所述缓存文件名和缓存目录结构破解缓存文件格式。3.根据权利要求2所述的边缘计算虚拟机镜像缓存方法,其特征在于,所述获取缓存文件名称和缓存目录结构的过程包括,基于nginx配置proxy_cache_key,为每个镜像生成一个hash值,将所述hash值传递到image

proxy,获得缓存文件名称;根据proxy_cache_path的level值设置缓存文件的索引目录层级,获得缓存目录结构。4.根据权利要求3所述的边缘计算虚拟机镜像缓存方法,其特征在于,基于nginx配置proxy_cache_key,为每个镜像生成一个hash值,将所述hash值传递到image

proxy,获得缓存文件名称的过程包括,通过ngx_http_request_t*r结构获取proxy_hash_key,通过ngx_crc32_update和ngx_md5_update方法生成crc32值和hash值;开发nginx模块,基于所述nginx模块开发cache

hash

header指令,设置所述nginx模块的postconfiguration回调函数,将指令挂载在NGX_HTTP_REWRITE_PHASE阶段,在nginx发送代理请求时将crc32值和hash值添加到proxy header传递到image

proxy。5.根据权利要求2所述的边缘计算虚拟机镜像缓存方法,其特征在于,基于所述缓存文件名和缓存目录结构破解缓存文件格式的过程包括,通过src/http/ngx_http_file_cache.c的ngx_http_file_cache_read方法,当nginx读取缓存文件时,通过校验crc32值判断文件有效性,通过校验valid_sec判断缓存是否过期,image

proxy构建获得缓存文件头部;按业务需求自定义其余文件内容的header和body,更新Content

Length字段为body大小,发送reload信号至nginx加载缓存文件。6.根据权利要求1所述的边缘计算虚拟机镜像缓存方法,其特征在于,基于nginx下载镜像,在原...

【专利技术属性】
技术研发人员:刘敏健安雨顺魏文生黎梓安田红艳
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1