VMware虚拟机迁移到阿里云

1. 前言

最近公司内部研发部门有几台jenkins build机器运行在VMware平台上面,由于本地VMware平台底层计算资源不足导致虚拟机运行速度特别慢,每次版本发布都要build好久,而且VMware有时候计算资源不足,还会自动给占用资源大的机器关机,实在是影响了整体研发迭代速度及效率。

经过内部反馈,最终领导说不行迁移到阿里公有云吧,而且公司的build的微服务镜像也都是push到阿里云镜像库,这样整体速度和运行性能会更好一些,内网环境,而且还可以减少了一部分流量开支,是一个不错的选择;

2. 迁移思考

竟然领导发话了,那就看看怎么把VMware上面的虚拟机可以迁移到阿里云,最好能原封不动直接搬迁过去,不需要重新部署jenkins应用,不然这个工作量就比较大了,还需要重新配置,算了,还是看看有没有直接搬迁的解决方案吧。

2.1. 确定迁移方案

虚拟机迁移上云技术层面会有很多解决方案,可以使用冷迁移,就是导镜像方式,还有就是在线迁移,在线迁移其实就是可以源业务保证不停机热迁移数据拷贝上阿里云,最后再做一次增量补充到云上,做到在线迁移效果;

所以有以下两个方式,我们展开分析下

  • 冷迁移 - 导入镜像
  • 在线迁移 - 热迁移

2.2. 迁移方案细化分析

2.2.1. 冷迁移 - 导入镜像

VMware虚拟机其实就是裸设备VMDK文件,阿里云是可以支持直接导入VMDK文件作为镜像,然后再通过导入的自定义镜像来生成虚拟机,通过这种方式冷迁移到阿里云,经过看阿里云的导入镜像的文档,其实还是挺麻烦的,还要符合各种条件,最主要还要安装一些驱动,额… 算了,不是一个很好的选择,不是能力不够,是我嫌麻烦… (内心OS:作为一个IT技术从业人员怎么可能说自己能力不够 🙃 )

2.2.2. 在线迁移 - 热迁移(阿里云SMC)

现在看来之后在线迁移才能满足我的需求,最好是不让我配置一些乱七八糟的驱动,内核文件这些,如果能够直接拷贝VMware的vmdk文件到云上,在自动帮我生成一台一摸一样的虚拟机最好。

功夫不服有心人,我终于在阿里云上面找到了一个所谓的在线迁移工具SMC,这个工具是阿里云免费的产品,可以支持在线迁移,再经过使用之后,这个工具的总的思路如下:

在,

  • 源VMware虚拟机系统内部安装一个Agent客户端

这里需要自行判断是那个版本的linux,然后解压客户端包来安装执行
在这里插入图片描述

  • 执行启动Agent程序,然后输入阿里云账号的AK、SK认证

这里我有点慌,不知道在系统内部安装了什么东西,还提示让我确认,没办法只能跟着走了,个人对这种系统内部安装一堆包比较介意…
在这里插入图片描述

  • 登录到阿里云SMC控制台会看到一台机器
    在这里插入图片描述

  • 创建迁移任务

这里就是创建一个迁移任务,配置一些任务参数,网络、是否增量等等;
在这里插入图片描述

这里阿里云会自动在云上生成一个临时的中转站实例来进行同步任务,迁移完成会自动删除;
在这里插入图片描述

  • 查看迁移进度
    在这里插入图片描述

  • 生成迁移自定义镜像
    在这里插入图片描述

  • 手动使用自定义镜像来生成虚拟机

最终我们可以手动在阿里云ecs控制台来使用迁移过来的自定义镜像来创建虚拟机了,这里跟在阿里云购买虚拟机是同样的操作。
在这里插入图片描述
这里最终技术方案是没问题,确实比冷迁移 - 导入镜像方式确实简单很多,中间会有一些人为手动操作,但是如果有大批量的资源需要迁移,每一台源端都安装Agent,手动执行,其实还是挺费人工的,麻烦… 不太符合我预期…

那有没有稍微更简单的方法,最好是源端VMware虚拟机可以不安装Agent,安装Agent感觉对我系统有侵入性,不太能接受,而且可以支持批量迁移,不用每一次都手动创建一个迁移任务,最后还要手动使用镜像创建虚拟机…

2.2.3. 在线迁移 - 热迁移(万博云迁移 整机)

阿里云工具市场里面发现了一个超乎想象的迁移工具(万博云迁移 整机迁移),上面为了偷懒说出来的所有需求他竟然都可以满足。

  • 无代理迁移VMware虚拟机(也可以支持Agent代理)
  • 批量迁移VMware虚拟机
  • 块级别主机迁移
  • 支持在线增量
  • 主机验证后继续增量数据
  • 自动阿里云端启动虚拟机

这个产品几乎是超配啊,目前阿里云市场9.9元就可以获得免费的5个使用license,是一个比较好薅羊毛的机会(而且我发现这家公司还运行了迁移SaaS产品,可以支持迁移目标不光阿里云,20几朵云商,地址在这里,大家可以体验下云迁移软件)

阿里云市场访问路径 工具与解决方案,搜索 “云迁移” 即可看到万博云迁移

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfWFiKHb-1688045259139)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ccc4127f-6a93-4d0c-9b62-1187c3a742e8/Untitled.png)]
在这里插入图片描述

这个云迁移工具是和阿里云深度集成的,发现整个页面风格都是一样的,应该产品能力挺强的,所以被阿里云给OEM集成了,作为扩展云资源的一个驱动,哈哈😄

万博云迁移工具使用起来还是比较简单的,页面是这样的,思路也是比较清楚的,Agentless则是无代理模式,目前只支持VMware,OpenStack是灰色的暂不支持,有兴趣的了解的,可以登录他们SaaS运营的产品上面
在这里插入图片描述

具体的操作步骤如下

  • 源端部署无代理proxy代理程序(curl 执行安装)
    在这里插入图片描述

这里我们本地需要找一台centos7的实例用来安装源端代理来获取VMware的无代理数据,执行复制上面的指令,在本地的命令行粘贴执行即可;
在这里插入图片描述

  • 连接源端VMware平台(这里是调用的vCenter的API接口,输入vCenter的地址及用户名密码就可以)

    这里写的是本地VMware的连接信息,以及刚才安装的源端同步节点,就上边执行成功会自动添加到同步节点;
    在这里插入图片描述

  • 批量选择需要迁移的机器

    下一步确定后,如果认证通过,将会自动获取VMware的主机清单列表;
    在这里插入图片描述
    勾选你要迁移的主机资源,并点击确定
    在这里插入图片描述
    在这里插入图片描述

  • 创建数据同步代理(阿里云)

    此时勾选主机下一步时,需要创建一个阿里云数据同步代理,这里跟阿里云SMC基本差不多,就是在阿里云临时启动一个代理用来接收数据,这里选择相应的配置就可以了,公网传输的话,速度快点,可以公网带宽大一些,这里都是按量付费购买的。
    在这里插入图片描述
    确定之后会稍有个几分钟等待创建的动作,完成后即可继续进行上面的动作了。
    在这里插入图片描述

  • 配置目标资源存储规格

    回到迁移列表里面,就可以继续刚才操作,选中要迁移的机器,进行下一步
    在这里插入图片描述
    这里选择存储,也就是上面创建的阿里云数据同步代理,然后在选择你要使用的存储池,也就是磁盘使用什么规格的,ssd、高效还是essd,根据自己需要选择即可;
    在这里插入图片描述

  • 开始同步迁移数据

    选中需要迁移数据同步的主机,直接点击数据同步按钮即可,这个时候会自动进行数据同步。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

数据同步完成之后,就可以在阿里云上面将此机器启动一台虚拟机了

  • 启动系统(阿里云)
    在这里插入图片描述

配置启动系统所需要的参数,这里其实就是跟阿里云创建虚拟机的选择参数是一样,不过放在同一个迁移平台去做,感觉更加流程,不像是阿里云SMC工具,还要两边来回切换,比较麻烦。
在这里插入图片描述

配置之后就可以点击确定,迁移工具就会按照选配信息进行创建虚拟机了,需要等待几分钟,速度还是比较快的。
在这里插入图片描述
在这里插入图片描述

3. 分析汇总

最终还是薅了把羊毛,5个license就快速的把本地的几台机器全部迁移到了阿里云,可谓是简单、简单、真简单,如果有需求的小伙伴,这里推荐试一试,还是可以的。

这里我们来对比下两款产品的优劣势:

功能/产品阿里云SMC阿里云集成
使用体验简单简单、自动化程度高、学习成本低
迁移源端支持全部Agent方式Agent、Agentless,代理无代理两种
无代理迁移VMware不支持支持
批量迁移VMware虚拟机不支持支持
迁移方式文件、块级别块级别
多云支持只支持阿里云支持,自运营SaaS版本支持20+多云
同步增量策略支持支持
支持多个同步时间点恢复不支持支持
自动驱动修复支持支持
自动创建虚拟机人工镜像创建,不支持支持,自动调用接口创建
收费免费商业软件,可以薅羊毛,企业迁移推荐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/7364.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Docker安装mysql8

Docker中安装mysql8 ​ 本文记录时间为2023-07-04,文档内容主要参照mysql官方文档写成。 一、获取mysql镜像 ​ 此处参考mysql官方的文档,从Oracle的镜像库中查找所需的mysql镜像信息,此处选择的是community-server:8.0 # 拉取myssql com…

Linux12.进程替换

1.进程替换 :将磁盘上新的程序加载到内存中,并和当前进程的页表重新建立映射,这个工作可以调用操作系统的接口完成。 2.execl(函数),使用该函数后面跟上exit(1)。 3.makefile一次形成多个可执文件 4.chdir函数,作用类似于cd指令。…

LabVIEW开发工业物联网状态监测

物理对象的网络,允许在它们之间传输数据。信息通常保存在集中式云数据库中。由于物联网,我们现在可以从远处进行监控和感知。由于网络和通信的增加,越来越多的流程可能会自动化。 调度、维护管理和质量改进等关键领域的决策正受到大数据技术…

TypeScript ~ 掌握基本类型 ①

作者 : SYFStrive 博客首页 : HomePage 📜: TypeScript ~ TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &…

音视频入门知识学习

音视频入门知识学习 视频相关视频压缩空间冗余时间冗余视觉冗余信息熵冗余知识冗余 I帧 P帧 B帧 压缩思路I帧P帧B帧 H.264VCLNALNAL(片(宏块)) 音频概念采样和采样频率采样位数声道码率声音与音频数字音频相关特点时域冗余频域冗余…

【selenium】问题记录

1、驱动和浏览器版本不一致 报错:selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 106 问题原因: chrome版本114,Chromedriver版本106 …

高德地图的使用

JS API 结合 Vue 使用 高德地图 jsapi 下载、引入 npm add amap/amap-jsapi-loaderimport AMapLoader from amap/amap-jsapi-loader 使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用 JS API 使用 script 标签同步加载增加代理服务器设置…

Android:Lifecycle

整体架构 LifecycleOwner Lifecycle持有者 在ComponentActivity中new出来,所以Activity和Fragment自带 实现了LifecycleOwner接口的类 可以获得生命周期信息类Lifecycle Fragment和Activity都已经实现了该接口 Lifecycle Registry 生命周期注册器 可以提交生命周…

Nginx配置springboot+vue项目http跳转https

java生成证书 添加依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcpkix-jdk15on</artifactId><version>1.69</version></dependency> import org.bouncycastle.asn1.ASN1Encodable; import org.bounc…

Layout-静态模板结构搭建、字体图标引入、一级导航渲染、吸顶导航交互实现、Pinia优化重复请求【小兔鲜Vue3】

Layout-静态模板结构搭建 Layout模块静态模板搭建 LayoutNav.vue <script setup></script><template><nav class"app-topnav"><div class"container"><ul><template v-if"true"><li><a h…

Eclipse中有用的快捷键

Eclipse中有的快捷键自己记不清楚&#xff0c;但用起来又很方便&#xff0c;遇到了就放在这边备忘。 【CtrlO】快速定位某个类中的属性、方法 有时候&#xff0c;一个类中的属性、方法比较多&#xff0c;想用快捷键快速查找&#xff0c;提升效率。 举例&#xff1a;我想查找…

解决React18+ts项目导入模块的声明报错

路径配置 项目路径别名的配置 ts对指向src的目录提示是不支持的 所以需要手动配置符号指向 在vite.config.ts import path from path export default defineConfig({plugins:[react()],resolve:{alias:{"":path.resolve(__dirname, ./src)}} })但这时path模块引入会…