Назад | Перейти на главную страницу

Как я могу запускать образы Rackspace локально?

Как говорится в названии, я регулярно загружаю свои образы Rackspace для резервного копирования своего VPS, однако мне интересно, можно ли запускать их локально на KVM (например), чтобы я мог запускать тесты в своем приложении без воздействия на производство.

Почти через год после первоначального вопроса, я думаю, у меня есть хорошая процедура для загрузки образов Rackspace и их локального запуска под Xen работает на Ubuntu Precise.

Я запишу здесь шаги, чтобы вы могли следовать легкому рецепту, если хотите попробовать. Шаги работают по крайней мере для Linux / Ubuntu domU, для других YMMV.

(Эти инструкции также размещены в нашем блоге по адресу http://www.everichon.com/blog/2013/05/29/running-rackspace-images-locally/)

  1. Установите точную версию Ubuntu (12.04 LTS) и выполните действия, указанные в http://blog.heidt.biz/blog/2012/09/17/setting-up-ubuntu-12-dot-04-precise-pangolin-as-xen-dom0/ чтобы настроить ваш сервер как Xen Dom0. По крайней мере, убедитесь, что у вас работает 12.04 с установленными xen и xe-tools, а также группа томов LVM для использования для виртуальных дисков для вашего DomU.

  2. Перейдите на страницу своих серверов в облаке Rckspace (manage.rackspacecloud.com -> Hosting -> Cloud servers) и выберите тот, который хотите запустить локально. Перейти к Images вкладка для этого сервера. Создайте изображение по запросу. (В зависимости от времени, когда сервер был впервые создан, изображение по требованию будет либо попадать непосредственно в облачные файлы, либо сохраняться на сервере. Если изображение хранится на сервере, вы должны переместить его в облачные файлы после создания.)

  3. Проверьте название изображения в облачных файлах. Перейти к Hosting -> Cloud Files и откройте контейнер cloudservers. Там должен быть файл с именем myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0, и это тот файл, который вам нужен.

  4. Загрузите образ на свой сервер. Самый простой способ сделать это в Ubuntu 12.04 - использовать swift. Для установки просто sudo apt-get install swift. Затем запустите его как swift -A https://auth.api.rackspacecloud.com/v1.0 -U username -K API_key download cloudservers myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0

  5. Когда загрузка будет завершена, распакуйте загруженный файл (tar zxf myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0). Когда это будет сделано, вы получите следующие файлы:

    image
        -> image.vhd
        -> manifest.ovf
        -> snap.vhd
    

    image.vhd это тот, который нас интересует, так как он содержит ваш корневой раздел с облачного сервера.

  6. Чтобы упростить работу с файлом образа, мы конвертируем его в необработанный образ диска. Это делается с помощью qemu-img (если он недоступен в вашей системе, сделайте sudo apt-get install qemu-utils). Чтобы преобразовать image.vhd во что-то, с чем проще работать, выполните qemu-img convert -p image.vhd disk.img

  7. Проверьте образ диска с помощью fdisk. (ПРИМЕЧАНИЕ: я работал только с большими изображениями размером 20 ГБ из стеллажа, и мои заметки посвящены им. Если вы используете другой размер, вам придется соответствующим образом изменить некоторые шаги!) fdisk -l disk.img должен дать что-то вроде следующего:

    Disk sda1.img: 20.4 GB, 20400758784 bytes
    255 heads, 63 sectors/track, 2480 cylinders, total 39845232 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
       Device Boot      Start         End      Blocks   Id  System
    disk.img1   *        2048    39845887    19921920   83  Linux
    

    Обратите внимание на начальное смещение для первого раздела и размер сектора.

  8. (Необязательно) Убедитесь, что образ диска в порядке. Для этого монтируем его по шлейфу и просто видим, что он работает.

    mkdir tmp
    mount -o loop,offset=1048576 disk.img tmp/
    ls -la tmp
    (The offset above is start for the first partition * sector size) 
    

    Это указывает на то, что с диском все в порядке. Затем размонтируйте образ. umount tmp

  9. Создайте логические тома и тома подкачки для вашего нового DomU. lvcreate -L20G -n myservername-disk vg0 и lvcreate -L2G -Cy -n myservername-swap vg0. Также инициализируйте диск подкачки, mkswap /dev/vg0/myservername-swap.

  10. Скопируйте образ диска на новый логический том. dd if=disk.img of=/dev/vg0/myservername-disk bs=4096 skip=256. В bs и skip аргументы нужны, чтобы получить правильное смещение для вашего раздела. Я мог бы пойти с bs=512 skip=2048, конечно, но увеличение размера блока значительно ускоряет копирование. (И 512 * 2048 = 4096 * 256, поэтому смещение не имеет значения.)

  11. Проверьте файловую систему на логическом томе (и исправьте ошибки), измените размер файловой системы, чтобы она соответствовала уровню lv, и повторите проверку.

    e2fsck -f /dev/vg0/myservername-disk
    resize2fs -p /dev/vg0/myservername-disk 
    e2fsck -f /dev/vg0/myservername-disk     
    
  12. Проверьте настройки виртуального диска на вашей виртуальной машине. Это понадобится для вашего файла конфигурации DomU. Смонтируйте логический том. mount /dev/vg0/myservername-disk tmp. Затем проверьте файл fstab и (если он существует) grub menu.lst файл.

    more tmp/etc/fstab
    more tmp/boot/grub/menu.lst 
    

    Обратите внимание на имена дисков для root и swap!

  13. Обновите настройки сети для вашего DomU. Пока виртуальный диск все еще смонтирован, отредактируйте interfaces файл в то, что подходит для вашей локальной среды. vi tmp/etc/network/interfaces. Обычно я менял свое с чего-то вроде:

    # The loopback network interface
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
        address 184.106.XXX.YYY
        netmask 255.255.XXX.YYY
        gateway 184.106.XXX.YYY
        dns-nameservers 173.203.XXX.YYY 173.203.XXX.YYY
    
    auto eth1
    iface eth1 inet static
        address 10.179.XXX.YYY
        netmask 255.255.XXX.YYY
    up route add -net 10.176.XXX.YYY0 netmask 255.240.XXX.YYY gw 10.179.XXX.YYY
    down route del -net 10.176.XXX.YYY netmask 255.240.XXX.YYY gw 10.179.XXX.YYY
    up route add -net 10.191.XXX.YYY netmask 255.255.XXX.YYY gw 10.179.XXX.YYY
    down route del -net 10.191.XXX.YYY netmask 255.255.XXX.YYY gw 10.179.XXX.YYY
    

    (для среды стойки) в:

    # The loopback network interface
    auto lo
    iface lo inet loopback
    
    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    

    просто для использования dhcp и одного виртуального сетевого интерфейса и моего локального сервера. После этих изменений все должно быть готово. Отключите виртуальный диск, umount tmp.

  14. Создайте файл конфигурации xen для импортированного DomU, vi /etc/xen/myservername.cfg, и введите что-то вроде этого:

    name = "myservername"
    
    bootloader = '/usr/lib/xen-default/bin/pygrub'
    
    #uncomment the following if you want to boot into single user mode 
    #extra = " single"
    
    vcpus       = '2'
    memory      = '512'
    
    #
    #  Disk device(s). (Use the correct mappings from step 12.) 
    #
    disk        = [
                      'phy:/dev/vg0/myservername-disk,xvda1,w',
                      'phy:/dev/vg0/myservername-swap,xvda2,w',
                  ]
    #
    #  Networking
    #
    vif         = [ 'bridge=xenbr0' ]
    #
    #  Behaviour
    #
    on_poweroff = 'destroy'
    on_reboot   = 'restart'
    on_crash    = 'restart'
    

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

  15. Теперь все должно быть готово! Для проверки создайте domU и подключите консоль, запустив xm create -c /etc/xen/myservername.cfg

Да, вы можете запускать их, они используют гипервизор Xen IIRC. Вы также можете загрузить и установить Openstack и получить собственное частное облако.

Вот хорошая ссылка на «Запустить Rackspace Cloud Server локально на Hyper-V»

http://www.sudonym.com/375/run-rackspace-cloud-server-locally-on-hyper-v