Импорт Linux-машины в облако Azure

Материал из Xgu.ru

Перейти к: навигация, поиск

Импорт Linux-машины в облако Azure — процесс переноса существующей Linux-системы в облако IaaS-типа Microsoft Azure. Кроме собственно подготовки образа существующей системы включает в себя дополнительные шаги, такие как инсталляцию и настройку агента Azure.

Аналогичным образом (за исключением специфических операций типа инсталляции агента, которая требуется не везде, а где требуется выполняется чуть-чуть иначе) выполняется миграция и в другие облачные системы IaaS-типа.

Youtube-big.jpeg

Материалы этой страницы дополнены специально подготовленным видео. Для того чтобы лучше разобраться с представленными здесь материалами, обязательно его посмотрите. Суммарная длительность видео: ~1 час 30 минут.

Содержание

[править] Подробности

Создаём свежий образ гигабайтного размера для примера:

dd if=/dev/zero of=image1 count=1 seek=999 bs=1024k
losetup /dev/loop0 image1
fdisk /dev/loop0
...
mkfs.ext3 /dev/mapper/loop0p1
mount /dev/mapper/loop0p1 /mnt/
debootstrap wheezy /mnt http://mirror.hetzner.de/debian/packages

mount --bind /dev /mnt/dev/
mount --bind /proc /mnt/proc/
mount --bind /proc /mnt/sys/

grub-install --grub-mkdevicemap=/mnt/boot/grub/device.map --no-floppy --root /mnt /dev/loop0
dumpe2fs /dev/mapper/loop0p1 | grep UUID
vim /mnt/boot/grub/grub.cfg

chroot /mnt
## inside chroot:
# passwd

Доточка системы для использования в Azure.

Устанавливаем зависимости:

apt-get install git-core python sudo ssh parted

Выполняем инсталляцию агента:

cd /usr/src/
git clone https://github.com/Azure/WALinuxAgent.git
cd WALinuxAgent
cp waagent /usr/sbin/
chmod 755 /usr/bin/waagent
/usr/sbin/waagent -install

Проверить правильность выполнения инсталляции:

less /var/log/waagent.log


umount /mnt/dev
umount /mnt/proc
umount /mnt/sys

kpartx -d /dev/loop0
losetup -d /dev/loop0

Образ сейчас является загрузочным.

Загрузиться с образа:

qemu-system-x86_64 -vnc :0 -m 256 -hda /dev/loop0 -boot c

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

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

Загрузка выполняется в несколько этапов.

  1. Сконвертировать образ в формат VHD;
  2. Создать учётную запись для хранения (storage account);
  3. Загрузить образ.
$ azure storage account keys list igorstorage1
info:    Executing command storage account keys list
+ Getting storage account keys                                                 
data:    Primary GDEc9C+...==
data:    Secondary O3AxBKD...==
info:    storage account keys list command OK

$ azure vm disk upload image1.vhd http://igorstorage1.blob.core.windows.net/vms/image1.vhd GDEc9C+...==
info:    Executing command vm disk upload
warn:    The total size of blocks 1002 Mb is different
warn:      from declared VHD size 1000.125 Mb
info:    VHD size : 1002 MB
info:    Uploading 710656.5 KB
Requested: 35.1% Completed:  7.5% Running:  96  

Установим конфигурацию

export AZURE_STORAGE_ACCOUNT=igorstorage1
export AZURE_STORAGE_ACCESS_KEY=GDEc9C+...==

Создаём образ виртуальной машины на основе загруженного образа:

azure vm image create image1-2 --os linux  -l 'West Europe' --blob-url https://igorstorage1.blob.core.windows.net:443/vms/image1-2.vhd -v

Теперь в списке образов виртуальных машин появился новый:

$ azure vm image list | grep image1-2
data:    image1-2       User      Linux  

Запустить машину на основе нового образа:

$ azure vm create --location 'North Europe' image1-2-test image1-2 azureuser 'R00tp@$$' 
info:    Executing command vm create
warn:    --vm-size has not been specified. Defaulting to "Small".
+ Looking up image image1-2                                                    
+ Looking up cloud service                                                     
info:    cloud service image1-2-test not found.
+ Creating cloud service                                                       
+ Creating VM                                                                  
info:    vm create command OK

Машина работает:

$ azure vm list
info:    Executing command vm list
+ Getting virtual machines                                                     
data:    Name           Status      Location      DNS Name                    IP Address    
data:    -------------  ----------  ------------  --------------------------  --------------
data:    image1-2-test  CreatingVM  North Europe  image1-2-test.cloudapp.net  100.86.122.153
info:    vm list command OK

Хороший скрипт на эту тему: [1]

[править] Видео

[править] Первая часть, введение

В первой, обзорной части, на примере облака Microsoft Azure рассматриваются общие вопросы миграции Linux-системы в облако IaaS-типа, такие как: устройство образа Linux-системы, таблица разделов, загрузчик и так далее. Рассказывается, какие специальные операции нужно провести с образом, чтобы подготовить его к работе в облаке IaaS: проинсталлировать и настроить агент, перенести своп-раздел и так далее.

Ключевые точки:

  • 00:00 Краткий обзор задачи миграции Linux-системы в облако
  • 02:00 Устройство Linux-образа
  • 03:00 Форматы Linux-образов
  • 05:50 Исчтоники образов Linux-систем
  • 07:00 Таблица разделов, её создание и редактирование
  • 14:00 Загрузка Linux-системы
  • 18:00 Особенности поддержки различных дистрибутивов Linux
  • 19:40 Особенности миграции Linux в облако Microsoft Azure
  • 29:00 Обзор практической задачи выполнямой в части 2


[править] Вторая часть, подготовка образа

Во второй, практической, части показано каким образом подготовить образ с нуля: как создать файл образа, создать на нём таблицу разделов, проинсталлировать загрузчик, установить или скопировать существующую Linux-систему, установить и настроить агент Azure.

Ключевые точки:

  • 00:00 Краткий обзор задачи
  • 01:00 Создание пустого образа
  • 03:00 Создание таблицы разделов
  • 06:30 Отражение таблицы разделов образа на блочные устройства
  • 07:00 Создание файловой системы образа
  • 07:20 Перенесение файловой системы в новый образ
  • 15:00 Инсталляция загрузчика
  • 21:30 Инсталляция агента Azure
  • 27:00 Завершение подготовки образа
  • 29:30 Проверка работоспособности образа

[править] Третья часть, загрузка образа в облако

В третьей, практической, части показано, каким образом существующий образ сконвертировать в формат, пригодный для загрузки в облако (VHD в случае Azure), и загрузить в облако. В деталях продемонстрированы все необходимые операции, выполняющиеся при загрузке образа в облако: создание учётной записи хранилища, создание контейнера в хранилище, собственно загрузка образа, регистрация образа в качестве образа виртуальной машины, готовой к использованию. В завершение продемонстрировано каким образом выполнить обратную операцию — существующую виртуальную машины выгрузить из облака для локального запуска.

Ключевые точки:

  • 00:00 Редактирование существующего образа
  • 02:30 Конвертация RAW-файла в формат VHD
  • 04:30 Проверка azure cli tools
  • 05:30 Создание учётной записи Azure Storage
  • 10:00 Работа с Azure Storage из командной строки
  • 18:30 Создание SSL-сертификата для аутентификации при доступе к машине в облаке
  • 20:30 Запуск машины с импортированного образа
  • 24:50 Подключение к импортированной машине и обзор её изнутри
  • 26:40 Миграция Linux-машины из облака