티스토리 뷰

드디어 6장까지 모두 올렸습니다. 요즘은 JUNO가 릴리즈되어서 대부분 JUNO 설치 테스트를 주로 하지만, 아직도 현장에서는 CentOS6.5를 많이 사용하고 있기 때문에 IceHouse 버전이 아직까지는 많이 설치되고 있습니다. 

그럼, 다음 포스팅에서부터는 7장 오픈스택 운영하기 편을 올려드리도록 하겠습니다.


Nova Compute 설치

패키지 설치가 완료되고 시스템을 재부팅하면 Nova Compute를 설치해야 합니다.

 

1.     먼저 openstack-nova-compute를 설치합니다.

# yum install openstack-nova-compute

 

2.     Openstack-config를 이용해서 /etc./nova/nova.conf에 데이터베이스 정보와 Keystone 정보를 설정합니다.

# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:novadbpass@10.10.15.11/nova
# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://10.10.15.11:5000
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host 10.10.15.11
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password novapass

 

3.     이번에는 메시지 서비스 정보를 설정합니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid
# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname 10.10.15.11

 

4.     가상 인스턴스의 콘솔 접속을 위한 VNCSERVER 정보를 설정합니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 10.10.15.21
# openstack-config --set /etc/nova/nova.conf DEFAULT vnc_enabled True
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_listen 0.0.0.0
# openstack-config --set /etc/nova/nova.conf DEFAULT vncserver_proxyclient_address 10.10.15.21
# openstack-config --set /etc/nova/nova.conf DEFAULT novncproxy_base_url http://10.10.15.11:6080/vnc_auto.html

 

5.     이미지를 가져오기 위한 Glance 정보를 설정합니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT glance_host 10.10.15.11

 

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

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

 

7.     Nova-compute 서비스를 재시작합니다.

# service libvirtd start
Starting libvirtd daemon:                                  [  OK  ]
# service openstack-nova-compute start
Starting openstack-nova-compute:                           [  OK  ]
# chkconfig libvirtd on
# chkconfig openstack-nova-compute on

 

Nova Network 설치

하이퍼바이저와 Nova-compute를 설치했으면 이번에는 네트워킹을 위한 Nova network를 설치해야 합니다. 그럼 지금부터 nova-network를 설치해 보겠습니다.

 

1.     Yum install을 이용해서 openstack-nova-networkopenstack-nova-api를 설치합니다.

# yum install openstack-nova-network openstack-nova-api

 

2.     Openstack-config를 이용해서 /etc/nova/nova.conf 파일에 nova-network를 설정합니다.

# openstack-config --set /etc/nova/nova.conf DEFAULT \
  network_api_class nova.network.api.API
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  security_group_api nova
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  network_manager nova.network.manager.FlatDHCPManager
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  network_size 254
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  allow_same_net_traffic False
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  multi_host True
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  send_arp_for_ha True
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  share_dhcp_address True
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  force_dhcp_release True
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  flat_network_bridge br100
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  flat_interface eth1
# openstack-config --set /etc/nova/nova.conf DEFAULT \
  public_interface eth1

 

3.     Nova-network 서비스를 시작합니다. 그리고 부팅 시 자동 시작될 수 있도록 설정합니다.

# service openstack-nova-network start
Starting openstack-nova-network:                           [  OK  ]
# service openstack-nova-metadata-api start
Starting openstack-nova-metadata-api:                      [  OK  ]
# chkconfig openstack-nova-network on
# chkconfig openstack-nova-metadata-api on

 


 

Nova-network 생성

Nova-network 설치 및 환경설정이 모두 완료되면 인스턴스 생성 시 사용할 네트워크를 생성해야 합니다.

 

1.     우선 Keystone 사용자 계정 생성 테스트 시 만들어 둔 사용자 정보를 export합니다.

# source admin-openrc.sh

 

2.     Nova network-create 명령을 이용해 다음과 같이 demo-net 을 하나 생성합니다.

# nova network-create demo-net --bridge br100 --multi-host T \
  --fixed-range-v4 192.168.0.24/29

 

인스턴스 생성

Nova-network가 생성되면 인스턴스를 생성할 수 있습니다. 데쉬보드를 이용한 인스턴스 생성은 앞에서 많이 다루었으므로 여기서는 Command 명령어로 인스턴스를 생성해 보겠습니다.

 

1.     인스턴스를 생성하기 전에 사용자 정보를 먼저 export해야 합니다. Export하기 전에 앞서 저장해 둔 Demo 계정 정보를 확인합니다.

# cat demo-openrc.sh
export OS_USERNAME=demo
export OS_PASSWORD=demopass
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://10.10.15.11:35357/v2.0

 

2.     다음과 같은 명령어로 Demo 계정 정보를 export합니다.

# source demo-openrc.sh

 

3.     다음으로 인스턴스 생성 시 사용할 Key-pair를 생성합니다.

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
79:b0:41:0f:27:30:c7:b2:28:a9:94:01:b0:38:9e:b7 root@controller.openstack
The key's randomart image is:
+--[ RSA 2048]----+
|=     oo= .      |
|.o    .+.=       |
|+ o. . oo .      |
|.++ . .  =       |
|.+ o    S .      |
|. . .    .       |
|   E             |
|                 |
|                 |
+-----------------+

 

4.     생성한 key는 다음과 같은 명령어를 이용해 nova에 등록합니다.

# nova keypair-add --pub-key ~/.ssh/id_rsa.pub demo-key

 

5.     Key가 등록되었는지 nova keypair-list로 확인할 수 있습니다.

# nova keypair-list
+----------+-------------------------------------------------+
| Name     | Fingerprint                                     |
+----------+-------------------------------------------------+
| demo-key | 79:b0:41:0f:27:30:c7:b2:28:a9:94:01:b0:38:9e:b7 |
+----------+-------------------------------------------------+

 

6.     이번에는 생성 가능한 인스턴스 사양을 확인합니다.

# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

 

7.     어떤 이미지가 있는지도 확인합니다.

# nova image-list
+--------------------------------------+---------------------+--------+--------+
| ID                                   | Name                | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| acafc7c0-40aa-4026-9673-b879898e1fc2 | cirros-0.3.2-x86_64 | ACTIVE |        |
+--------------------------------------+---------------------+--------+--------+

 

8.     이번에는 admin 계정 정보를 export하고 네트워크 목록을 확인합니다.

# source admin-openrc.sh
# nova net-list
+--------------------------------------+----------+------------------+
| ID                                   | Label    | CIDR             |
+--------------------------------------+----------+------------------+
| 7f849be3-4494-495a-95a1-0f99ccb884c4 | demo-net | 192.168.0.24/29  |
+--------------------------------------+----------+------------------+

 

9.     다시 demo 계정 정보로 export하고 보안 그룹을 확인합니다.

# source demo-openrc.sh
# nova secgroup-list
+--------------------------------------+---------+-------------+
| Id                                   | Name    | Description |
+--------------------------------------+---------+-------------+
| ad8d4ea5-3cad-4f7d-b164-ada67ec59473 | default | default     |
+--------------------------------------+---------+-------------+

 

10.  확인한 정보를 가지고 인스턴스를 생성합니다. 이때 위에서 확인한 네트워크 IDDEMO_NET_ID에 적용합니다.

# nova boot --flavor m1.tiny --image cirros-0.3.2-x86_64 --nic net-id=DEMO_NET_ID \
  --security-group default --key-name demo-key demo-instance1

** DEMO_NET_ID를 변경해서 명령어를 실행하면 다음과 같은 결과가 나옵니다.

# nova boot --flavor m1.tiny --image cirros-0.3.2-x86_64 --nic net-id=7f849be3-4494-495a-95a1-0f99ccb884c4 \n
--security-group default --key-name demo-key demo-instance1
+--------------------------------------+-------------------------------------------+
| Property                             | Value                                     |
+--------------------------------------+-------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                    |
| OS-EXT-AZ:availability_zone          | nova                                      |
| OS-EXT-STS:power_state               | 0                                         |
| OS-EXT-STS:task_state                | scheduling                                |
| OS-EXT-STS:vm_state                  | building                                  |
| OS-SRV-USG:launched_at               | -                                         |
| OS-SRV-USG:terminated_at             | -                                         |
| accessIPv4                           |                                           |
| accessIPv6                           |                                           |
| adminPass                            | ThZqrg7ach78                              |
| config_drive                         |                                           |
| created                              | 2014-06-17T00:09:16Z                      |
| flavor                               | m1.tiny (1)                               |
| hostId                               |                                           |
| id                                   | 45ea195c-c469-43eb-83db-1a663bbad2fc      |
| image                                | cirros-0.3.2-x86_64                       |
| key_name                             | demo-key                                  |
| metadata                             | {}                                        |
| name                                 | demo-instance1                            |
| os-extended-volumes:volumes_attached | []                                        |
| progress                             | 0                                         |
| security_groups                      | default                                   |
| status                               | BUILD                                     |
| tenant_id                            | 93849608fe3d462ca9fa0e5dbfd4d040          |
| updated                              | 2014-04-10T00:09:16Z                      |
| user_id                              | 8397567baf4746cca7a1e608677c3b23          |
+--------------------------------------+-------------------------------------------+

 

11.  인스턴스가 생성되었는지 nova list 명령어로 확인합니다.

# nova list
+--------------------------------------+----------------+--------+------------+-------------+------------------------+
| ID                                   | Name           | Status | Task State | Power State | Networks               |
+--------------------------------------+----------------+--------+------------+-------------+------------------------+
| 45ea195c-c469-43eb-83db-1a663bbad2fc | demo-instance1 | ACTIVE | -          | Running     | demo-net=192.168.0.26  |
+--------------------------------------+----------------+--------+------------+-------------+------------------------+

 

12.  인스턴스에 접속할 때는 novnc 콘솔을 이용하는 방법과 ssh를 이용하는 방법이 있습니다. Novnc로 접속을 할 때는 다음과 같은 명령어로 접속 URL를 조회할 수 있습니다.

# nova get-vnc-console demo-instance1 novnc
+-------+------------------------------------------------------------------------------------+
| Type  | Url                                                                                |
+-------+------------------------------------------------------------------------------------+
| novnc | http://10.10.15.11:6080/vnc_auto.html?token=2f6dd985-f906-4bfc-b566-e87ce656375b   |
+-------+------------------------------------------------------------------------------------+

 

13.  보안 그룹에 ping이 가능하도록 ICMP 권한을 추가합니다.

# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

 

14.  이번에는 ssh 접속이 가능하도록 22번 포트를 추가합니다.

# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

 

15.  Ping이 되는지 확인해 봅니다.

# ping -c 4 192.168.0.26
PING 192.168.0.26 (192.168.0.26) 56(84) bytes of data.
64 bytes from 192.168.0.26: icmp_req=1 ttl=63 time=3.18 ms
64 bytes from 192.168.0.26: icmp_req=2 ttl=63 time=0.981 ms
64 bytes from 192.168.0.26: icmp_req=3 ttl=63 time=1.06 ms
64 bytes from 192.168.0.26: icmp_req=4 ttl=63 time=0.929 ms
 
--- 192.168.0.26 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.929/1.539/3.183/0.951 ms

 

16.  이번에는 ssh로 인스턴스에 접속해 봅니다.

# ssh cirros@192.168.0.26
The authenticity of host '192.168.0.26 (192.168.0.26)' can't be established.
RSA key fingerprint is ed:05:e9:e7:52:a0:ff:83:68:94:c7:d1:f2:f8:e2:e9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.26' (RSA) to the list of known hosts.
$

 

댓글
  • 프로필사진 cloud 안녕하세요 multinode 작업중에 문제가 생겨서 글 남깁니다.

    # openstack-config --set /etc/nova/nova.conf DEFAULT \
    flat_network_bridge br100
    # openstack-config --set /etc/nova/nova.conf DEFAULT \
    flat_interface eth1
    # openstack-config --set /etc/nova/nova.conf DEFAULT \
    public_interface eth1

    이부분에서 bridge br100은 무엇을 의미하는 건가요? bridge를 따로 만들어 줘야 되나요?
    또한 eth1로 선택을 하셨는데 꼭 eth0 , eth1로 분할해야 되나요? 기존 controller node에서 eth0을 외부망으로 yum으로 땡겨 썼습니다. 그래서 compute node에서 eth0를 외부망으로 써야 될꺼 같은데요 묶어서 eth0만 쓰면 안되나요?

    다 구성하고 nova-network랑 nova-compute 부분이 controller node에 추가가 되지 않는거 같아서 문의드립니다.

    2015.04.01 18:21
  • 프로필사진 Favicon of https://naleejang.tistory.com BlogIcon 나리 짱!!! naleejang br100은 컴퓨트 노드의 인스턴스끼리 통신을 하기위한 가상 네트워크입니다.
    그리고, 이더넷 카드가 한장밖에 없다면 그냥 그걸로 사용하셔도 상관은 없습니다. eth0만 사용하셔도 된다는 이야기입니다.
    2015.04.02 13:07 신고
댓글쓰기 폼