OpenStack Class2014.12.17 20:49

안녕하세요~!!

요즘 날씨가 정말 추워졌습니다. 출퇴근하실때 정말 옷깃을 단단히 여미고 다니셔야 될 듯 합니다. 

오늘은 컴퓨트 노드를 설치해 볼까 합니다. 지난시간에는 네트워크 노드를 설치했었는데 오늘은 컴퓨트 노드 설치 차례입니다. 그럼, 시작해 볼까요~~~


인스턴스를 생성하는 컴퓨트 노드를 설치해 보자

컴퓨트 노드는 가상서버 즉 인스턴스를 생성하는 하이퍼바이저, 네트워크 IP 및 통신을 담당하는 Neutron이 기본으로 설치됩니다. 여분의 하드디스크가 있느냐에 따라 CinderSwift Storage 서버를 구성하기도 합니다. 여기서는 오픈스택의 기본 하이퍼바이저인 KVMNova 클라이언트, Neutron 클라이언트, Cinder 볼륨, Swift Storage 서버들을 설치하겠습니다.

 

네트워크 인터페이스 설정

컴퓨트 노드는 컨트롤러 노드와 통신할 관리용 IP 하나, 인스턴스들간의 네트워크 경로인 내부 IP 하나가 필요합니다. 그러므로 컴퓨트 노드에 필요한 최소 네트워크 인터페이스 카드는 2장입니다.

 

1.     /etc/network/interface 파일을 열어 eth0은 모니터링 및 관리용 IP로 설정하고, eth1은 내부 IP로 설정합니다.

$ sudo vi /etc/network/interfaces

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

auto eth0

iface eth0 inet static

           address 10.10.15.31

           netmask 255.255.255.0

           gateway 10.10.15.1

        dns-nameservers 8.8.8.8

 

auto eth1

iface eth1 inet static

           address 10.10.10.31

           netmask 255.255.255.0

 

2.     /etc/hosts 파일에는 네트워크 노드, 컨트롤러 노드, 컴퓨트 노드의 관리용 IP를 등록합니다.

$ sudo vi /etc/hosts

# compute1

10.10.15.31       compute1

# controller

10.10.15.11       controller

# network

10.10.15.21       network

 

3.     네트워크 인터페이스 설정이 완료되면 우분투 서버에 적용할 수 있게 다음과 같이 네트워크 서비스를 재시작합니다.

$ sudo service networking stop && sudo service networking start

*** 이부분은 컨트롤러 노드나 네트워크 노드와 같습니다. Ubuntu Server 14.04 LTS 버전에서 오픈스택을 설치하시는 분이시라면 당연히 위와 같이 설정을 해 주어야 합니다. 그런데, 14.04 LTS 버전에서 네트워크 설정시 문제가 발생한다고 하였습니다. 저는 그래서, Ubuntu 12.04 LTS 버전에서 설치를 했었습니다. 해결 방법은 아래 블로그에 포스팅해 드렸으니 참조하시길 바랍니다.


 [Ubuntu] Ubuntu 14.04와 13.10에 대한 Networking 서비스 차이


NTP 설치

네트워크 노드와 마찬가지로 ntp(netowk time protocol)를 설치하고 컨트롤러 노드와 시간을 동기화시킵니다.

 

1.     Apt-get을 이용해서 ntp를 설치합니다.

$ sudo apt-get install ntp

 

2.     Ntpudate를 이용해서 컨트롤러 노드의 NTP 서버와 시간을 동기합니다.

$ sudo ntpdate -u 10.10.15.11
28 May 15:04:20 ntpdate[1961]: step time server 10.10.15.11 offset -458349.411737 sec

 

3.     동기화된 시간은 다음과 같은 명령어로 하드웨어 시간인 BIOS 시간과 다시 동기화합니다.

$ sudo hwclock -w

 


데이터 베이스 설치

네트워크 노드와 마찬가지로 컴퓨트 노드도 Apt-get을 이용해서 Python Mysql API만 설치합니다.


1.     Apt-get을 이용하여 Python Mysql API를 설치합니다.

$ sudo apt-get install python-mysqldb



Packages 설치

네트워크 노드와 마찬가지로 컴퓨트 노드에도 패키지가 설치되어야 합니다. 패키지 설치 방법은 컨트롤러 노드와 네트워크 노드와 동일합니다.

 

1.     apt-get을 이용하여 python-software-properties를 설치하고, 레파지토리에 icehouse를 추가합니다.

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository cloud-archive:icehouse

 ** "오픈스택을 다루는 기술"에서는 IceHouse 버전으로 오픈스택을 설치했습니다. 그러나 얼마전에 Juno가 릴리즈되었죠~!! Juno를 설치하시고 싶으신 분들은 클라우드 아카이브를 설정하실때 아래와 같이 juno로 설정하시면 됩니다.

$ sudo add-apt-repository cloud-archive:juno  


2.     패키지가 설치되면 시스템 업데이트 및 업그레이드를 실행합니다.

$ sudo apt-get update

$ sudo apt-get dist-upgrade

 

3.     이때 네트워크 노드의 우분투 버전이 12.04 라면 아래와 같이 백포트된 리눅스 커널을 설치해야 합니다. 리눅스 커널은 Neutron을 사용할 경우에는 설치하는 것이 좋고, Nova-network를 사용할 경우라면 설치하지 않아도 됩니다.

$ sudo apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy

 

4.     패키지 설치와 시스템 업그레이드가 완료되면 시스템을 재 부팅합니다.

$ sudo reboot



Nova 컴퓨트 설치

데이터베이스까지 설치가 완료되면 오픈스택의 기본 하이퍼바이저인 KVMNova 컴퓨트를 설치해야 합니다. KVM Native 방식이므로 CPU가 가상화를 지원해야만 설치할 수 있습니다. 그러면 지금부터 컴퓨트 서비스인 Nova를 설치하겠습니다.

 

1.     먼저 다음과 같은 명령어로 CPU가 가상화를 지원하는지 확인합니다.

$ egrep -c '(vmx|svm)' /proc/cpuinfo
4


2.     CPU가 가상화를 지원하는지 확인했으면 하이퍼바이저와 nova 컴퓨트를 설치합니다. 설치 시 보이는 python-guestfs는 파일을 생성할 수 있는 파이썬 라이브러리입니다. Nova는 이 라이브러리를 이용해 KVM이나 QEMU의 가상 인스턴스를 생성합니다.

$ sudo apt-get install nova-compute-kvm python-guestfs qemu-kvm

 

3.     일반 계정에서 하이퍼바이저를 읽고 쓰지 못하게 하기 위해서 다음과 같이 Root만 읽고 쓰기를 할 수 있도록 접근 권한을 변경합니다.

$ sudo dpkg-statoverride  --update --add root root 0644 /boot/vmlinuz-$(uname -r)

  

4.     한번 더 커널 버전에서 일반 사용자들의 접근을 막을 수 있도록 /etc/kernel/postinst.d/statoverride 파일을 생성해서 다음과 같이 입력합니다.

$ sudo vi /etc/kernel/postinst.d/statoverride
#!/bin/sh
version="$1"
# passing the kernel version is required
[ -z "${version}" ] && exit 0
dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}

 

5.     생성한 statoverride 파일이 항상 실행될 수 있도록 실행 권한을 추가합니다.

$ sudo chmod +x /etc/kernel/postinst.d/statoverride

 

6.     하이퍼바이저의 보안 설정이 완료되면 /etc/nova/nova.conf 파일을 다음과 같이 수정합니다. nova.conf에는 RabbitMQ 정보, VNC 정보, 데이터베이스 및 Keystone 정보들이 포함됩니다.

$ sudo vi /etc/nova/nova.conf
[DEFAULT]
...
auth_strategy = keystone
...
rpc_backend = rabbit
rabbit_host = 10.10.15.11
rabbit_password = rabbitpass
...
my_ip = 10.10.15.31
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 10.10.15.31
novncproxy_base_url = http://10.10.15.11:6080/vnc_auto.html
...
glance_host =10.10.15.11
...
[database]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://nova:novadbpass@10.10.15.11/nova
 
[keystone_authtoken]
auth_uri = http://10.10.15.11:5000
auth_host =10.10.15.11
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = novapass


7.     기본 데이터베이스가 mysql이므로 불필요한 sqlite 파일을 삭제하고 nova-compute 서비스를 재시작합니다.

$ sudo rm /var/lib/nova/nova.sqlite
$ sudo service nova-compute restart

 


이렇게해서 컴퓨트 노드에 반드시 설치되어야 할 기본 서비스들과 KVM 하이퍼바이저, 그리고 Nova Compute를 설치해 보았습니다. 다음 시간에는 Neutron 클라이언트와 Cinder 볼륨을 설치해 보도록 하겠습니다. 

Posted by 나리 짱!!! naleejang