Как я могу запустить образы Rackspace локально?
Как видно из заголовка, я регулярно загружаю свои образы Rackspace для резервного копирования моего VPS, однако мне интересно, возможно ли их запускать локально на KVM (например), чтобы я мог запускать тесты для своего приложения без привязки к работе.
3 ответа
Спустя почти год после первого вопроса, я думаю, у меня есть хорошая процедура для загрузки образов Rackspace и их локального запуска под Xen на Ubuntu Precise.
Я напишу шаги здесь, так что есть простой рецепт для вас, если вы хотите попробовать его. Шаги работают для Linux/Ubuntu, по крайней мере, для других YMMV.
(Эти инструкции также размещены в нашем блоге по адресу http://www.everichon.com/blog/2013/05/29/running-rackspace-images-locally/).
Установите Ubuntu Precision (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.
Перейдите на страницу ваших серверов в облаке RackSpace (
manage.rackspacecloud.com -> Hosting -> Cloud servers
) и выберите тот, который вы хотите запустить локально. Перейти кImages
вкладка для этого сервера. Создайте изображение по требованию. (В зависимости от времени, когда сервер был впервые создан, изображение по требованию будет либо напрямую отправляться в облачные файлы, либо сохраняться на сервере. Если изображение хранится на сервере, его необходимо переместить в облачные файлы после создания.)Проверьте имя изображения в облачных файлах. Идти к
Hosting -> Cloud Files
и откройте контейнерcloudservers
, Там должен быть файл с именем вродеmyservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0
и это файл, который вы хотите.Загрузите изображение на свой сервер. Самый простой способ сделать это на 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
Когда загрузка будет завершена, распакуйте загруженный файл (
tar zxf myservername_YYYYMMDD_XXXXX_cloudserverZZZZZ.tar.gz.0
). Когда это будет сделано, вы получите следующие файлы:image -> image.vhd -> manifest.ovf -> snap.vhd
image.vhd
это тот, который нас интересует, так как он содержит ваш корневой раздел с облачного сервера.Чтобы упростить работу с файлом образа, мы преобразуем его в необработанный образ диска. Это делается с помощью
qemu-img
(если это не доступно в вашей системе, сделайтеsudo apt-get install qemu-utils
). Чтобы преобразовать image.vhd во что-то, с чем легче работать, сделайтеqemu-img convert -p image.vhd disk.img
Проверьте образ диска с помощью 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
Обратите внимание на начальное смещение для первого раздела и размер сектора.
(Необязательно) Проверьте, что образ диска в порядке. Для этого мы монтируем его loopback и просто видим, что он работает.
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
Создайте логические и поменяйте тома для вашего нового DomU.
lvcreate -L20G -n myservername-disk vg0
а такжеlvcreate -L2G -Cy -n myservername-swap vg0
, Также инициализируйте диск подкачки,mkswap /dev/vg0/myservername-swap
,Скопируйте образ диска на новый логический том.
dd if=disk.img of=/dev/vg0/myservername-disk bs=4096 skip=256
,bs
а такжеskip
есть аргументы, чтобы получить правильное смещение для вашего раздела. Я мог бы пойти сbs=512 skip=2048
Конечно, но увеличение размера блока значительно ускоряет копирование. (И 512*2048 = 4096*256, поэтому это не имеет значения для смещения.)Проверьте файловую систему на вашем логическом томе (и исправьте все ошибки), измените размер fs, чтобы соответствовать lv, и проверьте снова.
e2fsck -f /dev/vg0/myservername-disk resize2fs -p /dev/vg0/myservername-disk e2fsck -f /dev/vg0/myservername-disk
Проверьте настройки виртуального диска на вашей виртуальной машине. Это будет необходимо для вашего конфигурационного файла DomU. Смонтируйте логический том.
mount /dev/vg0/myservername-disk tmp
, Затем проверьте файл fstab и (если он существует) grubmenu.lst
файл.more tmp/etc/fstab more tmp/boot/grub/menu.lst
Обратите внимание на имена дисков для root и swap!
Обновите настройки сети для вашего 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
,Создайте файл конфигурации 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.
Теперь все должно быть готово! Для проверки создайте 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