Перейти к содержанию

Процесс миграции#

Процесс миграции состоит из предварительного этапа, который представляет собой подготовку планов миграции, и самого тестирования миграции.

Доступный сценарий миграции#

pp_recoveryflow-recover-as-a-vm

Каждый из этих шагов подробно описан ниже.

Планы миграции#

Планы миграции --- это сценарии миграции, предназначенные для тестирования или итоговой миграции. Они включают в себя описание машин (количество vCPU, ОЗУ, ранг и т.д.) и сетей.

dr_add_drplan_dialog

Создание плана миграции#

Чтобы создать план миграции, просто нажмите кнопку Добавить на странице клиента.

dr_add_drplan_btn

При добавлении нового плана укажите его название и содержимое плана. Название плана миграции должно быть уникальным для клиента.

Существует два режима создания или редактирования плана: основной и расширенный. Чтобы переключаться между ними, выберите соответствующую вкладку на странице "Добавить план миграции".

В основном режиме пользователь может либо вставить/ввести сетевые спецификации для отказоустойчивой машины вручную, либо выбрать сети из списка, который Акура получает непосредственно из целевого облака. Список сетей может быть получен автоматически со следующих платформ - VMware, OpenStack, Flexible Engine, AWS, Azure.

dr_basic_mode

Расширенный режим позволяет указать более подробную конфигурацию в формате JSON.

dr_add_drplan_dialog

Основной частью плана миграции является инструкция JSON для миграции инфраструктуры и бизнес-приложения в целевое облако. Чтобы сгенерировать план на основе всех клиентских машин, нажмите на Сгенерировать план миграции из всех машин.

Создание плана миграции для группы машин#

Можно создать план миграции для выбранных машин или на основе настроек группы, используйте Сгенерировать план миграции в меню Групповые действия

cp_device_actions_genplan

или в меню групп

cp_group_genplan

В результате появится диалоговое окно для создания и редактирования плана миграции - дайте ему название (уникальное для клиента).

dr_add_drplan_dialog

Создать план миграции из файла#

Данный инструмент рекомендуется использовать для уже среплицированных машин. Особенно большую эффективеность он показал на большом количестве машин, т.к. значительно экономит время создания плана. Скачайте список машин. В загруженном файле machines_list.csv ряд полей будет заполнен на основании данных репликации. Обновите информацию в поле flavor, впишите cidr сети, в котором должна подняться машина, добавьте информацию о портах, в колонки, начинающиеся с ports.

При готовности загрузите файл. Для запуска создания плана миграции нажмите Применить.

cp_create_plan_from_file

На создание плана миграции потребуется некоторое время, после чего откроется окно. Отредактируйте название плана и другие поля, если нужно. Обратите особое внимание на предупреждающий текст оранжевого цвета в верхней части окна. Он показывает потенциально опасные места, из-за которых миграция может отработать некорректно. Исправьте их на форме.

cp_edit_plan_created_from_file

Сохраните план миграции.

Синтаксис плана миграции#

Основная часть плана миграции представляет собой инструкцию JSON для миграции инфраструктуры и бизнес-приложения в целевое облако.

Пример плана миграции:

{
    "devices": {
        "IIS-Demo": {
            "rank": 1,
            "id": "52ce9361-b282-72b6-425a-f67347c5b79a",
            "scheduler_hints": {
                "group": "0c1b2901-7687-470e-a82c-6f69e92d5245"
            },
            "ports": [
                {
                    "name": "port_0",
                    "ip": "192.168.15.112",
                    "subnet": "main_subnet"
                },
                {
                    "name": "port_1",
                    "subnet": "external"
                }
            ]
        },
        "rhel7.2": {
            "id": "522f3448-6a56-aa45-2131-207f7dda6664",
            "ports": [
                {
                    "name": "port_0",
                    "ip": "192.168.15.100",
                    "subnet": "main_subnet"
                }
            ],
            "rank": 0,
            "boot_condition": {
                "delay_seconds": 120,
                "type": "wait"
            }
        }
    },
    "subnets": {
        "main_subnet": {
            "cidr": "192.168.15.0/24",
            "subnet_id": "eda47a07-d1dd-4aca-ae8f-c652e997008e"
        }
    }
}

Базовые теги#

devices -- содержит описание каждой машины. Необходимо перечислить все машины, которые должны быть воссозданы в cloud site:

{
    "devices": {
        "rhel7.2": {
            "id": "522f3448-6a56-aa45-2131-207f7dda6664",
            "ports": {
                "port_0": {
                    "ip": "192.168.15.100",
                    "subnet": "main_subnet"
                },
                "scheduler_hints": {
                    "group": "0c1b2901-7687-470e-a82c-6f69e92d5245"
                }
            },
            "rank": 0,
            "boot_condition": {
                "delay_seconds": 120,
                "type": "wait"
            }
        }
    }
}

subnets -- содержит описание сетей, которые необходимо воссоздать в целевом облаке:

{
    "subnets": {
        "main_subnet": {
            "cidr": "192.168.15.0/24",
            "subnet_id": "eda47a07-d1dd-4aca-ae8f-c652e997008e"
        }
    }
}

Синтаксис описания машины#

Описание машины состоит из ряда параметров, описывающих свойства машины, таких как название машины, сетевые настройки, ранг и условия загрузки машин для поддержания последовательности и согласованности процесса запуска cloud site.

{
    "rhel7.2": {
        "id": "522f3448-6a56-aa45-2131-207f7dda6664",
        "custom_image_metadata": {
            "hw_qemu_guest_agent": "no",
            "os_require_quiesce": "no",
            "my_os_type": "linux-custom",
            "hw_disk_bus": "scsi",
            "hw_scsi_model": "virtio-scsi",
            "my_custom_image_tag": "linux"
        },
        "security_groups": [
            "sg-1",
            "sg-2"
        ],
        "availability_zone": "zone-1",
        "user_data": "#!/bin/bash\nrpm -e hlragent\nrm -rf /etc/hystax\n",
        "ports": {
            "port_0": {
                "ip": "192.168.15.100",
                "subnet": "main_subnet"
            }
        },
        "rank": 0,
        "scheduler_hints": {
            "group": "0c1b2901-7687-470e-a82c-6f69e92d5245"
        },
        "boot_condition": {
            "delay_seconds": 120,
            "type": "wait"
        }
    }
}

Параметры описания машин:

Параметр Описание Обязательность
machine_name Базовый тег для описания машины. Имя будет использоваться для идентификации машины на cloud site. Да
fix_dev_prefix Введите префикс, если необходимо обновить названия дисков машины c ОС Linux во время P2V. Возможные значения:
- ‘sd’ (для названий вида /dev/sda1),
- ‘vd’ (для названий вида /dev/vda1),
- ‘xvd’ (для названий вида /dev/xvda1).
Названия дисков заменяются в рамках процесса P2V для Linux в следующих файлах (несуществующие файлы пропускаются):
- /etc/fstab,
- /boot/grub/grub.cfg (а также /grub/grub.cfg, если /boot – отдельный раздел),
- /boot/grub2/grub.cfg (а также /grub2/grub.cfg, если boot – отдельный раздел).
Например:
{
"devices": {
"ds-debian10-sda": {
"fix_dev_prefix": "vd",
...
}
}
}
Нет
id Внутренний идентификатор машины (можно найти, наведя курсор мыши на название машины в списке машин на странице клиента). Да
ports Список конфигураций сетевых интерфейсов машины (может быть несколько). Интерфейсы будут добавлены в том же порядке, в котором они описаны. Описание параметров интерфейса и примера их использования приведено ниже. Да
scheduler_hints Дополнительные параметры планировщика при настройке отказоустойчивости. Параметр group позволяет указать группу серверов, в которой будут размещаться инстансы для отказоустойчивого запуска в OpenStack.
Пример:
"scheduler_hints": {
"group": "0c1b2901-7687-470e-a82c-6f69e92d5245"
}
Нет
rank Порядок, в котором будет запущена группа машин. Например, машины с рангом 2 будут запущены только после запуска всех машин с рангом 1, а те, в свою очередь, только после запуска всех машин с рангом 0. Да
boot_condition Состояние, в котором машина считается работающей. Поддерживается задержка во времени; по её истечении машина считается запущенной. Условие распространяется на весь ранг. Если есть несколько машин с задержкой по времени, ранг считается выполненным после ожидания в течение самого длительного времени.
Синтаксис:
"boot_condition": {

"delay_seconds": number of seconds to wait,
"type": "wait"
}

Пример:
"boot_condition": {

"delay_seconds": 120,
"type": "wait"
}
Нет
flavor Название или идентификатор существующей конфигурации в облаке. Для VMware значение указывается как vCPU-RAM, например 2-4, что означает 2 vCPU и 4 ГБ.
Пример: “flavor”: “2-4”
Да
config_drive По умолчанию – false. Установите в true, если хотите использовать конфигурационный диск.
Пример:
"config_drive": "true"
Нет
security_groups Список групп безопасности, которые будут использоваться для машины. Это приведёт к перезаписи группы (групп) по умолчанию. Нет
availability_zone Название зоны доступности, используемой для машины. Это приведёт к перезаписи зоны доступности, указанной в настройках облака. Нет
user_data Сценарий, который будет выполнен на целевой машине. Чтобы использовать ключ “user_data”, на исходной машине должен быть установлен cloud_init, в противном случае он будет проигнорирован. Нет
firmware Параметр, который выбирает вариант загрузки для машины (Vmware, oVirt, GCP). Доступные значения - BIOS (по умолчанию) или EFI.
Пример: “firmware”: “EFI”
Нет
guest_id Идентификатор гостевой операционной системы. Обратитесь к официальной документации VMware.
Пример: “guest_id”: “ubuntu64Guest”.
Нет
hardware_ver Аппаратная версия виртуальной машины. Обратитесь к официальной документации VMware.
Пример: “hardware_ver”: “vmx-11”.
Нет
byol (только для AWS) Если byol - false (или не установлен), то используется AWS ImportImage (AWS запускает собственную P2V). Если byol - true, то используется AWS RegisterImage, и запускается наш собственный P2V.
Пример: "devices": {
"sd_small_ubuntu": {
"rank": 0,
"byol": true,
}
}
Нет
ntp_server (только для Windows) Протокол, используемый Windows для синхронизации.
Пример:
"devices": {
"im-WS2019-ntp": {
"flavor": "m1.medium",
"ports": [
{
"name": "port_0",
"subnet": "provider-subnet"
}
],
"id": "52eef058-012b-70dd-9271-28ee5f56d171",
"rank": 0,
"ntp_server": "ntp6.ntp-servers.net"
},
"subnets":{
"provider-subnet": {
"name": "provider-subnet",
"subnet_id": "6129317f-4987-4bf3-bfd0-c0edc3bc4bba",
"cidr": "172.24.1.0/24"
}
}
}
Нет
hostname (только для Windows машин в облаке OpenStack) Новое имя хоста Windows машины. Значение поля может принимать значения:
- true (по умолчанию) – использовать имя машины из плана в качестве имени хоста
- false – не менять имя хоста
- любая строка – установить имя хоста как указано в строке.
Пример:
"devices": {
"ds2012test": {
"id": "9f51d0de-b6cb-400e-b223-5e748cc39d01",
"flavor": "m1.medium",
"hostname": "my-super-long-custom-hostname",
"rank": 0,
"ports": [
{
"name": "port_0",
"subnet": "DS-internal-2"
}
]
}
},
"subnets": {
"DS-internal-2": {
"name": "DS-internal-2",
"subnet_id": "76377dae-4e35-4183-bafa-b06eef69249e",
"cidr": "172.22.0.0/16"
}
}
Нет
rclocal_script Сценарий, который запустится при загрузке Linux.
Пример:
"rclocal_script": "#!/bin/bash\ndate > date.txt\n"
Нет
copy_efi_bootloader По умолчанию – false. Установите в true, если хотите использовать загрузчик по умолчанию.
Пример:
"copy_efi_bootloader": true
Нет
key_name Ключ-пара для устройства.
Пример:
"key_name": "yv-key"
Нет
meta Список мета-тегов машины. Для OpenStack, OpenNebula.
Пример:
"devices": {
"rhel7.2": {
...
"meta": {
"Image Name": "Hystax_CATI_...",
"Image ID": "f389c03b-...",
"Image": "image",
"Key Name": "username"
}
}
Нет
custom_image_metadata Задать пользовательские метаданные образа для среплицированных ВМ. Только OpenStack.
Пример:
"custom_image_metadata": {
"hw_qemu_guest_agent": "no",
"os_require_quiesce": "no",
"my_os_type": "linux-custom",
"hw_disk_bus": "scsi",
"hw_scsi_model": "virtio-scsi",
"my_custom_image_tag": "linux"
},

Параметр можно задать как строку с объектом JSON:
"custom_image_metadata": "hw_qemu_guest_agent=no,os_require_quiesce=no,my_os_type=linux-custom,hw_disk_bus=scsi,hw_scsi_model=virtio-scsi,yv_custom_image_tag=Linux".
Также этот параметр можно задать как дополнительную опцию на этапе начальной конфигурации или при добавлении облака. Обратите внимание, что, если параметр задан и на этапе начальной конфигурации/добавления облака, и в плане миграции, то к облаку будут применены настройки плана миграции, т.к имеют приоритет выше, даже если значение представляет собой пустую строку.
Нет

Описание интерфейса ports имеет следующие параметры:

Параметр Описание Обязательность
name Название интерфейса Да
ip IP-адрес интерфейса.

По умолчанию адаптеры Windows будут настроены как DHCP. Если вы хотите установить статические настройки, то используйте это поле совместно с mac.
Нет
mac MAC-адрес интерфейса. Игнорируется для облака AWS. Нет
subnet Название подсети интерфейса Да
routing_allowed Позволяет машине быть маршрутизатором (может быть “true” или “false” (по умолчанию)). Игнорируется для облака AWS. Нет
floating_ip добавляет floating_ip для порта (может быть “true” или “false” (по умолчанию)). Использование этого параметра со значением “true” ограничивает устройство наличием только одного порта. “floating_ip”: “” назначит целевой машине определённый внешний IP-адрес (только для Openstack, Huawei). Нет
mtu (только для Windows) Наибольший размер пакета, отправляемый по сети без фрагментации. Используйте этот параметр в паре с параметром mac.
Пример:
"devices": {
"DS2012R2MULMBR": {
"id": "9f51d0de-b6cb-400e-b223-5e748cc39d01",
"flavor": "m1.medium",
"rank": 0,
"ports": [
{
"name": "port_0",
"ip": "172.22.8.249",
"mac": "08:00:27:46:79:29",
"gateway_ip": "172.22.1.2",
"dns_nameservers": [
"172.22.1.2",
"8.8.4.4"
],
"mtu": 1511,
"subnet": "DS-internal-2"
}
]
}
},
"subnets": {
"DS-internal-2": {
"name": "DS-internal-2",
"subnet_id": "76377dae-4e35-4183-bafa-b06eef69249e",
"cidr": "172.22.0.0/16"
}
}
Нет

Примеры:

"ports": [
    {
        "name": "port_0",
        "ip": "192.168.15.100",
        "subnet": "main_subnet"
    }
]

Порты, подсети, mac, ip, gateway и dns. Используйте mac, чтобы установить статический ip:

{
    "devices": {
        "sd_small_ubuntu": {
            "rank": 0,
            "ports": [
                {
                    "name": "port_0",
                    "ip": "172.22.8.144",
                    "mac": "08:00:27:46:79:27",
                    "gateway_ip": "172.22.1.2",
                    "dns_nameservers": [
                        "172.22.1.2",
                        "172.22.1.3"
                    ],
                    "subnet": "subnet_1"
                }
            ],
            "id": "5260881c-c921-f037-df78-6105f018a9c2",
            "flavor": "m1.medium"
        }
    },
    "subnets": {
        "subnet_1": {
            "name": "subnet_1",
            "cidr": "172.22.0.0/16"
        }
    }
}

Пример для случая, если IP динамический:

{
    "devices": {
        "centos": {
            "ports": [
                {
                    "name": "port_0",
                    "floating_ip": true,
                    "subnet": "subnet_0"
                }
            ]
        <...>    
        }
    }
}

Синтаксис описания сети#

Описание сети состоит из ряда параметров, таких как название сети, её CIDR и адреса DNS-серверов.

Пример:

{
    "subnets": {
        "main_subnet": {
            "cidr": "192.168.15.0/24",
            "subnet_id": "eda47a07-d1dd-4aca-ae8f-c652e997008e"
        }
    }
}

Параметры описания сети:

Параметр Описание Обязательность
network name Название сетевого идентификатора является базовым тегом для описания сети Да
cidr CIDR сети Да
subnet_id Существующий идентификатор подсети в целевом облаке Да

Warning

Указанный идентификатор подсети должен быть доступен для используемой зоны доступности.

Редактирование существующего плана миграции#

Чтобы отредактировать существующий план миграции, нажмите кнопку Изменить напротив этого плана на странице клиента.

dr_edit_drplan_btn

Появится диалоговое окно, в котором можно отредактировать план миграции.

dr_edit_drplan_dialog

Тестировочные и итоговые миграции#

После завершения создания полных реплик выбранных машин заказчик может запустить набор тестовых миграций для оценки результатов, формирования правильных ожиданий и настройки параметров инфраструктуры.

Описание конфигурации процесса миграции.

rp_recovery_flow3

Процесс миграции может потребовать некоторого времени: его продолжительность зависит от сложности структуры плана миграции и уровней согласованности/зависимости между компонентами бизнес-приложения. Как только все компоненты получат статус Активен, бизнес-приложение готово к процедуре, и можно протестировать или выполнить окончательную миграцию, которая приведёт к отсоединению решения Хайстекс от cloud site.

Warning

Перенаправление основного трафика на платформу AWS или KVM не является частью текущей функциональности решения и должно быть заранее согласовано с поставщиком услуг.

В целях экономии времени рекомендуется использовать упрощённый набор тестов, которые будут выполняться на cloud site, прежде чем переключать производственный трафик на новую цель.

Настройки Cloud site#

После создания cloud site можно выполнить ряд дополнительных действий для настройки среды выполнения бизнес-приложения, таких как добавление машин на cloud site, остановка/запуск машин. Описание cloud sites и соответствующих настроек.

cs_cs_page

Во время тестирования миграции рекомендуется удалить избыточные cloud sites, чтобы освободить затраченные на них ресурсов.