某政务云项目业务系统迁移调研最佳实践
「知了Prophet」
主机详细信息调研工具
项目背景
某国家部委云平台项目自2020年中旬开始建设云平台,后期期望将全部VMware主机迁移至国产云平台内,但是由于虚拟机数量较大,系统调研工作迟迟未能完成,导致项目严重超期。从2021年6月介入该项目后,我们通过「知了Prophet」自动化调研工具,快速帮助用户完成业务系统调研工作,还通过”容灾渐进式“迁移的理念打消了用户在迁移前的顾虑,在不到1个多月的时间内,顺利完成了多套业务系统迁移工作,涉及虚拟机数量超过百台。本文重点介绍如何利用「知了Prophet」调研工具,完成自动化调研及系统信息梳理工作。
用户环境
客户本次要迁移的业务系统运行在以VMware为主的虚拟化平台上,VMware ESXi版本主要集中在5.1、5.5和6.5版本上,共计20台ESXi服务器,虚拟机数量1000台以上,分为业务区和DMZ区。
调研环境准备
【软-件-安-装】
1、准备运行环境
在ESXi上创建一台虚拟机,配置如下:
操作系统:CentOS 7.3
规格:2 CPU 2G Memory 40G
网络:能够访问vCenterESXi,443和902端口(TCP协议)
2、安装容器
登陆到系统内部,使用root容器安装Docker
wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.15.tgz
配置容器
setenforce 0
tar -zxvf docker-19.03.15.tgz
mv docker/* /usr/bin/ && rm -rf docker
cat > /etc/systemd/system/docker.service <<-EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
运行容器
systemctl daemon-reload
systemctl start docker
3、安装「知了Prophet」调研工具
docker pull \
registry.cn-beijing.aliyuncs.com/oneprocloud-opensource/cloud-discovery-prophet:latest
4、运行容器
我们将/root目录映射到容器内部
docker run \
--net host \
--privileged=true \
--name prophet \
-v $HOME:/root \
-dit \
registry.cn-beijing.aliyuncs.com/oneprocloud-opensource/cloud-discovery-prophet:latest
系统调研
【系-统-信-息-采-集】
1、进入「知了Prophet」容器
docker exec -ti prophet bash
2、扫描全网中活跃主机
扫描指定网络地址段内的主机,并进行记录,可以作为后续更详细信息采集的输入。扫描完成后,将自动在指定的/root路径下生成 csv 文件。
prophet-cli scan --host 10.1.0.43-62 --output-path /root
3、填写用户名/密码
将生成CSV文件回传本地,用Excel编辑,填写用户名/密码信息
CSV结构说明(填写标红字段必填项)
4、执行采集
填写完成后,将scan_hosts.csv文件传到宿主机/root目录下,就可以执行详细信息采集了,方法如下:
prophet-cli collect --host-file /root/scan_hosts.csv --output-path /root/
指令运行后,会有汇总性的信息,如果采集失败,则需要在日志中查询错误原因
===========Summary==========
Total 73 host(s) in list, Need to check 2 host(s), success 0 hosts, failed 2 hosts.
Failed hosts: ['[WINDOWS]xxx', '[LINUX]xxx']
============================
执行完成后,将在ouput-path中生成host_collection_xxx.zip文件,该文件就是采集后的打包文件。
【系-统-信-息-分-析】
对上一步运行的结果进行分析
prophet-cli report \
--package-file /root/host_collection_20210804091400.zip \
--output-path /root/
最后生成的analysis_report.csv就是分析后的文件,可以传输回本地,进行进一步分析,至此完成了全部信息采集工作。
总结
在本次调研工作中,脚本总运行时间在30分钟内,共调研出虚拟机数量1049,其中Window 582台,Linux 467台,CPU总数量 7734核,内存总大小19T,总存储容量为60TB。
在大规模系统调研中,自动化是必须的手段,而目前在迁移调研领域的工具少之又少,所以「知了Prophet」工具无疑是对系统调研准确性的最好的保障。
联系我们
现在,「知了Prophet」开源上线github,并同步至国内的gitee上。
Github地址:
Gitee地址:
我们希望,大家在使用过程的问题和新需求,都可以和我们提出来。大家可以在github上提交issue,或者加入我们的开发交流群,与我们一起共建Prophet。