Cloudpods 虚机跨集群迁移
本文介绍如何将纳管的 Clodpods 虚机转换为本地的 KVM 虚机,实现跨集群迁移的功能。
假设你有集群 A 和 集群 B,需要将集群 B 的虚机迁移到集群 A 中。
跨集群迁移的原理介绍
跨集群迁移的实现方式是通过集群 A 纳管集群 B, 获取集群 B 中虚拟机的配置信息; 然后在集群 A 中创建与集群 B 相同配置的虚机, 在集群 A 上远程挂载集群 B 虚机的硬盘作为集群 A 虚机的 backing_file。 然后启动集群 A 中的虚机, 并开始同步 backing_file。
简要的说就是在集群 A 中创建相同配置的虚机,然后同步磁盘。 需要注意的是:
- 磁盘远程挂载通过 host-image 服务来实现的,所以需要 A 集群的宿主机访问 B 集群的宿主机的 host-image 服务网络畅通。
- A 集群中是创建相同配置的机器,但是 ip 子网不一定是两个集群完全相同,所以执行跨集群迁移操作的时候可以指定 ip 子网,否则走自动调度。
- 主要同步的配置信息有 CPU, 内存,磁盘等信息,集群 B 虚机绑定的安全组,密钥等信息不会同步到 A 集群的虚机中,需要手动绑定。
- 执行跨集群迁移的虚机在迁移完成之前请勿开机。
纳管 Cloudpods 集群
首先需要使用集群 A 纳管集群 B。如何纳管 Cloudpods 集群参考:新建Cloudpods云账号
查看纳管集群虚机
$ climc server-list --hypervisor cloudpods
+--------------------------------------+------------+--------------+-----------+------------+-----------+--------------------------------------+-----------------------------+------------+---------+-----------+
| ID | Name | Billing_type | Status | vcpu_count | vmem_size | Secgrp_id | Created_at | Hypervisor | os_type | is_system |
+--------------------------------------+------------+--------------+-----------+------------+-----------+--------------------------------------+-----------------------------+------------+---------+-----------+
| c5edef26-05a3-4429-83d8-80cf4418ba9d | xyz-test-1 | postpaid | running | 2 | 2048 | default | 2023-10-10T14:42:55.000000Z | cloudpods | Linux | false |
| 3fce2326-ba4f-42cd-863f-d284d9e1f046 | centos7 | postpaid | running | 1 | 1024 | c6c1714f-eb15-4eaa-83d3-d48f83c897ef | 2023-10-08T10:16:38.000000Z | cloudpods | Linux | false |
+--------------------------------------+------------+--------------+-----------+------------+-----------+--------------------------------------+-----------------------------+------------+---------+-----------+
转换成 KVM 虚机(跨集群迁移)
跨集群迁移也叫转换 Hypervisor,由 hypervisor cloudpods 转换成 hypervisor kvm。
climc server-convert-to-kvm c5edef26-05a3-4429-83d8-80cf4418ba9d
转换完成后 B 集群的虚机将被设置成 converted 状态。