Миграция из AWS в Selectel
Инструкция о том, что нужно сделать, чтобы мигрировать из AWS в Selectel. Рассказываем про создание образа инстанса AWS, переносе его в S3 bucket и создание облачного сервера Selectel.
Читайте также:
→ Как мигрировать из Google Cloud Platform
→ Как мигрировать из DigitalOcean
Введение
В инструкции мы расскажем, как перенести инстанс (виртуальную машину) Amazon EC2 из AWS в Selectel. Для миграции нужно:
- Создать образ инстанса AWS.
- Создать S3 bucket (контейнер в хранилище AWS) и экспортировать в него образ.
- Загрузить образ из хранилища AWS на локальный ПК.
- Развернуть из образа облачный сервер в 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 создали из экспортированного образа облачный сервер и настроили его.