Миграция из AWS в Selectel - Академия Selectel

Миграция из AWS в Selectel

Инструкция о том, что нужно сделать, чтобы мигрировать из AWS в Selectel. Рассказываем про создание образа инстанса AWS, переносе его в S3 bucket и создание облачного сервера Selectel.

Читайте также:

Как мигрировать из Google Cloud Platform

Как мигрировать из DigitalOcean

Введение

В инструкции мы расскажем, как перенести инстанс (виртуальную машину) Amazon EC2 из AWS в Selectel. Для миграции нужно:

  1. Создать образ инстанса AWS.
  2. Создать S3 bucket (контейнер в хранилище AWS) и экспортировать в него образ.
  3. Загрузить образ из хранилища AWS на локальный ПК.
  4. Развернуть из образа облачный сервер в Selectel и настроить его.

Мы рассмотрим перенос инстанса Amazon EC2 на Ubuntu 20.04 с сетевым диском размером 8 ГБ и публичным IPv4-адресом.

Подготовка к работе

Убедитесь, что на инстансе AWS установлен и известен пароль от root. Если вы не сможете подключиться к инстансу по SSH-ключу, то можно будет восстановить доступ в панели управления.

Установите на инстансе cloud-init, если он не установлен:


    apt update

    apt install cloud-init

Создание образа инстанса

  • Откройте панель управления AWS.

В списке инстансов выберите нужный и создайте его образ. Для этого нажмите Actions и в меню выберите Image and templates ⟶ Createimage:

 

  • При создании образа мы рекомендуем не включать опцию No reboot — попытка создать образ без остановки инстанса может привести к неконсистентности данных и другим сложностям. Обратите внимание, что инстанс в процессе создания образа будет перезагружен:
  • Созданный образ будет размещен в разделе Amazon Machine Images (AMIs). Дождитесь окончания процесса — образ перейдет в статус Available:

Создание S3 bucket

  • Создайте контейнер в хранилище Amazon S3 — в него мы поместим образ инстанса:
  • При создании контейнера выберите регион размещения инстанса и его образа, остальные настройки можно оставить по умолчанию:

Управление уровнем доступа через AWS IAM

Для последующей работы с образом нужно настроить доступ к ресурсам через AWS IAM.

  • Откройте сервис IAM.
  • Создайте ключ Access keys для подключения AWS CLI. Для этого откройте Users ⟶ Ваш пользователь ⟶ Security credentials ⟶ Create Access keys. Обязательно сохраните файл .csv или скопируйте Secret access key, — в случае его потери придется удалять текущий ключ и создавать новый:
  • Создайте политику доступа к ресурсам AWS. Откройте Policies ⟶ Create Policy

Вставьте JSON-файл vmimport.json с содержимым (в файле замените <your_s3bucket> на имя вашего S3 Bucket):


    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetBucketAcl"
            ],
            "Resource": [
                "arn:aws:s3:::import-to-ec2-*",
                "arn:aws:s3:::<your_s3bucket>",
                "arn:aws:s3:::<your_s3bucket>/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ModifySnapshotAttribute",
                "ec2:CopySnapshot",
                "ec2:RegisterImage",
                "ec2:Describe*"
            ],
            "Resource": "*"
        }
    ]
}

В качестве Name* укажите vmimport. Затем нажмите Create policy:

  • Добавьте policy пользователю. Откройте Users ⟶ Ваш пользователь ⟶ Permissions. Нажмите Add permissions:

Нажмите Attach existing policies directly и выберите нужную policy. Затем нажмите Add permissions:

Копирование образа инстанса из EC2 AMI в S3 bucket

Панель управления AWS не позволяет просто скачать образ инстанса. Но консольный клиент AWS CLI дает возможность экспортировать образ в хранилище S3, откуда можно загрузить образ, например, на локальный ПК.

  • Установите AWS CLI на локальный ПК (мы рассматриваем установку для Linux x86 64-bit, установка для Windows и macOS — в официальной инструкции):

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

    unzip awscliv2.zip

    sudo ./aws/install

Проверьте корректность установки:


    aws --version

В выводе появится подобный текст: 

aws-cli/2.4.5 Python/3.8.8 Linux/4.14.133-113.105.amzn2.x86_64 botocore/2.4.5
  • Настройте AWS CLI:

    aws configure

В выводе появится подобный текст:

AWS Access Key ID [None]: # ваш Key ID
AWS Secret Access Key [None]: # ваш Secret Access Key
Default region name [None]: # регион размещения инстанса
Default output format [None]: table # формат возвращаемых в консоль данных

Пример команды для отображения инстансов AWS:


    aws ec2 describe-instances
  • Конвертируйте образ и скопируйте его в S3 bucket:

    aws ec2 export-image \
    --image-id ami-1234567890abcdef0 \
    --disk-image-format RAW \
    --s3-export-location S3Bucket=my-export-bucket,S3Prefix=exports/

Замените ami-1234567890abcdef0 на имя вашего образа.

Обратите внимание, что —disk-image-format может быть VMDK, RAW или VHD. Мы рекомендуем выбрать RAW, импорт образа VMDK может не сработать в панели управления Selectel.

  • Узнайте статус выполнения задачи:

    aws ec2 describe-export-image-tasks --export-image-task-id export-ami-05eb5524acd01529f

Замените export-ami-05eb5524acd01529f на ID задачи.

Время выполнения задачи зависит от размера образа.

  • Теперь можно скачать образ диска из S3 bucket на локальный ПК:

Создание облачного сервера Selectel

Из экспортированного образа AWS можно создать облачный сервер в Selectel.

Загрузите образ

Для начала загрузите образ в облачную платформу. Для этого откройте панель управления Selectel, перейдите в раздел «Облачная платформа». Создайте новый проект, если он еще не создан. 

Откройте раздел «Образы» и нажмите «Создать образ». В качестве источника образа выберите «Файл» и загрузите экспортированный образ из AWS.

Подробная инструкция по загрузке образа — в базе знаний.

Создайте облачный сервер

Откройте раздел «Серверы», нажмите «Создать сервер». 

При создании обязательно:

  • Выберите загруженный образ на этапе выбора источника. Обратите внимание, что доступны только те источники, которые находятся в выбранной зоне доступности.
  • Добавьте плавающий IP-адрес на этапе выбора сети.
  • Добавьте SSH-ключ для доступа к облачному серверу.

После настройки нажмите Создать сервер.

Подробная инструкция по созданию сервера — в базе знаний.

Настройка облачного сервера Selectel

После создания облачный сервер нужно настроить.

Подключитесь к серверу

Сначала подключитесь к серверу:

  • откройте консоль в панели управления (страница сервера, вкладка «Консоль»);
  • или подключитесь по SSH с локальной машины. Для этого введите ssh root@server_ip (server_ip — это IP-адрес облачного сервера, его можно посмотреть на странице сервера, вкладка «Порты»).

Отредактируйте /etc/hosts

  • Откройте файл /etc/hosts, например с помощью nano:

    nano /etc/hosts
  • Удалите записи, относящиеся к AWS.
  • Добавьте новый хостнейм в строку:

    127.0.0.1 localhost hostname

Вместо hostname укажите ваш хостнейм.

Отредактируйте /etc/resolv.conf 

  • Откройте файл /etc/resolv.conf:

    nano /etc/resolv.conf
  • Укажите в файле DNS-серверы:
nameserver 188.93.16.19
nameserver 188.93.17.19

Отредактируйте /etc/apt/sources.list

  • Откройте файл со списком репозиториев:

    sudo nano /etc/apt/sources.list
  • Удалите репозитории, относящиеся к AWS.
  • Добавьте репозитории Selectel: 
deb http://mirror.selectel.ru/ubuntu focal main restricted
deb-src http://mirror.selectel.ru/ubuntu focal main restricted
deb http://mirror.selectel.ru/ubuntu focal-updates main restricted
deb-src http://mirror.selectel.ru/ubuntu focal-updates main restricted
deb http://mirror.selectel.ru/ubuntu focal universe
deb-src http://mirror.selectel.ru/ubuntu focal universe
deb http://mirror.selectel.ru/ubuntu focal-updates universe
deb-src http://mirror.selectel.ru/ubuntu focal-updates universe
deb http://mirror.selectel.ru/ubuntu focal multiverse
deb-src http://mirror.selectel.ru/ubuntu focal multiverse
deb http://mirror.selectel.ru/ubuntu focal-updates multiverse
deb-src http://mirror.selectel.ru/ubuntu focal-updates multiverse
deb http://mirror.selectel.ru/ubuntu focal-backports main restricted universe multiverse
deb-src http://mirror.selectel.ru/ubuntu focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu focal-security main restricted
deb-src http://security.ubuntu.com/ubuntu focal-security main restricted
deb http://security.ubuntu.com/ubuntu focal-security universe
deb-src http://security.ubuntu.com/ubuntu focal-security universe
deb http://security.ubuntu.com/ubuntu focal-security multiverse
deb-src http://security.ubuntu.com/ubuntu focal-security multiverse
deb http://repo.os.selectel.org focal main

Перезагрузите облачный сервер

В разделе Серверы выберите нужный и в меню сервера выберите «Перезагрузка по питанию». 

Заключение

Мы рассмотрели, как мигрировать из AWS в Selectel — создали образ инстанса AWS, перенесли его в S3 bucket, затем на стороне Selectel создали из экспортированного образа облачный сервер и настроили его.