OpenStack Nova를 위한 Ubuntu 미러링

최근에 너무 바빠서 Mesh Potato의 프로젝트에 시달려서 아무것도'분포식, 집단'이라는 물건에 묻으면 일이 유난히 복잡해진다. Asterisk 서버 한 대가 VoIP를 하기가 쉽고 n대의 Asterisk 서버가 집단을 하기가 쉽지 않다.Xen/KVM 서버 한 대는 가상 머신을 만드는 것이 쉽고, n대의 Xen/KVM 서버는 클라우드 컴퓨팅을 하는 것이 그리 쉽지 않다.지난주에 우리는 Ubuntu에 OpenStack Nova를 설치하고 설정하는 것을 소개했고, 오늘은 OpenStack Nova 환경에서 가상 기기 템플릿(거울)을 만드는 방법과 가상 기기 운행 실례를 만드는 방법을 소개한다.VPSee는 우리가 평소에 말하는'VMware/Xen/KVM/VirtualBox 가상기'와 구분하기 위해 OpenStack Nova, OpenNebula 같은 클라우드 컴퓨팅 플랫폼에서 실행되는 가상기를'클라우드 가상기'라고 부른다.간단하게 말하면 OpenStack Nova 플랫폼에서 ubuntu 가상 머신을 실행하는 절차는 먼저 ubuntu 가상 머신 이미지 (템플릿) 를 만들고 이 이미지를 템플릿으로 ubuntu 가상 머신 (실례) 을 만드는 것이다.
Ubuntu 미러 설치
설치할 ubuntu 버전을 먼저 다운로드합니다.

$ wget http://releases.ubuntu.com/lucid/ubuntu-10.04.2-server-amd64.iso

10GB 크기의 하드 드라이브(raw 형식)를 만듭니다.

$ kvm-img create -f raw ubuntu.img 10G
Formatting 'ubuntu.img', fmt=raw size=10737418240

방금 다운로드한 ubuntu '설치 디스크'와 새로 만든' 하드디스크 '가이드 시스템을 사용합니다. 간단하게 보기 위해서 VPSee는kvm 가상 기술을 사용하여xen의 번거로운 설정을 피합니다.vnc 매개 변수는 설치 작업을 위해 다른 시스템에서 이 부트 인터페이스에 원격으로 로그인할 수 있도록 vnc 액세스를 엽니다.

$ sudo kvm -m 512 -cdrom ubuntu-10.04.2-server-amd64.iso \
-drive file=ubuntu.img,if=scsi,index=0 -boot d -net nic -net user -nographic -vnc :0

vncviewer로 안내 인터페이스에 로그인한 후 화면의 알림에 따라 ubuntu 설치 작업을 완료합니다. (자신의 컴퓨터에 ubuntu를 설치하는 과정과 같습니다.)주의해야 할 것은 섹션 단계에서 10GB 하드디스크를 모두 ext4 루트 섹션으로 나누는 것입니다. 여러 개의 섹션을 만들지 말고 swap 섹션을 만들지 마십시오.

$ vncviewer 172.16.39.111:5900

설치가 끝난 후 종료 (필요할 때kill에서kvm 프로세스를 떨어뜨리기) 다음 명령에 따라 설치된 가상 머신 이미지 ubuntu를 시작합니다.img, failed to find romfile "pxe-rtf8139.bin"오류 메시지가 나타나면 kvm-pxe 설치를 통해 해결할 수 있습니다.

$ sudo kvm -m 512 -drive file=ubuntu.img -boot c -nographic -vnc :0
kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"

$ sudo apt-get install kvm-pxe

가상 머신 이미지에 다시 vnc로 로그인하고 필요한 도구를 설치합니다. (이 이미지는 템플릿이 될 수 있기 때문에 물건을 함부로 설치하지 않도록 최소화하는 것이 좋습니다.)

$ vncviewer 172.16.39.111:5900

$ sudo update
$ sudo upgrade
$ sudo apt-get install openssh-server cloud-init

70-persistent-net.rules는 자동으로 다른 네트워크 인터페이스를 추가합니다. 이 파일을 삭제하여eth0을 제외한 인터페이스를 자동으로 추가하지 않도록 해야 합니다.제거 후 시스템이 기본적으로 준비되어 가상 머신을 종료합니다.

$ sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

$ sudo shutdown -h now

Ubuntu 미러 조정
OpenStack은 ext4 파일 시스템 형식의 렌즈만 받아들일 수 있기 때문에 위에서 만든raw 렌즈(kvm-img create-f raw)를 ext4 렌즈로 변환해야 합니다.다음 단계에서는 미러 파일의 조닝(Zoning) 시작점이 어디에 있는지 확인합니다.

$ sudo losetup -f ubuntu.img
$ sudo losetup -a
/dev/loop0: [fb00]:24117291 (/home/vpsee/ubuntu.img)

$ sudo fdisk -cul /dev/loop0

Disk /dev/loop0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 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: 0x000502e6

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *        2048    20969471    10483712   83  Linux

위의 마지막 줄에 표시된 구역은 섹터(sector) 2048에서 시작하고 각 섹터는 512바이트이기 때문에 2048x512=1048576바이트에서 시작합니다.이 1048576을 기억하세요. 다음에 쓰일 거예요.
loop을 제거한 후 1048576바이트부터 다시 마운트:

$ sudo losetup -d /dev/loop0

$ sudo losetup -f -o 1048576 ubuntu.img
$ sudo losetup -a
/dev/loop0: [fb00]:24117291 (/home/vpsee/ubuntu.img), offset 1048576

이 모든 구역을 새 파일로 복사하는 것은 우리가 원하는 ext4 파일 시스템 이미지입니다.

$ sudo dd if=/dev/loop0 of=ubuntutemplate.img
20969472+0 records in
20969472+0 records out
10736369664 bytes (11 GB) copied, 107.455 s, 99.9 MB/s

loop을 사용한 후 마운트 해제:

$ sudo losetup -d /dev/loop0

새로 만든 ext4 파일 시스템 이미지를 마운트하고, 섹션 마운트 테이블 (/etc/fstab) 을 수정하고, 주석을 달거나 삭제하고, UUID=uec-rootfs 줄을 추가합니다.

$ sudo mount -o loop ubuntutemplate.img /mnt

$ sudo vi /mnt/etc/fstab
#UUID=1dc3a59e-faab-41ee-b232-3300163676bf / ext4 errors=remount-ro 0 1
UUID=uec-rootfs                           / ext4 defaults          0 0

다음에 가상 머신 이미지와 함께 OpenStack 클라우드에 발표할 수 있도록 메모리 디스크 (initrd) 파일을 복사합니다.가상 머신 미러를 사용한 후 마운트 해제(unmount)를 잊지 마십시오.

$ sudo cp /mnt/boot/vmlinuz-2.6.32-28-server /home/vpsee/
$ sudo cp /mnt/boot/initrd.img-2.6.32-28-server /home/vpsee/

$ sudo umount /mnt

아까 가상 머신 거울 ubuntutemplate.img의 파일 시스템 플래그를'uec-rootfs'로 변경합니다.

$ sudo tune2fs -L uec-rootfs ubuntutemplate.img
tune2fs 1.41.14 (22-Dec-2010)

Ubuntu 미러 게시
자, ubuntu 렌즈가 완성되었습니다. 이제 구름에 발표할 수 있습니다. 3개의 물건이 필요합니다. 가상 컴퓨터의 내장 파일, 가상 컴퓨터의 메모리 디스크 파일과 가상 컴퓨터의 렌즈 파일:

$ uec-publish-image -t image --kernel-file vmlinuz-2.6.32-28-server \
--ramdisk-file initrd.img-2.6.32-28-server amd64 ubuntutemplate.img mybucket
ami-00000006	mybucket/ubuntutemplate.img.manifest.xml

잠시 기다리면 아미-0000000 6 mybucket/ubuntutemplate가 나타납니다.img.manifest.xml은 우리가 방금 만든 ubuntu 렌즈가 클라우드에 정식으로 발표되었는데, 이후에 이 렌즈를 모델로 가상 기기의 실례를 신속하게 생성할 수 있음을 나타낸다.euca-describe-images를 사용하여 다음을 볼 수 있습니다.

$ euca-describe-images

IMAGE	aki-00000001	mybucket/vmlinuz-2.6.32-28-server.manifest.xml		availablpublic		x86_64	kernel
IMAGE	ari-00000002 	mybucket/initrd.img-2.6.32-28-server.manifest.xml		available	public		x86_64	ramdisk
IMAGE	ami-00000003	mybucket/ubuntutemplate.img.manifest.xml		untarring	public		x86_64	machine	aki-00000001	ari-00000002

첫 번째 Ubuntu VM 인스턴스
ubuntu 렌즈 (템플릿) 가 생기면 이 '렌즈' 를 템플릿으로 클라우드 컴퓨팅 사용자를 위해 n개의 ubuntu 가상 기기 (운영체제) 실례를 만들 수 있지만, 실행하기 전에 키가 필요합니다.

$ euca-add-keypair mykey > mykey.priv
$ chmod 600 mykey.priv 

$ euca-describe-keypairs
KEYPAIR	mykey	76:7d:93:88:a0:e5:3e:5d:4b:62:cd:85:c5:23:7a:05

$ euca-run-instances -k mykey -t m1.tiny ami-00000003
RESERVATION	r-n0lpdme5	mycloud	default
INSTANCE	i-00000001	ami-00000003			scheduling	mykey (mycloud, None)	0		m1.tin2011-05-20T14:00:34Z	unknown zone

위에서 euca-run-instances를 사용하여 실례를 만들면nova-manage 명령으로 볼 수 있습니다.

$ sudo nova-manage vm list
instance   node            type       state      launched            image        kernel       ramdisk       project    user       zone       index
i-00000001 node01           launching  None                3            1            2             mycloud    vpsee       None       0

전편: Ubuntu에 OpenStack Nova를 설치하고 설정하는 네트워크 부분을 기억하십니까?현재 구름 속의 IP 분배 상황을 볼 수 있습니다.

$ sudo nova-manage network list
network           	netmask        	start address  	DNS
192.168.3.0/25    	255.255.255.128	192.168.3.3    	None

방금 euca-run-instances로 시작된 ubuntu 가상 기기의 실례적인 IP는 192.168.3.3에서 시작되었기 때문에 ssh가 이 IP에 로그인하면 우리의 첫 번째 클라우드 가상 기기에 올랐다.

$ ssh 192.168.3.3
vpsee@i-00000001:~$

Windows 가상 컴퓨터 렌즈를 만들고 싶다면 OpenStack Nova를 위한 Windows 렌즈를 만들어 보세요.

좋은 웹페이지 즐겨찾기