You need to enable JavaScript to run this app.
导航

友商Linux云服务器迁移至火山引擎

最近更新时间2023.02.14 17:00:21

首次发布时间2022.07.06 12:46:07

前言

每个公有云运营商对于cloud-init组件有自己的特殊配置,直接把友商的公有云镜像打包到火山引起使用,会有相关元数据注入问题,以及密码修改不生效等问题,本文介绍,如何将友商的Linux操作系统迁移至火山引擎。

关于实验

预计实验时间:90分钟
级别:中级
相关产品:ECS
操作系统:centos7.6
受众: 通用

前置条件
mkfs.ext4 /dev/vdb
mount /dev/vdb /tmp/
  • 安装qemu-img工具
yum install qemu-img -y
操作步骤

注意

在进行操作之前需要对操作的实例的系统盘制作快照,整个过程会涉及到删除cloud-init等操作。

登录友商Linux实例,执行以下步骤。

第一步、删除原有cloud-init

各个云厂家的cloud-init使用的版本不一致,有些厂家也会对cloud-init进行一定的修改,为了避免稳定性需要将原有的cloud-init删除,安装火山引擎提供的cloud-init版本。
登录友商Linux实例,执行一下步骤

whereis cloud-init  ##根据显示的结果删除相关的cloud-init文件

rm /usr/bin/cloud-init
rm /usr/local/bin/cloud-init
cd /usr/libexec/
rm -rf cloud-init

第二步、安装cloud-init

下载安装包

wget https://launchpad.net/cloud-init/trunk/20.3/+download/cloud-init-20.3.tar.gz

安装相关依赖包

yum install python3 -y
yum install python3-pip -y
yum install cloud-utils-growpart -y

解压并安装cloud-init

tar -xzvf cloud-init-20.3.tar.gz

cd cloud-init-20.3

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

python3 setup.py build

python3 setup.py install --init-system systemd

ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init

将相关服务设置为开机启动

systemctl enable cloud-init-local.service

systemctl enable cloud-init.service

systemctl enable cloud-config.service

systemctl enable cloud-final.service

修改cloud-init配置文件

编辑cloud-init配置文件vi /etc/cloud/cloud.cfg 将下列内容替换到文件中。

users:
- default  

disable_root: 0
ssh_pwauth: 1
growpart:
    mode: auto
    devices: ['/']
    ignore_growroot_disabled: false

mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys: 1
syslog_fix_perms: ~
disable_vmware_customization: false

manage_etc_hosts: localhost

cloud_init_modules:
  - disk_setup
  - migrator
  - bootcmd
  - write-files
  - growpart
  - resizefs
  - set_hostname
  - update_hostname
  - update_etc_hosts
  - rsyslog
  - users-groups
  - ssh

cloud_config_modules:
  - mounts
  - locale
  - set-passwords
  - rh_subscription
  - yum-add-repo
  - package-update-upgrade-install
  - timezone
  - puppet
  - chef
  - salt-minion
  - mcollective
  - disable-ec2-metadata
  - runcmd

cloud_final_modules:
  - rightscale_userdata
  - scripts-per-once
  - scripts-per-boot
  - scripts-per-instance
  - scripts-user
  - ssh-authkey-fingerprints
  - keys-to-console
  - phone-home
  - final-message
  - power-state-change

system_info:
   distro: rhel
  paths:
    cloud_dir: /var/lib/cloud
    templates_dir: /etc/cloud/templates
  ssh_svcname: sshd

更换cloud-init 数据源

创建文件 vi /etc/cloud/cloud.cfg.d/90_dpkg.cfg,并写入以下内容。

datasource_list: [ConfigDrive, OpenStack]

datasource:
    OpenStack:
        metadata_urls: ["http://169.254.169.254","http://100.96.0.96"]
        max_wait: -1
        timeout: 5
        retries: 5
        apply_network_config: True
安装火山引擎密码插件

下载安装并校验服务是否正常,本文以centos为例,其他操作系统可以参考官方文档火山引擎密码插件安装

wget http://volc-ecs.tos-s3-cn-beijing.volces.com/reset-authentication-1.0.4-0.x86_64.rpm

rpm -i reset-authentication-1.0.4-0.x86_64.rpm

systemctl is-active reset-authentication.service

systemctl is-enabled reset-authentication.service
删除相关配置以及网卡规则
echo > /etc/udev/rules.d/70-persistent-net.rules 

rm -rf /var/lib/cloud
制作系统镜像
dd if=/dev/vda of=/tmp/centos7.img
格式转换

qcow2 格式的镜像比 Raw 格式文件更小,只有在虚拟机实际占用了磁盘空间时,其文件才会增长,能方便的减少迁移花费的流量

cd /tmp
qemu-img convert -f raw -O qcow2 Centos7.img  Centos7.qcow2
火山引擎存对象存储配置

操作系统安装awscli命令行工具

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

创建配置文件~/.aws/credentials

mkdir ~/.aws
cd ~/.aws
touch credentials

获取AccessKey、AccessKey Secret

登录火山引擎访问控制服务生成一对AccessKey和AccessKey Secret

配置credentials文件

cat ~/.aws/credentials
[default]
aws_access_key_id=AKXXXXXXXX
aws_secret_access_key=XXXXXX
s3 =
  addressing_style = virtual

上传镜像文件到tos内

aws s3 cp /tmp/centos  s3://bucket-name/filename --endpoint-url=http://tos-s3-cn-beijing.volces.com 

到此步骤友商实例Linux的操作已经全部完成。

创建镜像

上传完成后,通过控制台修改文件权限为公共读

alt

点击详情,获取TOS地址

alt

登录镜像控制台

点击导入镜像,输入获取的镜像地址,选择正确的操作系统版本,并点击确定,开始镜像导入。

配置yum源

相关配置参考官方文档https://developer.volcengine.com/articles/7109755342606581768