Программа для E-commerce
Грант 100 000 тенге и 100%-кэшбек на первое пополнение Подробнее
Валюта
Язык

Выберите валюту, в которой будет отображаться стоимость продуктов

Выберите язык сайта. Наличие ресурсов и продуктов могут измениться

Главная/Блог/Статьи/Как перенести виртуальный сервер из AWS в Servercore

Как перенести виртуальный сервер из AWS в Servercore

7 мин. чтения   /   Статьи
1
Подготовка к работе
2
Создание образа инстанса
3
Создание S3-бакета
4
Управление уровнем доступа через AWS IAM
5
Создание сервисной роли
6
Копирование образа инстанса из EC2 AMI в S3-бакет
7
Создание облачного сервера Servercore
8
Загрузка образа
9
Создание облачного сервера
10
Настройка облачного сервера Servercore
11
Заключение

В инструкции рассказываем, как перенести виртуальный сервер Amazon EC2 из AWS в Servercore и настроить его.

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

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

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

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

apt update
apt install cloud-init

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

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

При создании образа рекомендуем не использовать опцию No reboot — попытка создать образ без остановки инстанса может привести к неконсистентности данных и другим сложностям. Обратите внимание, что инстанс будет перезагружен в процессе создания образа:

Созданный образ будет размещен в разделе Amazon Machine Images (AMIs). Дождитесь окончания процесса — образ перейдет в статус Available.

Создание S3-бакета

Создайте контейнер в хранилище Amazon S3 — в него мы поместим образ инстанса.

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

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

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

1. Откройте сервис IAM.

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

Создание сервисной роли

1. Откройте сервис IAM и выберите раздел с ролями Roles.

2. Нажмите Create role и выберите AWS service в Trusted entity type, затем — EC2 в качестве Use case.

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

4. Теперь откройте созданную политику и перейдите в раздел Permissions, а затем нажмите Create inline policy.

5. В редакторе JSON добавьте такой код:




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

6. Убедитесь, что указали правильное имя S3-бакета, в котором будет находиться ваш AMI и затем нажмите Create Policy.

7. Создайте политику доступа к ресурсам AWS. Откройте Policies ⟶ Create Policy. А далее вставьте JSON-файл vmimport.json с таким содержимым:




                                      
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": ["arn:aws:s3:::mys3bucket","arn:aws:s3:::mys3bucket/*"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:CancelConversionTask",
        "ec2:CancelExportTask",
        "ec2:CreateImage",
        "ec2:CreateInstanceExportTask",
        "ec2:CreateTags",
        "ec2:DescribeConversionTasks",
        "ec2:DescribeExportTasks",
        "ec2:DescribeExportImageTasks",
        "ec2:DescribeImages",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstances",
        "ec2:DescribeSnapshots",
        "ec2:DescribeTags",
        "ec2:ExportImage",
        "ec2:ImportInstance",
        "ec2:ImportVolume",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:TerminateInstances",
        "ec2:ImportImage",
        "ec2:ImportSnapshot",
        "ec2:DescribeImportImageTasks",
        "ec2:DescribeImportSnapshotTasks",
        "ec2:CancelImportTask"
      ],
      "Resource": "*"
    }
  ]
}

В файле замените <your_s3bucket> на имя вашего S3 Bucket.

8. В качестве Name* укажите vmimport, затем нажмите Create policy.

9. Следующим шагом нужно «примапить» политику к роли. Откройте созданную роль и перейдите в Entities attached. Далее в Attachвыберите созданную роль.

10. Добавьте Policy пользователю. Откройте Users ⟶ Ваш пользователь ⟶ Permissions и нажмите Add permissions.

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

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

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

1. Установите 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

2. Проверьте корректность установки и настройте AWS CLI:




                                      
aws --version
aws-cli/2.15.36 Python/3.11.8 Linux/6.5.0-26-generic exe/x86_64.ubuntu.22 prompt/off

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-бакет:



                                      
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.

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

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

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

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

Загрузка образа

Для начала загрузите образ в облачную платформу. Для этого откройте панель управления Servercore, перейдите в раздел Cloud platform ⟶ Images. Создайте новый образ (Image).

Откройте раздел Images и нажмите Create image. В качестве источника образа выберите File и загрузите экспортированный образ из AWS.

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

1. Откройте раздел Servers, нажмите Create server, предварительно выбрав локацию размещения.

2. Выберите загруженный образ в разделе Choose another source ⟶ My images ⟶ <ваш образ>. При этом обратите внимание, что доступны только те источники, которые находятся в выбранной зоне доступности.

3. Добавьте публичный IP-адрес (Public или Private + one public IP) на этапе выбора сети. А также добавьте SSH-ключ для доступа к облачному серверу.

4. После настройки нажмите Create.

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

Если автоматически сервер не настроился, это можно сделать вручную.

1. Подключитесь к серверу по SSH, используя публичный IP-адрес и пароль из панели управления.

2. Откройте файл /etc/hosts, удалите все записи, относящиеся к AWS, и добавьте новое имя хоста:

nano /etc/hosts
127.0.0.1 localhost hostname

3. Откройте файл /etc/resolv.conf и добавьте DNS-серверы:



                                      
nano /etc/resolv.conf
nameserver 213.148.0.221
nameserver 213.148.0.222

4. Откройте файл со списком репозиториев и удалите все, относящиеся к AWS. Вместо них добавьте репозитории Servercore:




                                      
sudo nano /etc/apt/sources.list
deb http://kz.mirror.servercore.com/ubuntu jammy main restricted
deb-src http://kz.mirror.servercore.com/ubuntu jammy main restricted
deb http://kz.mirror.servercore.com/ubuntu jammy-updates main restricted
deb-src http://kz.mirror.servercore.com/ubuntu jammy-updates main restricted
deb http://kz.mirror.servercore.com/ubuntu jammy universe
deb-src http://kz.mirror.servercore.com/ubuntu jammy universe
deb http://kz.mirror.servercore.com/ubuntu jammy-updates universe
deb-src http://kz.mirror.servercore.com/ubuntu jammy-updates universe
deb http://kz.mirror.servercore.com/ubuntu jammy multiverse
deb-src http://kz.mirror.servercore.com/ubuntu jammy multiverse
deb http://kz.mirror.servercore.com/ubuntu jammy-updates multiverse
deb-src http://kz.mirror.servercore.com/ubuntu jammy-updates multiverse
deb http://kz.mirror.servercore.com/ubuntu jammy-backports main restricted universe multiverse
deb-src http://kz.mirror.servercore.com/ubuntu jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu jammy-security main restricted
deb-src http://security.ubuntu.com/ubuntu jammy-security main restricted
deb http://security.ubuntu.com/ubuntu jammy-security universe
deb-src http://security.ubuntu.com/ubuntu jammy-security universe
deb http://security.ubuntu.com/ubuntu jammy-security multiverse
deb-src http://security.ubuntu.com/ubuntu jammy-security multiverse
deb [arch=all signed-by=/usr/share/keyrings/openstack.gpg] https://kz.mirror.servercore.com/3rd-party/cloud-init-deb/jammy/ jammy main

5. Последним этапом нужно перезагрузить сервер:



                                      
sudo reboot

Готово — все изменения вошли в силу, с сервером можно работать.

Заключение

Мы рассмотрели, как мигрировать из AWS в Servercore: создали образ инстанса AWS, перенесли его в S3-бакет, затем создали из него облачный сервер. Если у вас остались вопросы, пишите в комментариях!

Была ли эта статья полезной для вас?
Главная/Блог/Статьи/Как перенести виртуальный сервер из AWS в Servercore
Подпишитесь на нашу рассылку
Мы будем держать вас в курсе всего, что происходит в облаках и на серверах.