阿里干货|我的弯道不翻车,500台服务器批量迁云实战
nanshan 2024-10-28 16:32 12 浏览 0 评论
1.前言
将线下服务器系统整体搬迁上云是上云客户的一个常见需求。对于1-10台少量级服务器的迁移需求有很多上云方案可以应对,然而上百台量级服务器的迁移上云就是一个没那么简单的工程问题。本文记录了某平台客户使用迁云工具将500台服务器系统批量迁移上阿里云公有云平台的案例,希望能给有类似需求的客户提供一些批量迁云方案作参考。
2.案例背景
2018年6月,迁云需求群里有业务同学来咨询,上来就开门见山:某客户线下云平台需要整体迁移到阿里云公有云平台,有将近500台服务器系统需要迁移,因为数量大、应用多,重新部署的方式太麻烦基本不考虑,看有没有其他的思路。继续从业务同学那儿了解得知,包含这些需求:
1.这些系统80%以上是虚拟机,其余是物理机,所以需要同时支持P2V和V2V场景;
2.这些系统版本绝大部分是Linux,还有少量的Windows Server,都需要能迁移;
3.希望能以制作镜像的方式迁移,等需要用的时候再创建实例即可。
而这些需求,刚好都在迁云工具的功能支持之列。于是我们还是向业务同学推荐了使用迁云工具的方案。
3.初次迁云演练
无论使用什么迁移工具或方案进行系统迁移工作,提前进行基本的迁移演练是必不可少的过程。
于是业务同学马上联系了客户,参照迁云工具帮助文档快速熟悉了一下基本的使用方法之后,找了台测试系统就开始上手做迁云测试:
1.先下载迁云工具到待迁移系统;
2.再简单配置一下迁移源和目标镜像信息;
3.然后运行迁云工具等待即可。
结果10分钟左右就将一个带数据盘的CentOS系统迁移到ECS公有云平台生成了镜像。接着使用该镜像创建了一个按量实例,启动后验证了一下整体系统应用服务,结果基本正常,测试流程初步通过。
对这个测试结果客户表示基本满足需求,同时希望尽快展开迁移任务。
4.批量迁云实战
1台系统的迁移还好说,然而对于500台这么大批量的系统,如何更加方便的迁移上云呢?来看看客户实际上是怎么做的。
4.1.自动化批量运维工具
一般来说,对于大批量的服务器系统,都会配备自动化运维工具来统一管理。客户的批量系统管理场景里面,用的自动化运维工具是比较常用的Ansible。先简单介绍一下:
Ansible是一种很强大的自动化运维工具,实现了批量系统配置、批量程序部署、批量运行命令等功能。使用Ansible可以很方便的完成一些需要重复操作的工作,比如:向100台服务器拷贝同一个文件,或者同时在100台服务器上安装Apache服务并启动。
对于这次批量迁移任务,也可以使用类似Ansible这样自动化批量运维工具来做。
4.2.迁云工具命令行调用
自动化运维工具的一个常用功能就是可以批量下发并执行脚本,所以只要被执行的工具能够支持在命令行中调用,理论上都能被批量的执行。
而迁云工具本身就是一个轻量绿色的客户端工具程序,无需安装或复杂配置即可使用。同时迁云工具提供一系列的命令行参数,专为命令行调用场景做了很多支持。
比如:--noenterkey 禁用交互,--nocheckversion 禁用提示版本更新,--progressfile 设置进度日志文件可以方便跟踪等。
4.3.批量迁移任务脚本
了解了Ansible的功能之后,我们就知道用它来批量下发迁云工具和执行迁移任务是很合适的。
客户根据实际迁移任务需要编写了自动化批量迁移任务脚本,主要做了以下几个工作:
1.批量下发迁云工具到待迁移服务器;
2.批量配置迁云工具,如目标镜像名等信息;
3.批量执行迁云工具,同时获取迁移任务结果。
以下是相关脚本示例:
#首先向所有服务器发送迁云工具程序
ansible -f 6 -i host.file all -m copy -a "src=go2aliyun_client1.2.9.1_linux_x86_64.zip dest=/temp"
#然后解压缩程序
ansible -f 6 -i host.file all -m shell -a "cd /temp && unzip go2aliyun_client1.2.9.1_linux_x86_64.zip"
#再执行修改配置文件脚本
ansible -f 6 -i host.file all -m shell -a "cd /temp/go2aliyun_client1.2.9.1_linux_x86_64 && ./config.sh"
sleep 120
# 配置文件脚本./config.sh工作是配置目标镜像名,主要根据子网IP来配置。(其他配置如AK,区域、磁盘信息等都是一致已配置好的)
#!/bin/bash
image_name=`ip a | grep inet | grep eth0 | grep brd | awk '{print $2}' | awk -F '/' '{print $1}'| awk -F '.' '{print "move_"$1"_"$2"_"$3"_"$4}'`
sed -i "s/IMAGE_NANE/${image_name}/" user_config.json
#最后执行迁移脚,同时运行并发量是6个
ansible -f 6 -i host.file all -m shell -a "cd /temp/go2aliyun_client1.2.9.1_linux_x86_64 && chmod +x go2aliyun_client &&./go2aliyun_client --nocheckversion --noenterkey"
#获取迁云结果,从client_data中获取生成的镜像Id以及完成状态
#判断client_data里的status自带,如果是Finished则表示迁云完成,同时image_id字段就是最终生成的镜像Id。
4.4.ECS资源额度申请
批量迁移过程中需要创建对应数量的ECS资源,可能会超过用户默认的ECS资源存量额度(Quota)上限,因此可以提前向阿里云提出提高以下资源额度上限申请:
- 按量收费的ECS实例vCPU额度;
- 自定义镜像额度。
4.5.初步迁云实战效果
准备就绪之后,客户就开始进行首批批量迁移任务。结果也比较顺利,白天几个小时陆陆续续迁移了近100台系统。客户侧专门提供了200M的宽带来做迁移,一台数据量4GB左右的系统从数据传输到打快照制作镜像平均15分钟以内就能完成:
初战告捷,客户有了更多的信心,准备加大迁移队列,开始进行后续批次的迁移任务。
5.批量迁移过快引发的“血案”
正所谓车技再厉害,也怕出意外。大批量迁云肯定不会那么的一帆风顺,一些特殊情况可能会干扰正常迁云的进行。这次批量迁移过程中也遇到了一个突然的问题考验。
5.1.发现问题
客户第二批次迁移开始没多久,迁云移数据后台开始报了大片迁移异常通知。看错误原因,发现都是一样的访问迁云服务网络异常中断导致迁云失败。排查迁云服务端服务一切正常,但是客户侧telnet测试服务还是反复报Connection closed by foreign host的错误。通过在阿里云侧和客户侧抓包发现两侧都收到了reset信号,看不出来是哪边的问题。因为客户侧IP和服务端口可以说是固定的,就有两个怀疑:
A.客户侧IP或服务端口被客户侧网络运营商出口限制了;
B.或者被阿里云侧网络入口限制了;
5.2.排查问题
在确认了迁云服务端服务本身是正常的情况下,先让客户确认本地网络防火墙有无出口限制,反馈没有;查看阿里云控制台云盾也没有异常拦截记录;同时也向阿里云侧网络同学咨询有无网络入口方面的限制,反馈也没有。接着也向客户数据中心运营商确认了各层网络链路没有IP或端口记录或防火墙之类的限制。
最后找到阿里云侧网络安全的同学咨询,给出初步判断可能是DDoS之类的拦截。安全同学跟进排查不久,就发现了跟客户IP相关的拦截记录,不过不是DDoS拦截。原因是客户这次大批量迁移的过程中,批量迁移动态的创建和释放了一定数量的中转实例,又因为迁移速度很快,一般只有10多分钟,中转实例的生命周期很短,凑巧触发了耿直的网络安全策略。这其实是一种“误判”,批量迁移操作和迁云工具都是没有问题的。
5.3.解决问题
这个问题可以说是因迁移速度过快而差点引发的“血案”,这是在众多迁云案例里面第一次遇到的,结果也在掌控之中。虽然不是迁云工具本身的原因,但却是一次有意义的经验教训。
安全同学在解除了对该客户的相关拦截限制之后,客户侧网络异常问题就得到了彻底的解决,迁移任务又可以进行下去了,无论速度多快、弯道再多也不用担心会翻车了。
后来的迁移就一直顺风顺水没出过问题了,在客户侧200M宽带的加持下,迁云工具跑得十分卖力而平稳。从问题当天中午得到解决到后面两天时间就把剩下的200台系统迁移完成,客户的500台服务器系统已经如期全部迁移完成。
6.批量创建实例
500台服务器批量迁移上云之后,首先得到的是对应数量的自定义镜像。客户后续还要将这些镜像创建成实例,同时有以下需求:
1.创建按量收费的实例来做验证,验证完成后再升为包年包月的;
2.保留跟原来系统相同的子网IP,因为涉及原业务相关;
3.创建实例去购买页面一个个操作是不可能的,需要有工具调用来做。
这里提供一个方案,就是可以使用阿里云命令行工具调用OpenAPI配合脚本来批量创建。
阿里云命令行工具是专为阿里云OpenAPI打造的、用于管理阿里云资源的工具。它可以调用OpenAPI来创建实例。主要步骤如下:
1.下载阿里云命令行工具并配置Access Id和Secret Key;
2.调用创建实例的OpenAPI参数请参考CreateInstance文档说明。假设创建实例的目标区域是cn-qingdao,镜像Id是m-xxxxxxxxx, VSwitch是vsw-xxxxxxx,子网IP是10.0.0.10,实例规格是ecs.n1.samll,调用如下即可:
aliyun ecs CreateInstance --RegionId 'cn-qingdao' --ImageId 'm-xxxxxxxxx' --VSWitchId 'vsw-xxxxxxx' --PrivateIP '10.0.0.10' --InstanceType 'ecs.n1.samll'
3.将迁云工具所生成的镜像Id信息和对应的子网IP等信息做成配置,然后编写脚本调用命令行工具来自动读取进行批量执行创建实例。
另外,批量实例创建并启动之后,如果需要进行批量管理和配置,可以使用阿里云自动化批量运维工具“云助手”来做。
7.后记
近期客户开始进行批量创建实例并进行业务联调,目前结果是:近500个服务器镜像已经全部创建实例并正常启动,业务联调良好。目前来看,客户使用迁云工具进行批量迁云已经基本达到了当初的需求预期。因为使用了迁云工具,也让本次迁云过程节省了很多人力物力时间成本。期间虽然也遇到一些问题,但跟总体迁云结果对比看也是很值得的。
随着越来越多客户的使用,迁云工具一直在积累各种迁云案例经验。我们有迁云数据表明,使用迁云工具再配合我们迁云服务支持,让服务器迁移上云的成功率可以达到95%以上。如果有迁移上云需求,better call us,我们是专注致力于让客户更方便快捷地上云的阿里云ECS镜像系统团队。
温馨提示:飙车有风险,请谨慎驾驶!
上云就上阿里云!
更多资讯,尽在阿里云科技快讯~
来科技快讯看新闻鸭~
快点关注我认识我爱上我啊~~~
相关推荐
- Let’s Encrypt免费搭建HTTPS网站
-
HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...
- 使用Nginx配置TCP负载均衡(nginx tcp负载)
-
假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...
- Nginx负载均衡及支持HTTPS与申请免费SSL证书
-
背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...
- HTTPS配置实战(https配置文件)
-
原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...
- 只有IP地址没有域名实现HTTPS访问方法
-
一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...
- 超详解:HTTPS及配置Django+HTTPS开发环境
-
众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...
- Godaddy购买SSL之后Nginx配置流程以及各种错误的解决
-
完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...
- Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)
-
一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...
- 阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问
-
参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...
- 你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具
-
NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...
- 从零开始搭建HTTPS服务(搭建https网站)
-
搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...
- 群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问
-
安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...
- 让网站快速升级HTTPS协议提高安全性
-
为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...
- 用Https方式访问Harbor-1.9版本(https访问流程)
-
我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...
- 如何启用 HTTPS 并配置免费的 SSL 证书
-
在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...
你 发表评论:
欢迎- 一周热门
-
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
【系统配置】信创终端挂载NAS共享全攻略:一步到位!
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WindowsServer2022|配置NTP服务器的命令
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)