'오픈스택'에 해당되는 글 29건

  1. 2014.12.15 [OpenStack Class] 제37강 서비스가 가능한 오픈스택 설치9편 - 네트워크노드 설치 (4)
  2. 2014.12.13 [OpenStack Class] 제36강 서비스가 가능한 오픈스택 설치8편 - 컨트롤러 노드 설치6 (4)
  3. 2014.11.26 [OpenStack Class] 제31강 서비스가 가능한 오픈스택 설치3편 - 컨트롤러 노드 설치1 (7)
  4. 2014.11.25 [OpenStack Class] 제29강 서비스가 가능한 오픈스택 설치1편 - 시스템 구성도를 그려보자! (6)
  5. 2014.11.13 OpenStack이 떠오르는 이유!! OpenStack은 인기스타!! (2)
  6. 2014.11.11 [Ubuntu] Ubuntu 14.04와 13.10에 대한 Networking 서비스 차이
  7. 2014.11.05 제4회 Korea Community Day에서 발표를 합니다. (1)
  8. 2014.10.27 [OpenStack Class] 제26강 Neutron 설치 3편 - DevStack을 이용한 오픈스택 설치! (12)
  9. 2014.10.23 [Dream]꿈이 현실이 되다!!! (2)
  10. 2014.10.20 [OpenStack Class] 제25강 Neutron 설치 2편 - 버철박스 가상서버 생성! (4)
  11. 2014.10.06 [OpenStack Class] 제24강 Neutron 설치 1편 - 네트워크 구성도 그리기! (7)
  12. 2014.09.29 [OpenStack Class] 제23강 네트워크 서비스인 Neutron을 알아보자!
  13. 2014.09.24 [OpenStack Class] 제21강 오픈스택 설치 6편 - 첫번째 인스턴스 생성하기! (40)
  14. 2014.09.19 [OpenStack Class] 제19강 오픈스택 설치 4편 - 오픈스택 네트워크 구성도를 그려보자! (10)
  15. 2014.09.17 [OpenStack Class] 제18강 오픈스택 설치 3편 - 가상서버에 우분투 서버 설치하기 (10)
  16. 2014.09.14 [OpenStack Class] 제16강 오픈스택 설치 1편 - 하이퍼바이저를 이용한 서버 준비 (8)
  17. 2014.06.06 [OpenStack Class] 제7강 컴퓨트 서비스! NOVA (10)
  18. 2014.04.23 [OpenStack Class] 제6강 OpenStack의 역사! (2)
  19. 2013.12.19 [OpenStack Class] 제1강 클라우드가 뭐지? (5)
  20. 2013.12.18 [OpenStack Class] 입문자를 위한 오픈스택 강좌 안내 (4)
OpenStack Class2014.12.15 22:00

안녕하세요~!!

지난시간까지는 컨트롤러 노드에 필요한 서비스들을 설치했었습니다. 어떤 서비스가 설치되었는지 기억이 나시나요? 인증서비스인 Keystone, 이미지 서비스인 Glance, 컴퓨트 서비스 Nova, 네트워킹 서비스 Neutron, 데쉬보드 서비스 Horizon, 블록스토리지 서비스 Cinder, 오브젝트 스토리지 서비스 Swift, 오케스트레이션 서비스 Heat, 텔레미터 서비스 Ceilometer를 설치했었습니다. 대부분의 서비스들이 Keystone에 서비스와 앤드포인트 URL을 등록하고 데이터베이스를 생성한 후 테이블을 생성했습니다. 그리고, 서비스를 설치한 후 환경설정을 했습니다. 

오늘은 네트워크 서비스의 핵심인 네트워크 노드를 설치해 볼까 합니다. 그럼, 지금부터 시작해 볼까요~~~

SDN을 위한 네트워크 노드를 설치해 보자

네트워크 노드는 Neutron을 이용해서 SDN(Software Defined Network)을 해야 할 경우에 필요합니다. 기존 레거시 네트워크(nova-network)를 이용할 경우에는 필요하지 않습니다. 앞서 Neutron 기본 플러그인 ML2을 사용해서 GRE 방식에 OpenvSwitch 메커니즘 드라이버를 사용하기로 했습니다. 그럼 지금부터 네트워크 노드에 필요한 서비스들을 하나씩 설치하겠습니다.

 

네트워크 인터페이스 설정

네트워크 노드는 모니터링 및 관리를 위한 IP, 컴퓨트 노드의 인스턴스들과 통신할 내부 IP, 인스턴스들이 외부 인터넷을 할 수 있도록 연결하기 위한 외부 IP로 이루어 집니다. 그래서 필요한 이더넷 카드는 총 3장입니다. 그럼 지금부터 네트워킹을 위한 IP 설정을 하겠습니다.

 

1.     eth0은 모니터링 및 관리용 IP, eth1은 내부용 IP, eth2는 외부용 manual 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.21

           netmask 255.255.255.0

           gateway 10.10.15.1

        dns-servers 8.8.8.8

 

auto eth1

iface eth1 inet static

           address 10.10.10.21

           netmask 255.255.255.0

 

# The external network interface
auto eth2
iface eth2 inet manual
        up ip link set dev $IFACE up
        down ip link set dev $IFACE down

 

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

$ sudo vi /etc/hosts

# network

10.10.15.21       network

 

# controller

10.10.15.11       controller

 

# compute1

10.10.15.31       compute1

 

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(Network Time Protocol) 서버를 설치했다면 네트워크 노드와 컴퓨트 노드에는 클라이언트를 설치합니다.

 

1.     Ntp를 설치합니다.

$ sudo apt-get install ntp

 

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

$ sudo ntpdate -u 10.10.15.11
28 May 10:35:31 ntpdate[2737]: step time server 10.10.15.11 offset -134035.065856 sec


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

$ sudo hwclock -w

 

데이터베이스 설치

컨트롤러 노드에서 이미 Mysql 서버를 설치했으므로 네트워크 노드와 컴퓨트 노드에서는 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

 


 

Neutron 네트워킹 설치

네트워크 노드는 컴퓨트 노드에 설치되는 모든 인스턴스의 IP를 관리하고 외부 인터넷과 연결될 수 있도록 관리합니다. 그럼 지금부터 Neutron을 설치하겠습니다.

 

1.     /etc/sysctl.conf 파일을 열어 다음과 같은 내용을 추가합니다. net.ipv4.ip_forward=1IP를 공유해서 포워딩이 가능하도록 설정하겠다는 뜻입니다. 또한 rp_filter는 패킷이 들어오는 인터페이스와 나가는 인터페이스가 같은지에 대한 검사 여부를 설정하는데 0으로 설정하면 검사를 하지 않겠다는 뜻입니다.

$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

 

2.     수정된 sysctl.conf 파일의 내용을 sysctl 명령을 이용해서 시스템에 적용합니다.

$ sudo sysctl –p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

 

3.     ML2 플러그인과 OpenvSwitch, L3 에이전트, DHCP 에이전트를 설치합니다.

$ sudo apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent \n
openvswitch-datapath-dkms neutron-l3-agent neutron-dhcp-agent

 

4.     설치가 완료되면 /etc/neutron/neutron.conf 파일의 내용을 다음과 같이 수정합니다. 이때 들어가는 모든 IP는 컨트롤러 노드 IP나 도메인 주소를 입력합니다.

$ sudo vi /etc/neutron/neutron.conf [DEFAULT] ... auth_strategy = keystone ... rpc_backend = neutron.openstack.common.rpc.impl_kombu rabbit_host = 10.10.15.11 rabbit_password = rabbitpass ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = True [keystone_authtoken] ... auth_uri = http://10.10.15.11:5000 auth_host =10.10.15.11 auth_protocol = http auth_port = 35357 admin_tenant_name = service admin_user = neutron admin_password = neutronpass

 

5.     /etc/neutron/l3_agent.ini 파일을 열어 다음과 같이 수정합니다. 우리는 OpenvSwitch을 메커니즘 드라이버로 사용할 것이기 때문에 인터페이스 드라이버는 OVSInterfaceDriver를 사용하겠다고 설정합니다.

$ sudo vi /etc/neutron/l3_agent.ini
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True

 

6.     /etc/neutron/dhcp_agent.ini 파일을 열어 다음과 같이 수정합니다.

$ sudo vi /etc/neutron/dhcp_agent.ini
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True

 

7.     /etc/neutron/metadata_agent.ini 파일에서 keystone으로 인증할 인증정보를 다음과 같이 수정합니다.

$ sudo vi /etc/neutron/metadata_agent.ini
[DEFAULT]
...
auth_url = http://10.10.15.11:5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = neutronpass
nova_metadata_ip = 10.10.15.11
metadata_proxy_shared_secret = metadatasecret

 

8.     /etc/neutron/plugins/ml2/ml2_conf.ini 파일에서 네트워크 타입과 메커니즘 드라이버 정보를 다음과 같이 입력합니다.

$ sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] ... type_drivers = gre tenant_network_types = gre mechanism_drivers = openvswitch [ml2_type_gre] ... tunnel_id_ranges = 1:1000 [ovs] ... local_ip = 10.0.10.21 #eth1에 해당하는 IP 입력 tunnel_type = gre enable_tunneling = True [securitygroup] ... firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver enable_security_group = True metadata_proxy_shared_secret = metadatasecret


9.     환경설정을 모두 마치면 openvswitch을 재시작합니다.

$ sudo service openvswitch-switch restart

 

10.  내부 인스턴스의 IP를 관리할 br-intOpenvswitch에 추가합니다.

$ sudo ovs-vsctl add-br br-int

 

11.  이번에는 외부 인터넷과 연결될 br-exopenvswitch에 추가합니다.

$ sudo ovs-vsctl add-br br-ex

 

12.  Openvswitchbr-ex를 추가했으면 br-ex에 물리 네트워크 카드를 연결해야 합니다. 네트워크 노드의 네트워크 IP를 설정할 때 인스턴스의 외부 인터넷 사용을 위해서 manual IP를 설정했었습니다. 그때 설정했던 manual IP의 네트워크 인터페이스를 다음과 같이 연결합니다.

$ sudo ovs-vsctl add-port br-ex eth2

 

13.  마지막으로 설치했던 neutron 서비스들을 재시작합니다.

$ sudo service neutron-dhcp-agent restart
neutron-dhcp-agent stop/waiting
neutron-dhcp-agent start/running, process 11797
$ sudo service neutron-plugin-openvswitch-agent restart
neutron-plugin-openvswitch-agent stop/waiting
neutron-plugin-openvswitch-agent start/running, process 11814
$ sudo service neutron-dhcp-agent restart
neutron-dhcp-agent stop/waiting
neutron-dhcp-agent start/running, process 11926
$ sudo service neutron-metadata-agent restart
neutron-metadata-agent stop/waiting
neutron-metadata-agent start/running, process 11949 

** "오픈스택을 다루는 기술"에서 이부분에 오류가 있었습니다. neutron-dhcp-agent 서비스 역시 다른 서비스와 마찬가지로 한번만 재 시작을 해 주어야 합니다. 그런데 두번을 재시작을 했습니다. 물론 두번 재시작한다고 해서 문제가 되지는 않습니다. 그리고, neutron-metadata-agent 서비스 역시 재시작을 해 주어야 합니다. 처음 써 본 책이라 생각보다 오류와 오타가 많았습니다. 넓은 마음으로 이해해 주시면 정말 감사하겠습니다.


이렇게서 네트워크 노드를 설치해 보았습니다. 다음 포스팅에서는 컴퓨트 노드를 설치해 보도록 하겠습니다.

그럼, 다음 시간에 다시 만나요~~~~ ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.12.13 21:28

안녕하세요~!!


오늘 포스팅하는 내용이 컨트롤러 마지막 설치편이네요~!! 그동안 무슨일이 그렇게 바뻤는지 열심히 포스팅을 하자 해 놓고는 제가 많이 게을렀나봅니다. 오늘은 마지막으로 오케스트레이션 서비스인 Heat와 텔레미터 서비스인 Ceilometer를 설치해 보도록 하겠습니다. 



Heat 설치

Heat는 오픈스택이 Havana 버전으로 릴리즈되면서 새롭게 추가된 오케스트레이션 서비스입니다.  인스턴스를 생성할 때마다 늘 해야 하는 작업을 오케스트레이션 Heat 서비스를 이용하면 자동으로 인스턴스를 생성할 수 있습니다. 쉽게 말해 인스턴스를 생성하기 위한 일련의 과정 즉 프로세스를 오케스트레이션이라 하고, 이런 일련의 과정들을 Heat 서비스를 이용해 자동으로 인스턴스 생성 및 네트워크 설정 등을 할 수 있습니다. 그럼 지금부터 Heat 서버를 설치하겠습니다.


1.     우선 heat-api, heat-api-cnf, heat-engine를 설치합니다.

$ sudo apt-get install heat-api heat-api-cfn heat-engine

 

2.     Heat 서비스를 설치하면 heat.conf 파일의 데이터베이스 정보를 mysql로 수정합니다.

$ sudo vi /etc/heat/heat.conf
[database]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://heat:heatdbpass@10.10.15.11/heat

 

3.     기본 데이터베이스가 mysql이므로 기존 sqlite 파일을 삭제합니다.

$ sudo rm /var/lib/heat/heat.sqlite

 

4.     Mysql에 접속해서 heat 데이터베이스와 사용자 계정을 생성하고 접속 권한을 설정합니다.

$ mysql -u root -p
mysql> CREATE DATABASE heat;
Query OK, 1 row affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' \
IDENTIFIED BY 'heatdbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' \
IDENTIFIED BY 'heatdbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit
Bye

 

5.     Heat 데이터베이스가 생성되면 이번에는 테이블을 생성합니다. 다음과 같은 warning 메시지가 뜨지만 테이블은 정상적으로 생성됩니다.

$ sudo su -s /bin/sh -c "heat-manage db_sync" heat
No handlers could be found for logger "heat.common.config"
2014-05-28 03:22:46.990 16004 WARNING heat.openstack.common.db.sqlalchemy.session [-] 
This application has not enabled MySQL traditional mode, which means silent data corruption may 
occur. Please encourage the application developers to enable this mode.

 

6.     /etc/heat/heat.conf 파일의 RabbitMQ 정보와 Keystone 정보를 다음과 같이 설정합니다.

$ vi /etc/heat/heat.conf
[DEFAULT]
...
# Print more verbose output (set logging level to INFO instead
# of default WARNING level). (boolean value)
verbose = True
...
# (Optional) The base directory used for relative --log-file
# paths (string value)
log_dir=/var/log/heat
...
rabbit_host = 10.10.15.11
rabbit_password = rabbitpass
 
[keystone_authtoken]
auth_host = 10.10.15.11
auth_port = 35357
auth_protocol = http
auth_uri = http://10.10.15.11:5000/v2.0
admin_tenant_name = service
admin_user = heat
admin_password = heatpass
 
[ec2authtoken]
auth_uri = http://10.10.15.11:5000/v2.0

 

7.     KeystoneHeat 사용자 계정을 생성합니다.

$ source admin-openrc.sh
$ keystone user-create --name=heat --pass=heatpass --email=heat@email.com
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |          heat@email.com          |
| enabled  |               True               |
|    id    | d83082aba04c4c1c9a1642995a98aae7 |
|   name   |               heat               |
| username |               heat               |
+----------+----------------------------------+

 

8.     생성한 사용자 계정은 서비스 테넌트에 추가하고 admin 롤을 설정합니다.

$ keystone user-role-add --user=heat --tenant=service --role=admin

 

9.     이번에는 Heat 서비스를 생성합니다.

$ keystone service-create --name=heat --type=orchestration \
--description="Orchestration"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |          Orchestration           |
|   enabled   |               True               |
|      id     | 1ad5cfe5707a449091c35fb1337fea33 |
|     name    |               heat               |
|     type    |          orchestration           |
+-------------+----------------------------------+

 

10.  생성한 Heat 서비스에 Public URL, Internal URL, Admin URL을 설정합니다.

$ keystone endpoint-create \
  --service-id=1ad5cfe5707a449091c35fb1337fea33 \
  --publicurl=http://10.10.15.11:8004/v1/%\(tenant_id\)s \
  --internalurl=http://10.10.15.11:8004/v1/%\(tenant_id\)s \
--adminurl=http://10.10.15.11:8004/v1/%\(tenant_id\)s
+-------------+------------------------------------------+
|   Property  |                  Value                   |
+-------------+------------------------------------------+
|   adminurl  | http://10.10.15.11:8004/v1/%(tenant_id)s |
|      id     |     9da4fee4a0e3496eb0fca1a8f7673198     |
| internalurl | http://10.10.15.11:8004/v1/%(tenant_id)s |
|  publicurl  | http://10.10.15.11:8004/v1/%(tenant_id)s |
|    region   |                regionOne                 |
|  service_id |     1ad5cfe5707a449091c35fb1337fea33     |
+-------------+------------------------------------------+

 

11.  이번에는 CloudFormation 서비스를 생성합니다.

$ keystone service-create --name=heat-cfn --type=cloudformation \
--description="Orchestration CloudFormation"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |   Orchestration CloudFormation   |
|   enabled   |               True               |
|      id     | 9b268d095c19429e817f951fa89621a4 |
|     name    |             heat-cfn             |
|     type    |          cloudformation          |
+-------------+----------------------------------+

 

12.  생성된 CloudFormation 서비스에 다음과 같이 Public URL, Internal URL, Admin URL을 설정합니다.

$ keystone endpoint-create \
  --service-id=9b268d095c19429e817f951fa89621a4\
  --publicurl=http://10.10.15.11:8000/v1 \
  --internalurl=http://10.10.15.11:8000/v1 \
--adminurl=http://10.10.15.11:8000/v1
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
|   adminurl  |    http://10.10.15.11:8000/v1    |
|      id     | d16093dcffad48158967daba3eb9cb41 |
| internalurl |    http://10.10.15.11:8000/v1    |
|  publicurl  |    http://10.10.15.11:8000/v1    |
|    region   |            regionOne             |
|  service_id | 9b268d095c19429e817f951fa89621a4 |
+-------------+----------------------------------+

 

13.  마지막으로 Heat 서비스를 재시작합니다.

$ sudo service heat-api restart
heat-api stop/waiting
heat-api start/running, process 16305
$ sudo service heat-api-cfn restart
heat-api-cfn stop/waiting
heat-api-cfn start/running, process 16317
$ sudo service heat-engine restart
heat-engine stop/waiting
heat-engine start/running, process 16329

 

Ceilometer 설치

Ceilometer 역시 오픈스택 Havana 버전이 릴리즈 되면서 추가된 텔레미터 서비스입니다. 사용자들이 스토리지 용량을 얼마나 사용하는지 모니터링할 수 있는 기능을 제공합니다. 그럼 지금부터 Ceilometer를 설치해 보도록 하겠습니다.

 

1.     다음과 같이 ceilometer를 설치합니다.

$ sudo apt-get install ceilometer-api ceilometer-collector ceilometer-agent-central \
  ceilometer-alarm-evaluator ceilometer-alarm-notifier python-ceilometerclient

 

2.     Ceilometer는 다른 서비스와 다르게 NoSql인 몽고(Mongo) DB를 사용하므로 몽고 DB를 설치합니다.

$ sudo apt-get install mongodb-server

 

3.     몽고 DB가 설치되면 mongodb.conf 파일의 bind_ip를 컨트롤러 노드 IP로 수정합니다.

$ sudo vi /etc/mongodb.conf
bind_ip = 10.10.15.11

 

4.     몽고 DB를 재시작합니다.

$ sudo service mongodb restart

 

5.     굵게 표시한 부분을 복사하고 실행해서 몽고 DBceilometer 사용자 계정을 추가합니다.

$ sudo mongo --host 10.10.15.11 --eval '
db = db.getSiblingDB("ceilometer");
db.addUser({user: "ceilometer",
            pwd: "ceilometerdbpass",
            roles: [ "readWrite", "dbAdmin" ]})'
 
MongoDB shell version: 2.4.9
connecting to: 10.10.15.11:27017/test
{
             "user" : "ceilometer",
             "pwd" : "c8e9d18c1687378d638b2bee2138c785",
             "roles" : [
                          "readWrite",
                          "dbAdmin"
             ],
             "_id" : ObjectId("5384dd7a8dd44e7534eb12fe")
}

 

6.     Ceilometer.conf 파일을 열어 데이터베이스를 몽고 DB로 접속할 수 있게 수정합니다.

$ sudo vi /etc/ceilometer/ceilometer.conf
[database]
# The SQLAlchemy connection string used to connect to the
# database (string value)
connection = mongodb://ceilometer:ceilometerdbpass@10.10.15.11:27017/ceilometer

 

7.     Ceilometer Token을 생성하기 위해 임의의 랜덤 문자열을 생성합니다.

$ openssl rand -hex 10
115ca7336ad88e5c64a8

 

8.     생성된 랜덤 문자열은 ceilometer.conf 파일의 meterin_secret 부분에 다음과 같이 입력하고, RabbitMQ 정보를 설정합니다.

$ sudo vi /etc/ceilometer/ceilometer.conf
[publisher]
# Secret value for signing metering messages (string value)
metering_secret = 3a82c1a617f1a797a90b #CEILOMETER_TOKEN
[DEFAULT]
log_dir = /var/log/ceilometer
rabbit_host = 10.10.15.11
rabbit_password = rabbitpass

 

9.     Keystone ceilometer 사용자 계정을 생성합니다.

$ keystone user-create --name=ceilometer --pass=ceilometerpass --email=ceilometer@email.com
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |       ceilometer@email.com       |
| enabled  |               True               |
|    id    | c93f2948014344d6908dd3ec40097d33 |
|   name   |            ceilometer            |
| username |            ceilometer            |
+----------+----------------------------------+

 

10.  생성된 사용자 계정은 서비스 테넌트에 추가하고 admin 롤을 할당합니다.

$ keystone user-role-add --user=ceilometer --tenant=service --role=admin

 

11.  사용자 계정 생성이 완료되면 ceilometer.conf 파일에 keystone 정보를 수정합니다.

$ sudo vi /etc/ceilometer/ceilometer.conf
[keystone_authtoken]
auth_host = 10.10.15.11
auth_port = 35357
auth_protocol = http
auth_uri = http://10.0.0.11:5000
admin_tenant_name = service
admin_user = ceilometer
admin_password = ceilometerpass
[service_credentials]
os_auth_url = http://10.10.15.11:5000/v2.0
os_username = ceilometer
os_tenant_name = service
os_password = ceilometerpass

 

12.  이번에는 Ceilometer 서비스를 생성합니다.

$ keystone service-create --name=ceilometer --type=metering \
--description="Telemetry"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |            Telemetry             |
|   enabled   |               True               |
|      id     | cfcc2fca4fa84ccebcdc8a1b57d51016 |
|     name    |            ceilometer            |
|     type    |             metering             |
+-------------+----------------------------------+

 

13.  생성한 서비스에 Public URL, Internal URL, Admin URL을 설정합니다.

$ keystone endpoint-create \
  --service-id=cfcc2fca4fa84ccebcdc8a1b57d51016 \
  --publicurl=http://10.10.15.11:8777 \
  --internalurl=http://10.10.15.11:8777 \
--adminurl=http://10.10.15.11:8777
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
|   adminurl  |     http://10.10.15.11:8777      |
|      id     | 64f7781ff5dd4ea69aa3c585778e09f0 |
| internalurl |     http://10.10.15.11:8777      |
|  publicurl  |     http://10.10.15.11:8777      |
|    region   |            regionOne             |
|  service_id | cfcc2fca4fa84ccebcdc8a1b57d51016 |
+-------------+----------------------------------+

 

14.  Ceilometer 서비스를 재시작합니다.

$ sudo service ceilometer-agent-central restart
$ sudo service ceilometer-api restart
$ sudo service ceilometer-collector restart
$ sudo service ceilometer-alarm-evaluator restart
$ sudo service ceilometer-alarm-notifier restart


** 일반적으로 모든 서비스는 여기까지 진행을 하면 서비스 설치가 완료됩니다. 그러나, Ceilometer는 다른 서비스와 다르게 텔레미터링 서비스이기 때문에 모니터링을 적용할 서비스들에 Ceilometer를 쓰겠다고 환경설정을 별도로 해 주어야 합니다. 그럼 지금부터 Glance, Cinder, Swift에 Ceilometer를 사용하겠다고 설정해 보도록 하겠습니다.


15.  Glance Ceilometer 적용하겠습니다. /etc/glance/glance-api.confnotification_driver messaging으로 수정합니다.

$ sudo vi /etc/glance/glance-api.conf
notification_driver = messaging

 

16.  Glance 서비스를 재시작합니다.

$ sudo service glance-registry restart
$ sudo service glance-api restart

 

17.  CinderCeilometer를 적용하겠습니다. /etc/cinder/cinder.conf 파일의 control_echangenotification_driver를 다음과 같은 값으로 설정합니다.

$ sudo vi /etc/cinder/cinder.conf
control_exchange = cinder
notification_driver = cinder.openstack.common.notifier.rpc_notifier

 

18.  Cinder 서비스를 재시작합니다.

$ sudo service cinder-api restart
$ sudo service cinder-scheduler restart

 

19.  SwiftCeilometer를 적용하겠습니다. KeystoneResellerAdmin 롤을 추가합니다.

$ keystone role-create --name=ResellerAdmin
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|    id    | dbd086a41ebe44eba03da9a57ce359c0 |
|   name   |          ResellerAdmin           |
+----------+----------------------------------+

 

20.  ceilometer 계정에 방금 생성한 ResellerAdmin ID를 설정합니다.

$ keystone user-role-add --tenant service --user ceilometer \
      --role dbd086a41ebe44eba03da9a57ce359c0

 

21.  /etc/swift/proxy-server.conf 파일에 ceilometer 서비스를 추가합니다.

$ sudo vi /etc/swift/proxy-server.conf
[pipeline:main]
pipeline = healthcheck cache authtoken keystoneauth ceilometer proxy-server
 
[filter:ceilometer]
use = egg:ceilometer#swift

 

22.  마지막으로 swift-proxy 서비스를 재시작합니다.

$ sudo service swift-proxy restart

 


이렇게해서 컨트롤러 노드에 설치되는 서비스들을 하나 하나씩 설치해 보았습니다. 다음 포스팅에서는 네트워크 노드에 설치될 서비스들을 설치해 볼 예정입니다. 그럼, 다음시간에 다시 만나요~!!

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.11.26 22:10

안녕하세요~!!

서비스 구성도도 그렸고, 서버 준비도 완료를 하였습니다. 이제 컨트롤러 노드를 한번 설치해 볼까요?
이번에 컨트롤러 노드의 모든 서비스를 다 설치를 하지는 않을 것입니다. 왜냐하면 내용이 너무 많아서죠~!! 오늘은 지난 시간에 그렸던 서비스 구성도에서 아래 노란색깔로 표시해 놓은 써포팅 서비스와 네트워크 환경을 설정할 것입니다. 



그럼, 한번 시작해 볼까요~~~

컨트롤러 노드를 설치해 보자

서버를 준비하고 최신 우분투 서버를 설치했으면 이번에는 컨트롤러 노드를 설치하겠습니다. 컨트롤러 노드는 데이터베이스, 메시지 서비스, 오픈스택 기본 서비스, 필요에 따라 설치하는 옵션 서비스가 설치됩니다.

 

네트워크 인터페이스 설정

오픈스택을 설치하려면 가장 먼저 네트워크 IP를 설정해야 합니다. 모니터링과 관리를 위해 컨트롤러 노드에 설정할 IP는 네트워크 노드와 컴퓨트 노드의 서버 역할을 합니다.

 

1.     /etc/network/interfaces 파일을 vi 편집기로 열고 eth0 네트워크 IP를 설정합니다. 이때 설정할 네트워크 IP 정보는 앞서 그려본 시스템 구성도(xx쪽 참조)의 네트워크 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.11

           netmask 255.255.255.0

           gateway 10.10.15.1

 

2.     /etc/hosts 파일을 열어 컨트롤러 노드, 네트워크 노드, 컴퓨트 노드의 IP 정보를 등록합니다.

$ sudo vi /etc/hosts

# controller

10.10.15.11       controller

# network

10.10.15.21       network

# compute1

10.10.15.31compute1

 

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 설치

NTPNetwork Time Protocol로 서버와 서버간의 시간을 동기화하기 위해서 설치합니다. 컨트롤러 노드에는 NTP 서버를 설치하고 그 외 다른 노드에는 NTP 클라이언트를 설치합니다. NTP는 여러 노드를 사용하는 클라우드 시스템에서 자원을 예약하고 사용하고 삭제할 때의 시간을 기록하여 노드간의 시간을 동기화하는 중요한 역할을 합니다.


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

$ sudo apt-get install –y ntp

 

2.     ntp 설치가 완료되면 ntp.conf로컬 호스트를 나타내는 127.127.1.0을 추가해야 합니다. 이때 다음과 같이 sed 명령어를 이용해서 추가하는 방법과 vi 에디터로 직접 추가하는 방법이 있습니다.

$ sudo sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\n
fudge 127.127.1.0 stratum 10/g' /etc/ntp.conf


3.     ntp.conf 파일 수정이 완료되면 ntp 서버를 재시작합니다.

$ sudo service ntp restart
* Stopping NTP server ntpd                                                [ OK ]
 * Starting NTP server ntpd                                                 [ OK ]

 


 

데이터베이스 설치

오픈스택의 모든 서비스는 데이터베이스에 정보를 저장합니다. 그렇기 때문에 오픈스택 서비스를 설치하기 전에 데이터베이스를 먼저 설치해야 합니다. 오픈스택의 기본 데이터베이스는 mysql이며 아이스하우스 버전에서부터는 MariaDB도 설치 가능합니다. ** Juno 버전의 설치문서를 보시면 "apt-get install mariadb-server python-mysqldb"를 설치하도록 되어 있습니다. 이부분은 당연히 잘못된 부분이겠죠~!! 아래와 같이 설치하셔야 합니다.

 

1.     apt-get을 이용해서 python-mysqldbmysql-server를 설치합니다.

$ sudo apt-get install python-mysqldb mysql-server


2.     Mysql 서버를 설치하다 보면 root 패스워드를 입력하라는 창이 뜹니다. 사용하고자 하는 패스워드를 입력하고 엔터를 누릅니다. 


3.     다시 한번 패스워드를 확인하면 앞서 입력한 패스워드를 입력하고 엔터를 누릅니다. 


4.     Mysql 서버 설치가 완료되면 /etc/mysql/my.cnf bind-addresscharacter-setutf8로 설정합니다. 이때 bind-address는 컨트롤러 노드 IP를 입력합니다.

$ sudo vi /etc/mysql/my.cnf
[mysqld]
...
bind-address = 10.10.15.11
...
default-storage-engine = innodb
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

 

5.     환경설정이 완료되면 mysql 서버를 재시작합니다.

$ sudo service mysql restart

 

6.     서버를 재 시작한 후 mysql의 기본 데이터베이스 및 테이블 설치를 위해 mysql_install_db를 실행합니다. 이때 root 계정 패스워드를 입력하라고 메시지가 나오면 mysql 서버 설치 시 입력했던 패스워드를 입력합니다.

$ sudo mysql_install_db
Installing MySQL system tables...
140527 13:13:30 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is
 deprecated and will be removed in a future release. Please use the full name instead.
OK
Filling help tables...
140527 13:13:30 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is 
deprecated and will be removed in a future release. Please use the full name instead.
OK
 
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
 
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
 
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h controller password 'new-password'
 
Alternatively you can run:
/usr/bin/mysql_secure_installation
 
which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
 
See the manual for more instructions.
 
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
 
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
 
Please report any problems at http://bugs.mysql.com/


7.     Mysql 서버 설치 후에는 반드시 익명의 Anonymous 계정을 삭제해야 합니다. 이 계정을 삭제하지 않으면 데이터베이스 연결 문제가 발생합니다. 익명의 사용자 계정을 삭제하려면 mysql_secure_installation을 실행합니다.

$ sudo mysql_secure_installation
  
 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
  
In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none): 
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
 
You already have a root password set, so you can safely answer 'n'.
 
Change the root password? [Y/n] n
... skipping.
 
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
 
Remove anonymous users? [Y/n] y
... Success!
 
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
 
Disallow root login remotely? [Y/n] y
... Success!
 
By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
 
Remove test database and access to it? [Y/n] y
- Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - Removing privileges on test database...
 ... Success!
 
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
 
Reload privilege tables now? [Y/n] y
... Success!
 
Cleaning up...
 
 
 
All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.
 
Thanks for using MySQL!

 

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라면 다음과 같이 백포트된 리눅스 커널을 설치해야 합니다. 12.04에 설치된 리눅스 커널은 버전이 오래되었으므로 요즘 나오는 하드웨어를 운영하려면 아래와 같이 최신 리눅스 커널을 설치해야 합니다. 리눅스 커널은 최신 네트워크 드라이버를 사용하는 Neutron일 경우에는 최신 커널을 설치하는 것이 좋고, Nova-network를 사용하는 경우에는 설치하지 않아도 됩니다.

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

** 좋은게 좋은거라고 저 같은 경우는 ubuntu 12.04 버전에서 오픈스택을 설치하였기 때문에 이 부분도 그냥 설치했습니다. 


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

$ sudo reboot

 

RabbitMQ 설치

이번에는 모든 서비스의 메시지를 주고 받는 서버를 설치하겠습니다. 오픈스택의 기본 메시지 서버는 RabbitMQ입니다.

 

1.     RabbitMQ Server를 설치합니다.

$ sudo apt-get install rabbitmq-server

 

2.     RabbitMQ Server 설치가 완료되면 패스워드를 변경합니다. 사용하고자 하는 패스워드를 입력해서 변경합니다.

$ sudo rabbitmqctl change_password guest rabbitpass
Changing password for user "guest" ...
...done.

 


이렇게 해서 컨트롤러 노드의 네트워크 환경설정과 반드시 설치해야만 하는 써포팅 서비스들을 설치해 보았습니다. 독자분들을 위하여 중간중간에 "오픈스택을 다루는 기술"에서 다루지 못한 부분을 추가하였습니다. 참고하시면 도움이 되실 듯 합니다. 


그럼 다음시간에는 인증 서비스인 Keystone을 설치해 보도록 하겠습니다. 다음에 다시 또 만나요~~~~ ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.11.25 00:18

안녕하세요~!!


오랜만에 다시 블로그에 포스팅을 하는 것 같습니다.

그동안 책이 출간되고 세미나에 강의에 정신이 없어서 글을 쓸 시간이 없었던것 같습니다.


제가 지금까지 연재한 OpenStack Class 강좌 내용은 모두 "오픈스택을 다루는 기술"에 포함하였습니다. 계속 이어서 "오픈스택을 다루는 기술"에 있는 내용을 모두 이곳에 연재를 할까 합니다. 이곳에서 연재되는 강좌도 많이 많이 사랑해 주세요~!! 


지금까지 우리는 데브스택을 설치해서 오픈스택이 어떻게 동작하는지를 살펴보았습니다. 데브스택은 서버를 재부팅 했을 때 서비스를 재시작하기 어려워 다시 설치해야 하는 불편함이 있습니다. 또한 개발중인 소스를 받아서 사용하기 때문에 불안정합니다. 그래서 서비스를 하기에는 적합하지 않습니다. 이번 장에서는 메뉴얼 방식으로 서비스가 가능한 오픈스택을 설치해보겠습니다.

 

시스템 구성도를 그려보자

오픈스택을 설치하기 전에는 반드시 시스템 구성도 및 네트워크 구성도를 먼저 그려야 합니다. 데브스택 같은 경우는 쉘 스크립트가 모든 서비스를 자동으로 설치하기 때문에 시스템 구성도를 몰라도 상관이 없었으나 서비스를 위한 매뉴얼 방식으로 설치할 때는 반드시 시스템 구성도를 그려야 합니다. 그럼, 지금부터 서비스가 되는 오픈스택 설치를 위한 시스템 구성도를 그려보겠습니다.

 

Neutron를 이용한 오픈스택 네트워킹 구성

Neutron을 이용해서 오픈스택 네트워킹을 구성하려면 컨트롤러 노드, 네트워크 노드, 컴퓨트 노드 이렇게 최소 서버 3대 이상이 필요합니다.



컨트롤러 노드에는 서비스를 관리하는 컴포넌트들이 설치됩니다. 데이터베이스를 지원할 MySQL이나 MariaDB가 기본으로 설치되고 메시지 서비스로 RabbitMQ 또는 Qpid가 설치됩니다. 기본 서비스로는 인증을 담당하는 Keystone, 이미지 서비스인 Glance, 컴퓨트 노드들을 관리하는 Nova, 네트워크 서비스를 관리하는 Neutron ServerML2 Plugin, 데쉬보드 서비스인 Horizon이 설치됩니다. 이 외에 필요에 따라서 블록 스토리지 서비스인 Cinder, 오브젝트 스토리지 서비스인 Swift, 데이터베이스 서비스인 Trove, 오케스트레이션을 담당하는 Heat, 텔레미터 서비스인 Ceilometer를 설치할 수 있습니다.

네트워크 노드에는 Neutron 서비스의 기본 플러그인 ML2가 설치되며, L2 에이전트인 OpenvSwitch, L3 에이전트, DHCP 에이전트가 설치됩니다.

마지막으로 컴퓨트 노드에는 오픈스택의 기본 하이퍼바이저인 KVM이나 QEMU가 설치되며, 네트워크 서비스로 ML2 플러그인, L2 에이전트인 OpenvSwitch가 설치됩니다. 이때 컨트롤러 노드에 Ceilometer가 설치되어 있다면, 컴퓨트 노드에는 Ceilometer 에이전트를 설치해야 합니다.

네트워크 인터페이스는 컨트롤러 노드일 경우 매니징을 위한 모니터링 및 관리용 인터페이스 하나만 있으면 됩니다. 그러나 네트워크 노드에는 컨트롤러 노드와 연결되는 인터페이스 하나, 컴퓨트 노드 간의 통신을 담당하는 인터페이스 하나, 외부 네트워크와 연결을 하기 위한 인터페이스 하나 이렇게 총 3개의 인터페이스가 필요합니다. 컴퓨트 노드는 컨트롤러 노드와의 연결을 위한 인터페이스 하나, 네트워크 노드와 컴퓨트 노드 간 연결을 위한 인터페이스 이렇게 2개가 필요합니다.


 

nova-network를 이용하는 오프스택 네트워킹 구성

Neutron을 사용하지 않고 기존 네트워킹 서비스인 nova-network를 사용해서 오픈스택을 설치한다면 컨트롤러 노드, 컴퓨트 노드 이렇게 서버 2대 이상이 필요합니다.

컨트롤러 노드에 MySQL이나 MariaDB가 설치되고 메시지 서비스로 RabbitMQQpid가 설치됩니다. 기본 서비스 역시 인증을 위한 Keystone, 이미지 서비스인 Glance, 컴퓨트 서비스인 Nova, 데쉬보드 서비스인 Horizon이 설치됩니다. Neutron과 달리 Nova에서 네트워크 서비스를 포함하므로 별도의 네트워크 서비스를 설치하지 않습니다. 필요에 따라 설치되는 서비스들은 Neutron과 마찬가지로 블록 스토리지 서비스인 Cinder, 오브젝트 스토리지 서비스인 Swift, 데이터베이스 서비스인 Trove, 오케스트레이션을 담당하는 Heat, 텔레미터 서비스인 Ceilometer가 설치됩니다.

컴퓨트 노드에는 하이퍼바이저인 KMV이나 QEMU가 설치되며, nova-network가 함께 설치됩니다. 컨트롤러 노드에 Ceilometer를 설치하였으므로 컴퓨트 노드도 Ceilometer 에이전트를 설치합니다. 컴퓨트 노드의 자원 역시 얼마나 썼는지 모니터링을 하려면 자원 정보를 수집하는 에이전트가 설치되어야 합니다. 수집된 자원 정보는 컨트롤러 노드에 설치된 Ceilometer를 통하여 사용자에게 알려줍니다.

네트워크 인터페이스 카드는 Neutron과 마찬가지로 사용됩니다. 컨트롤러 노드는 모니터링과 관리를 위한 인터페이스 하나가 필요합니다. 그리고 컴퓨트 노드는 컨트롤러 노드와 연결을 위한 인터페이스 하나, 외부 네트워크와 통신을 하기 위한 인터페이스 하나 이렇게 인터페이스 2개가 필요합니다.


이렇게 해서 서비스가 되는 오픈스택을 설치하기 위한 첫번째 준비과정인 시스템 구성도를 그려보았습니다. 다음시간에는 오픈스택을 설치하기 위한 두번째 준비과정을 살펴보도록 하겠습니다. 


그럼, 다음시간에 다시 만나요~!! ^^ 

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack2014.11.13 00:09

안녕하세요~!!


요즘들어 OpenStack의 인기가 급상승하고 있다는 생각을 종종 하곤 합니다. 

OpenStack에 관심이 없던 회사도 오픈스택이 대체 뭐야? 뭐가 어떻길래 오픈스택~ 오픈스택~ 하는거야? 라는 반응을 보입니다. 오픈스택하면 거들떠보지도 않았던 VMWare와 시스코까지 오픈스택을 지원하겠다고 발표를 했습니다.


오픈스택은 무엇일까요? 오픈스택은 일종의 미들웨어와 같은 역할을 합니다. 운영체제와 시스템 사이에서 사용자에게는 자원을 할당해주고 운영체제 하단에서는 가상자원 및 물리자원을 관리하는 역할을 합니다.  


대부분의 사람들은 오픈스택이 가상자원을 지원하는 하이퍼바이저나 네트워크를 담당하는 가상 스위치, 데이터를 저장하기 위한 스토리지, 그 외에 데이터베이스 및 이미지를 모두 설치하고 관리해 준다고 생각합니다. 그래서 그 모든것들이 오픈스택이라고 생각합니다. 물론 오픈스택 설치 가이드를 보면 기본적인 것들을 설치하는 방법이 포함되어 있긴 하지만, 오픈스택의 범위에 들어가지는 않습니다. 


요즘 개발하는 대부분의 시스템들은 Open API라는 것을 제공하는데, Open API는 특정 자원을 열람해 보거나 사용하기 위한 기능을 API로 제공하고 있습니다. 아주 아주 예전에는 DB끼리 연동하여 자원을 가져다 썼지만 지금은 API를 오픈하여 파라메터만 넘겨주면 내가 원하는 데이터를 받아볼 수 있습니다. 


오픈스택의 모든 서비스들은 이렇게 API를 제공합니다. API를 이용해 자원을 확인할 수 있고, 확인된 자원의 상세정보를 확인할 수 있습니다. 또한 자원을 요청할 수도 있습니다. 거기에 사용자들이 쉽게 사용할 수 있도록 웹 UI까지 지원합니다.


그렇기 때문에 오픈스택을 기반으로 하는 소프트웨어를 자유자재로 개발할 수 있는것입니다.




또한 오픈스택은 Java에서 추상화 클래스 혹은 인터페이스와 비슷하다고 생각할 수 있습니다. 인터페이스에서 구현할 기능명을 명시해 놓고 실제 구현을 하는 부분에서는 그 어떤것이 와도 되는것처럼 오픈스택 역시 사용자에게 서비스되는 모습은 같지만, 실제로 서비스 되는 밑단에는 하나가 아닌 수많은 회사의 장비와 시스템이 와도 오픈스택을 사용할 수 있는것 처럼 말입니다. 


이런 개방 구조로 오픈스택을 설계하고 개발하였기 때문에 많은 회사들이 오픈스택에 관심을 갖기 시작했고, 오픈스택을 지원하기 시작했습니다. 오픈스택을 지원하는 회사들이 늘어나고, 오픈스택에서 지원하는 서비스의 수가 늘어나다 보니, 다양한 고객층의 요구사항을 충족할 수 있으며, 대형 벤더 회사들의 홍보 및 오픈소스 활동이 활발해 졌습니다.


아래 보이는 그림은 오픈스택 각각의 서비스에 지원되는 드라이버를 한눈에 볼 수 있도록 그림으로 표현해 본 것입니다. Neutron 같은 경우에는 SDN 개념이 들어오면서 SDN을 지원하는 네트워크 장비를 비롯해 다양한 컨트롤러들이 등장하기 시작했습니다. 스토리지 같은 경우에는 스토리지를 생산하는 대부분의 업체들이 오픈스택과 연동될 수 있도록 스토리지 API를 제공합니다. Nova도 여러 하이퍼바이저를 지원합니다. 오브젝트 스토리지 서비스인 Swift는 어떤가요? 단독으로 구성될 수 있으며, AWS의 S3 API와 연동도 됩니다. Swift API는 그대로 사용하되 밑단의 스토리지 부분은 다른 스토리지를 사용할 수도 있습니다. Keystone은 또 어떤가요? 사용자 정보를 관리하고 위한 MySql을 사용하는데, 보안성을 높이기 위하여 LDAP도 사용할 수 있습니다. 게다가 근래에는 빅데이터의 핵심 기술인 Hadoop과 mongoDB까지 흡수를 하였습니다.


오픈스택은 이런 수많은 장점들 때문에 많은 회사에서 지원하고 있으며, 활용 사례 또한 증가하고 있습니다. 사례가 많다는 뜻은 오픈스택이 이제 어느정도 안정이 되었다는 의미이기도 합니다. 처음에는 불안정하여 사용하기 힘들었으나, 계속되는 업데이트 과정을 통해 매우 비교적 안정이 되어 현재는 Private 클라우드 시스템은 물론 Public 클라우드 시스템으로도 손색이 없을 정도 입니다.



또한 오픈스택의 가장 큰 인기비결은 바로 오픈스택이 오픈소스라는 점입니다. 그래서 누구나 소스를 가져다 사용할 수 있으며, 누구나 참여해 개발을 할 수 있다는 점입니다. 이렇게 큰 시스템을 혼자서 개발해야 한다고 상상을 해 봅시다. 개발 기간도 기간이지만, 기술력이며 개발인원까지 정말 어마어마하여 엄두가 나질 않습니다. 그런데 오픈소스이기에 이미 대부분의 서비스가 개발이 되어 있기 때문에 이를 활용해서 다른 서비스를 추가 개발할 수 있다는 점입니다. 


그렇기 때문에 OpenStack이 떠오르는 이유가 아닐까? 하고 조심스럽게 생각해 봅니다.

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Book2014.11.11 21:50

안녕하세요~!!


오늘은 책에 대한 이야기 그리고, 우분투에 대한 이야기를 좀 해 볼까 합니다. 


"오픈스택을 다루는 기술"의 5장은 서비스를 할 수 있는 오픈스택 설치를 다루고 있습니다.

제가 설치하고 테스트 했던 우분투 리눅스의 OS 버전은 12.04 LTS 버전이였으며, 오픈스택의 버전은 IceHouse였습니다.


그런데, 얼마전 10월 16일 오픈스택 Juno가 릴리즈되었고, 우분투 서버 역시 14.04.1까지 버전이 업그레이드되었습니다. 

우분투에서 네트워크 IP를 설정하려면 /etc/network/interfaces 파일을 수정해 주어야 합니다. 그리고, 시스템을 재부팅하지 않고 네트워크를 재설정하려면 ubuntu 12.04일 경우에는 sudo /etc/init.d/networking restart 명령어를 실행하면 되고, ubuntu 13.10부터는 sudo service networking restart 명령어를 실행 해주면 네트워킹이 재 적용됩니다. 


여기서, 문제가 발생합니다. Ubuntu 14.04 버전에서는 service networking restart 명령어를 실행하였을 때 네트워크 설정이 되지 않고 아래와 같은 메시지가 보이면서, 아무런 반응을 하지 않습니다.

$ sudo service networking restart

stop: Job failed while stopping

start: Job is already running: networking


예전에는 우분투가 업그레이드 되면 당연히 이 문제를 해결할 것이라고 생각을 했었는데, 아직까지도 이런 현상은 계속해서 확인이 되고 있습니다. 


오늘은 이런 현상을 쓰고자 하는것이 아니라, 14.04에서 오픈스택을 설치했을 경우 네트워크를 어떻게 설정할 수 있는지에 대한 방법을 공유하고자 이렇게 포스팅을 합니다.


일단, 3가지 방법이 있습니다. 


첫번째!  /etc/network/interfaces 파일의 네트워크 IP 설정을 마치면 시스템을 재부팅합니다. 가장 깔끔하고 쉬운 방법입니다. 이전 IceHouse install 문서에서는 service networking restart를 하라고 되어 있었지만, 최근 릴리즈된 Juno의 Install 문서에서는 재부팅을 하라고 변경되어 있습니다. 재부팅 명령어는 아래와 같습니다.

$ sudo reboot



두번째! 설정한 네트워크 인터페이스를 내렸다 올려도 네트워크를 설정할 수 있습니다. 바로 아래와 같은 명령어로 가능합니다. 여기서 eth0이 바로 interfaces에서 설정해 준 네트워크 인터페이스명입니다.

sudo ifdown eth0 && sudo ifup eth0



마지막 세번째!! 

우선, 네트워크 설정 명령어가 잘 실행이 되는 13.10 서버의 /etc/init/networking.conf 환경설정파일과 /etc/init.d/networking 실행 파일을 14.04 서버와 비교하여 봤습니다. 그리고, 13.10 서버의 networking.conf 환경설정파일과 networking 실행파일을 14.04에 대체합니다. 그러면, 14.04에서도 네트워크 설정이 아주 잘 됩니다.

root@ubuntu:/etc/init# mv networking.conf networking.conf.1401 #우선, 기존 환경설정 파일을 백업합니다.

root@ubuntu:/etc/init# tar xvf networking.tar    #13.10에서 가져온 환경설정파일의 압축을 풉니다.

networking.conf

root@ubuntu:/etc/init# diff networking.conf networking.conf.1401 #그리고, 두파일을 비교합니다.

13c13
<       and (stopped udevtrigger or container)) or runlevel [2345] #13.10에 있는 파일 내용입니다.
---
>     and (stopped udevtrigger or container)) or runlevel [2345] or stopped networking RESULT=failed PROCESS=post-stop EXIT_STATUS=100 #14.04에서는 네트워크 stop시 몇가지를 체크하도록 변경되었습니다.
16a17,20  #아래 부분은 14.04에 추가된 부분입니다. 네트워크 stop 명령어가 들어오면 정상종료가  됩니다.
>     if [ "$UPSTART_EVENTS" = "stopped" ] && [ "$UPSTART_JOB" = "networking" ] && [ "$EXIT_STATUS" = "100" ]; then
>         exit 0
>     fi
21a26,31 # 아래 부분 역시 14.04에 추가된 부분입니다. 네트워크 stop 관련된 if문입니다.
>     if [ -z "$UPSTART_STOP_EVENTS" ]; then
>         echo "Stopping or restarting the networking job is not supported."
>         echo "Use ifdown & ifup to reconfigure desired interface."
>         exit 100
>     fi
root@ubuntu:/etc/init# cd ../init.d
root@ubuntu:/etc/init.d# mv networking networking.1401 #이번에는 실행파일을 백업합니다.
root@ubuntu:/etc/init.d# tar xvf network.tar  #13.10에서 가져온 실행파일의 압축을 해제합니다.
networking
root@ubuntu:/etc/init.d# diff networking networking.1401  # 두 파일을 비교합니다.
14a15 #14.04 에 추가된 변수입니다.
> STATEDIR="$RUN_DIR/state"
21,27d21 #아래는 13.10의 네트워크를 실행하기위해 시스템 상태를 체크하는 부분입니다.
< # Make sure that it's clear to the user that they shouldn't use this
< # script under upstart
< if init_is_upstart; then
< echo "ERROR: Calling a sysvinit script on a system using upstart isn't supported. Please use the 'service' command instead."
< exit 1
< fi
57a52,54 #14.04에서는 위 부분이 사라졌으며, check_ifstate 함수에 아래와 같은 조건문이 추가 되었습니다.
> if ! chown root:netdev "$RUN_DIR" ; then
>    log_warning_msg "can't chown $RUN_DIR"
> fi
162a160,162 #14.04의 reload하는 부분에 아래와 같은 조건문이 추가 되었습니다.
> if init_is_upstart; then
> exit 1
> fi
166c166 #13.10의 인터페이스 체크하는 부분이
< state=$(cat /run/network/ifstate)
--- #14.04에서는 아래와 같이 변경되었습니다.
> state=$(ifquery --state)
root@ubuntu:/etc/init.d# ifconfig #네트워크 설정을 하기전 먼저 IP를 확인합니다.
eth0      Link encap:Ethernet  HWaddr 08:00:27:bd:71:c0  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:febd:71c0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2568 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1547 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:236344 (236.3 KB)  TX bytes:353671 (353.6 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@ubuntu:/etc/init.d# service networking restart  #네트워크를 재시작합니다. 그러나 아직 서비스가 적용전인듯..
stop: Job failed while stopping
networking start/running
root@ubuntu:/etc/init.d# service networking restart #다시 네트워크를 재시작했습니다. 이제서야 적용이 된 듯...
networking stop/waiting
networking start/running
root@ubuntu:/etc/init.d# ifconfig # 재시작후 다시 IP 확인합니다. 설정이 제대로 되었습니다.
eth0      Link encap:Ethernet  HWaddr 08:00:27:bd:71:c0  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:febd:71c0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2892 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:264381 (264.3 KB)  TX bytes:375503 (375.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:ee:09:16  
          inet6 addr: fe80::a00:27ff:feee:916/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:318 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:75247 (75.2 KB)  TX bytes:1226 (1.2 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@ubuntu:/etc/init.d# 


13.10 네트워킹 파일과 14.04 네트워킹 파일은 Ubuntu 서버에서 각각 확인하여 보실수 있지만 편의를 위해 이곳에 올려드리도록 하겠습니다. 언제라도 다운로드 받아 보시길 바랍니다.



networking.1310

networking.1401

networking.conf.1310

networking.conf.1401



위 방법은 아래 사이트를 참조하시면 더 많은 정보들을 얻으실 수 있습니다.

http://askubuntu.com/questions/441619/how-to-successfully-restart-a-network-without-reboot-over-ssh

http://snoopybox.co.kr/1720


그럼, 다음에 다시 만나요~~~ ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
Life2014.11.05 15:23

안녕하세요~!!


제가 오는 11월 15일 토요일 선릉 D.Camp에서 있을 2014 KCD(Korea Community Day)에서 발표를 합니다.

본 세미나는 제가 책을 출간하고 처음으로 하는 세미나인 것 같습니다. 그래서, 많이 설례이고 긴장이 됩니다. 


이번에는 책 내용중 일부인 데브스택으로 오픈스택을 설치할 때 알아두면 좋은 것들에 대해 이야기를 한번 해 볼까 합니다. 


오픈스택을 시작하는 대부분의 사람들이 오픈스택을 설치할 때 사용하는 방법이 바로 데브스택입니다. 그래서, 질문도 많고, 쉽다고 하는데 삽질도 많이 하는 데브스택 설치시 주의점과 좋은점들을 공유하려 합니다. 


또한 책 출간 후 처음으로 하는 세미나인만큼 특별한 이벤트를 진행할까 합니다. 

오픈스택 한국 커뮤니티에서 오신 분들 중 2분과 그 외에 참여하신 분들 중 퀴즈, Q&A 등의 참여도가 가장 좋은 2분을 선정하여 이번에 출간한 "오픈스택을 다루는 기술"을 선물로 드리도록 하겠습니다.


그럼, 많은 관심과 참여 부탁드립니다. 


제4회 KCD(Korea Community Day) 신청하려 가기 -----> http://kcd2014.onoffmix.com/




저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.10.27 23:34

안녕하세요~!! 


Neutron을 이용한 오픈스택을 설치해 보자고 해 놓고 가상서버만 생성하고 아무것도 안하고 있었네요~!! 오늘에서야 다음 강의를 포스팅해 봅니다. 


지난 시간에 우리는 버철박스를 이용하여 가상 서버를 생성하고, 생성한 가상서버에 우분투를 설치했으면 이제부터 오픈스택을 설치할 준비가 된 것입니다. 준비가 완료되었으면, 데브스택을 설치하기 전에 사전 준비를 합니다. 사전 준비는 지난 제20강 오픈스택 설치 5편 - 오픈스택을 설치해 보자! 에서 다루었으므로 지난 강의를 참고하여 설치하면 됩니다.

이제 DevStack 스크립트를 다운로드 받고 Neutron 오픈스택을 설치해 보도록 하겠습니다.


1. git을 이용해 DevStack 쉘 스크립트를 다운로드 합니다.

stack@ubuntu:~$ git clone git://github.com/openstack-dev/devstack.git

Cloning into 'devstack'...

remote: Reusing existing pack: 16318, done.

remote: Counting objects: 7, done.

remote: Compressing objects: 100% (7/7), done.

remote: Total 16325 (delta 2), reused 1 (delta 0)

Receiving objects: 100% (16325/16325), 4.13 MiB | 289 KiB/s, done.

Resolving deltas: 100% (11176/11176), done.

 

2. devstack 이 정상적으로 다운로드 되었는지 아래와 같은 명령어를 통해 확인합니다.

stack@ubuntu:~$ ll

total 24

drwxr-xr-x  3 stack stack 4096 Mar  7 11:23 ./

drwxr-xr-x  5 root  root  4096 Mar  7 11:20 ../

-rw-r--r--  1 stack stack  220 Apr  4  2012 .bash_logout

-rw-r--r--  1 stack stack 3486 Apr  4  2012 .bashrc

drwxr-xr-x 10 stack stack 4096 Mar  7 11:24 devstack/

-rw-r--r--  1 stack stack  675 Apr  4  2012 .profile

stack@ubuntu:~$

 

3. 이번에는 localrc 파일을 설정해 보도록 하겠습니다. localrc 파일은 어떻게 설정하느냐에 따라 서비스의 설치 유무를 결정할 수 있고, nova-network로 설치할 것인지, neutron으로 설치할 것인지를 설정할 수 있습니다. 여기에서는 single node, neutron 방식으로 DevStack을 설치해 보도록 하겠습니다.

stack@ubuntu:~/devstack$ vi localrc

###########################

# Date : 2014.10.27                   #

# Name : naleejang                    #

###########################

# Devstack localrc for neutron all-in-one

 

# default

HOST_IP=10.0.3.15

DEST=/opt/stack

 

# logs

LOGFILE=$DEST/logs/stack.sh.log

VERBOSE=True

LOG_COLOR=False

SCREEN_LOGDIR=$DEST/logs/screen

 

# network ip

FLOATING_RANGE=192.168.0.0/24

PUBLIC_NETWORK_GATEWAY=192.168.0.100

Q_FLOATING_ALLOCATION_POOL=start=192.168.0.200,end=192.168.0.250

 

# neutron - networking service

DISABLED_SERVICES=n-net

ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,q-metering,neutron

 

# neutron - load balancing

ENABLED_SERVICES+=,q-lbaas

 

# heat - orchestration service

ENABLED_SERVICES+=,heat,h-api,h-api-cfn,h-api-cw,h-eng

HEAT_STANDALONE=True

 

# ceilometer - metering Service (metering + alarming)

ENABLED_SERVICES+=,ceilometer-acompute,ceilometer-acentral,ceilometer-collector,ceilometer-api

ENABLED_SERVICES+=,ceilometer-alarm-notify,ceilometer-alarm-eval

  

# system password

ADMIN_PASSWORD=openstack

MYSQL_PASSWORD=openstack

RABBIT_PASSWORD=openstack

SERVICE_PASSWORD=openstack

SERVICE_TOKEN=tokentoken

 

4. localrc 파일 설정이 완료되면 stack.sh를 실행하고, 30여분정도를 기다리면 설치가 완료됩니다.

stack@ubuntu:~/devstack$ ./stack.sh

 


이렇게 해서 Neutron을 이용한 오픈스택을 설치해 보았습니다. 다음 시간에는 설치한 오픈스택을 이용하여 Neutron 네트워크를 생성해 보도록 하겠습니다. 


그럼~~~ 모두 다음 시간에 다시 만나요!! ^^ 

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
My Dream2014.10.23 17:56

안녕하세요~!! 


오늘 꿈이 현실이 되는 아주 기분 좋은 꿈을 꾸었습니다. 꿈인줄만 알았는데, 꿈이 아니였습니다. 


삼년전 오픈스택이라고 하는 낯선 꿈을 만났습니다. 처음에는 낯설고 어려워서 어떻게 해야할지 몰랐습니다. 그래서, 늘 연구하고 밤을 세워 보고 또 봤습니다. 눈이 내리던 어느날이였습니다. 보고 보고 또 보고 하다가 시간이 가는줄 모르고 그렇게 추운 연구실 한 구석에서 밤을 지새운적도 있었습니다. 엄마 손이 많이 필요한 딸아이를 아빠한테 맡긴채 주말에도 연구실에서 혼자 그렇게 보고 또 봤습니다. 


낯선 곳에서 새로운 것을 배울 수 있게 해주고 새로운 사람들을 만날 수 있게 해 준 그 곳~!! 바로 기술 커뮤니티입니다. 평일 퇴근후에 기술 커뮤니티 세미나를 찾아다니면서 많은 것들을 배웠습니다. 그리고, 사람들을 만났습니다. 주말에 하는 세미나에도 참여했습니다. 저는 커뮤니티에서 정말 많은 것들을 받았습니다. 그래서, 커뮤니티에 다시 돌려주고 싶었습니다. 내가 받은 혜택들을 많은 분들과 함께 나누고 싶었습니다.


지난 시간동안 노력했던 결과를 책으로 엮었습니다. 밤새우며 고생했던 경험들을 모두 책으로 담았습니다. 

이 책으로 인해 클라우드를 접하려는 많은 분들에게,... 오픈스택을 하고자 하는 많은 분들에게 도움이 되었으면 합니다.


Yes24 예약하러 가기 ---> http://www.yes24.com/

교보문고 예약하러 가기 ---> http://www.kyobobook.co.kr/

알라딘 예약하러 가기 ---> http://www.aladin.co.kr

G마켓 예약하러 가기 ---> http://item2.gmarket.co.kr


OpenStack Class 카테고리의 오픈스택 강좌는 그대로 진행할 예정입니다. 앞으로도 많이 사랑해 주세요~!!


감사합니다.


저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.10.20 22:05

안녕하세요~!!

정말 오랜만에 글을 써보는것 같습니다. 그동안 이사를 하느라 글을 쓸 시간이 없었거든요~~~ 

오늘부터 다시 글 쓰기에 도전해 보도록 하겠습니다. 제 글 많이들 기다리셨죠??


지난 시간에 Neutron을 설치하고 위한 네트워크 구성도를 함께 그려봤었습니다. 그럼, 이번에는 데브스택을 이용하여 Neutron 오픈스택을 한번 설치해 보도록 해 보겠습니다.


데브스택을 이용하여 오픈스택 Neutron을 설치 할 경우 PC 한대에 모든 컴포넌트를 설치할 경우에는 VLAN 모드나 GRE 모드가 필요하지는 않습니다. VLAN모드나 GRE 모드는 여러 컴퓨트 노드에 설치할 경우에 필요한 것이며, 우리가 생성한 PC 한대에서는 필요하지 않습니다. 그러므로, 여기서는 가장 기본적인 Flat 방식의 Neutron 오픈스택을 설치해 보도록 하겠습니다.


버철박스에서의 가상서버 생성

이미 앞에서 버철박스에서 가상서버를 생성하는 방법을 살펴보았기 때문에 이번에는 가상 서버 생성시 이전과 다르게 설정해야 할 부분만 따로 살펴보겠습니다.

 

1.     버철박스를 이용하여 가상서버를 만든 후 설정 버튼을 클릭합니다설정 창이 뜨면 시스템에서 CPU를 설정하고저장소에서 설치 할 우분투 서버를 설정한 후 아래와 같이 네트워크 탭을 클릭합니다어댑터1에서 브리지 어댑터를 선택하고 고급에서 무작위 모드를 모두 허용으로 선택합니다지금 설정한 어댑터는 우분투 서버의 eth0이며외부 터미널로 사용됩니다.

 

2.     어댑터 2를 선택한 후 이번에는 NAT를 선택합니다. NAT는 우분투 서버의 eth1이며매니지먼트용으로 사용됩니다.


3.     NAT를 사용하려면 포트 포워딩이 필요합니다포트 포워딩(P)를 클릭하면 아래와 같은 창이 뜹니다. SSH로 접속을 하기 위한 22데쉬보드 접속을 위한 80, VNC 콘솔 연결을 위한 6080 포트를 추가합니다.


4.     우분투 서버를 설치한 후에 SSH에 접속을 하기 위해서 윈도우 Host 컴퓨터에서 아래와 같이 localhost로 설정하면 버철박스에 설치된 우분투 서버에 접속할 수 있습니다. 


이렇게 해서 오늘은 버철박스를 이용한 가성서버를 생성해 보았습니다. 가상서버를 생성했으니, 우분투 서버도 설치해야 되겠죠~!! 이제 우분투 서버는 여러분들도 설치하실수 있을테니 여기서는 그냥 넘어가도록 하겠습니다.


그럼, 다음시간에는 데브스택을 이용해서 Neutron 오픈스택을 설치해 보도록 하겠습니다.

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.10.06 23:27

안녕하세요~!!!


지난주에는 이것저것 할일이 참 많았던 한 주였던것 같습니다. 매일 매일 강좌를 올리자 하고 맘을 굳게 먹었건만, 할일이 많으니 쉽지가 않는 노릇인 것 같습니다. 그래서, 반성하는 의미로 다시 열심히 글을 올려봅니다.


지난 시간에는 네트워크 서비스인 Neutron의 기본 드라이버인 ML2에 대한 것들을 정리해 보는 시간을 가졌었습니다. 오늘부터는 실제로 Neutron을 이용한 오픈스택을 설치해 보도록 하겠습니다. 


그러나 그 전에 반드시 네트워크 구성도를 그려보아야 합니다. 네트워크 구성도를 그려보지 않고 설치를 하게 되면 환경설정에서 어떤 IP를 설정해야 할 지 몰라 당황하게 됩니다. 그러므로 이번에도 어떻게 IP를 설정할 지 네트워크 구성도를 먼저 그려보도록 하겠습니다.



우선, IP 공유기의 게이트웨이 IP192.168.0.1이고, 서브 넷 마스크는 255.255.255.0이라고 가정합니다. 버철박스를 설치한 윈도우 PC IP192.168.0.2이고 버철박스를 이용해 생성한 우분투 가상서버의 IPNAT를 사용한 10.0.3.15입니다. Fixed IP Range는 주로 사용하는 IP 범위인 10.0.0.0/2410.1.0.0/24을 사용하고 Floating IP RangeIP 공유기의 IP 범위인 192.168.0.0/24을 사용합니다. Nova-network와 달리 Public Gateway가 필요한데 이때 IP192.168.0.100을 사용합니다. 이때 공유기 IP를 모두 다 사용하면 안되므로 할당 가능한 IP 범위를 설정해야 합니다. 할당 가능한 IP 범위는 192.168.0.200에서 192.168.0.250을 사용해 보도록 하겠습니다


이렇게 해서 오늘은 Neutron을 설치하기 위한 네트워크 구성도를 그려보았습니다. 여러분들도 자신이 가지고 있는 네트워크 환경을 이용하여 저와 같이 네트워크 구성도를 함께 그려보는 건 어떨까요?


그럼, 다음 시간에 다시 만나요~~~ ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.09.29 22:25

안녕하세요~!!


지난시간까지 DevStack을 이용하여 오픈스택을 설치해보고 사용해 보았습니다. 설치할때마다 하나하나 화면을 캡쳐해야 하고, 명령어를 전부 스크랩해야만 했었지만, 많은 분들이 방문해 주시고, 도움을 많이 받았다는 메시지에 힘이 나는 것 같습니다. 


이전에 설치한 DevStack은 가장 기본적인 nova-network로 오픈스택을 설치하였습니다. nova-network는 nova에서 제공하는 네트워크 서비스로 IP를 할당할 수 있는 개수가 제한됩니다. 이런 문제를 해결하고자 나온 네트워크 서비스 프로젝트가 바로 Neutron입니다. Neutron은 다양한 SDN 스위치 플러그인을 연동하여 사용할 수 있으며, VLAN, 터널링 등의 네트워킹 방식을 지원합니다. 그래서, 오늘은 Neutron에서 가장 많이 사용하고, 기본적으로 제공하는 플러그인인 ML2에 대해 알아보도록 하겠습니다.



ML2 (Modular Layer 2)

ML2는 Havana 버전을 릴리즈 하면서 처음으로 나온 플러그인으로, IceHouse에서 기본 플러그인으로 채택되었습니다. ML2는 기존에 가장 많이 사용했던 OpenvSwitch, Linuxbridge 대신 다양한 네트워크 형태와 메커니즘을 사용 할 수 있습니다. 

ML2를 사용하면 OpenvSwitch, Hyper-V, OpenDaylight와 같은 SDN(Software Defined Networking) 스위치와 Arista나 Cisco의 Nexus와 같은 실제 물리 스위치를 사용할 수 있습니다. 또한 이런 스위치를 사용하여 VLAN, GRE, VxLAN, Flat 방식의 네트워킹 타입을 지원합니다.



ML2 타입 드라이버 (Type Drivers)

Neutron 설치를 들어가기에 앞서 ML2에서 지원하는 네트워킹 방식을 이해를 하고 있어야만 어떤 네트워크 타입으로 설치할 것인지, Neutron 네트워크가 어떻게 작동하는지를 이해할 수 있습니다. 여기서는 ML2 타입 드라이버로 지원되는 VLAN 방식, GRE 터널링 방식, VxLAN 방식이 무엇이고, 어떻게 동작되는지에 대해 알아보도록 하겠습니다.


VLAN (Virtual LAN)

일반적으로 한대의 스위치에서는 하나의 랜을 구성할 수 있습니다. 랜(LAN: Local Area Network)은 소규모의 사무실이나 학교에서 사용하는 네트워크 방식입니다. VLAN은 아래 그림과 같이 물리 스위치는 한대인데, 그 안에 가상으로 나누어진 랜을 구성할 수 있습니다. 

 

많은 회사와 많은 사용자들이 가상 인스턴스(서버)를 생성하는 오픈스택 역시 이런 VLAN을 사용할 수 있습니다. 오픈스택에서 VLAN을 사용하려면 Neutron을 설치하면 VLAN을 사용할 수 있습니다. Neutron의 기본 플러그인 ML2 역시 VLAN을 지원합니다. 아래 그림은 VLAN 모드의 컴퓨트 노드에 생성된 VM이 어떻게 구성되어 있는지를 보여주는 그림입니다. 

 


GRE (Generic Route Encapsulation)

GRE는 인터넷 프로토콜 위에 가상 PTP(Point to Point)를 제외한 다양한 네트워크 레이어 프로토콜 범위를 캡슐화 할 수 있는 터널링 프로토콜로 시스코에 의해 개발되었습니다. GRE 프로토콜은 클라이언트 간 또는 클라이언트와 서버 간에 VPN(Virtual Private Network)을 만들기 위해 PPTP(Point to Point Tunneling Protocol)과 함께 사용됩니다. GRE는 기존 데이터 패킷을 암호화하여PPP 헤더가 있는 것처럼 인식하도록 구성됩니다. 아래 그림은 R1에서 R4 사이에 터널이 형성이 되고, 해당 터널을 통하여 데이터가 전송됩니다. 

 오픈스택 Neutron을 GRE 모드로 설치했을 경우 컴퓨트 노드에 생성된 VM은 다른 컴퓨트 노드와 통신을 할 경우 터널링 된 경로로 패킷을 주고 받게 됩니다.



VxLAN (Virtual Extensible LAN)

VxLAN은 대규모의 클라우드 컴퓨팅을 구축할 때 필요한 확장성을 해결하기 위한 가상 네트워크 기술입니다. 좀 더 구체적으로 말하면 VLAN을 사용하여 MAC 기반의 OSI 레이어 2 이더넷 프레임 안에 레이어 3 UDP 패킷을 캡슐화한 기술입니다. VxLAN을 처음 접하고 이해를 하기 위해서는 오버레이에 대해 알고 있으면 VxLAN을 이해할 때 도움이 많이 됩니다. 

오버레이는 데이터센터 내에 구축된 물리 네트워크 장비 위에 가상의 얇은 도화지를 올려 놓았다고 생각할 수 있습니다. 물리 네트워크에 연결된 서로 다른 컴퓨트 노드의 VM들간에 통신을 할 경우 새로 올려 놓은 도화지 위에 가상의 터널을 그리고, 그 터널을 통해서 통신을 할 수 있게 됩니다. 이 때 새로 그린 가상의 터널이 바로 VxLAN 터널인 것입니다.


메커니즘 드라이버 (Mechanism Drivers)

ML2는 타입 드라이버 이외에 메커니즘 드라이버를 제공합니다. 기존 Neutron을 설치할 경우에는 Linuxbridge나 OpenvSwitch를 설치하여 사용하였습니다. 이때 어떤 컴퓨트 노드는 Linuxbridge가 설치되어 있고 다른 컴퓨트 노드는 OpenvSwitch가 설치되어 있다고 가정했을 경우 이 두 컴퓨트 노드는 서로 연동을 할 수가 없었습니다. 그래서 나온 개념이 바로 ML2의 메커니즘 드라이버인 것입니다. 메커니즘 드라이버의 Agent는 기존에 사용하던 OpenvSwitch, Linuxbridge, Hyper-V등을 그대로 사용할 수 있으며, Arista 메커니즘 드라이버나 Cisco Nexus 메커니즘 드라이버를 사용할 수 있습니다.

아래 그림은 컴퓨트 노드마다 서로 다른 Agent가 설치되어 있을 경우 ML2 플러그인으로 모두 연동을 할 수 있다는 것을 보여줍니다. 

 

이렇게 설치된 서로 다른 Agent들은 아래 그림의 Modular Agent로 추상화 되어 어떤 Agent가 와도 연동이 가능하다는 것을 확인 할 수 있습니다.

  

이렇게해서 오늘은 Neutron의 기본 플러인 ML2의 모든 것에 대해 제가 알고 있는 모든 것들을 정리해 보았습니다. 매일 매일 봐도 어렵기만 한 네트워크지만 기본 개념을 알고 시작한다면 조금은 더 접근하기 쉬울꺼라 생각이 듭니다. 

그럼, 다음시간까지 모두들 열공하세요~~~ ^^


저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.09.24 21:42

안녕하세요~!!


DevStack으로 오픈스택 설치는 모두 완료되었을꺼라 생성을 합니다. 오늘은 Dashboard에 접속도 해보고, Dashboard를 이용하여 첫 번째 인스턴스를 생성해 보도록 하겠습니다.

 

첫 번째 인스턴스 생성

 

1. 우선 아래 그림처럼 Dashboard에 접속합니다. 

2. DevStack 설치 시 설정하였던 localrc 파일의 Admin 패스워드를 입력하면 아래와 같이 관리자 페이지로 로그인을 할 수 있습니다.


3. 관리자 페이지를 둘러보고 이번에는 demo 사용자로 로그인을 합니다. Demo 사용자의 패스워드 역시 localrc 파일의 Admin 패스워드를 사용하면 됩니다. 인스턴스 생성은 Dashboard의 인스턴스 메뉴에서 생성할 수 있습니다. 아래와 같이 인스턴스 메뉴를 들어가 +인스턴스 시작 이라는 버튼을 클릭합니다.

 

4. 인스턴스 시작 버튼을 클릭하면 아래와 같은 인스턴스 시작 팝업이 뜹니다.


5. 인스턴스 이름을 입력하고, Flavor, 인스턴스 부팅소스를 선택한 뒤 이미지 이름에서 기본으로 올라가 있는 cirros 이미지를 선택합니다. 그리고는 Launch 버튼을 클릭합니다.

 

6. 인스턴스가 생성이 되는 대는 몇 분에서 수 십분 정도를 기다립니다.

  

7. 드디어 인스턴스 생성이 완료 된 것을 확인하실 수 있습니다.

 

8. 인스턴스가 생성이 완료되었으면 인스턴스를 클릭하여 상세정보를 아래와 같이 확인하실 수 있습니다. 인스턴스 개요에는 이름, ID, 현재 상태, 생성일자와 같은 기본 정보와 스팩, IP 주소 등을 확인 할 수 있습니다. 


9. 뿐만 아니라 인스턴스 콘솔로그에서는 가상 인스턴스가 부팅되는 과정도 확인하실 수 있습니다. 


10. 인스턴스 부팅이 완료되면 인스턴스 콘솔을 통하여 인스턴스에 접속할 수 있습니다.


11. 인스턴스 콘솔 화면에서 콘솔만 보려면 여기를 클릭하세요를 클릭하면 콘솔 화면만 별도로 확인할 수 있습니다. Cirros의 사용자 아이디는 “cirros”, 패스워드는 “cubswin:)” 를 입력하고 로그인하여 아래 그림과 같이 ifconfig 를 통한 IP 정보 확인, ping을 통한 인터넷 가능 여부 등을 체크해 보실 수 있습니다. 


이렇게 해서 오픈스택으로 인스턴스를 생성해 보았습니다. 다음시간에는 생성한 인스턴스에 데쉬보드가 아닌 SSH 클라이언트 툴을 이용하여 접속해 보도록 하겠습니다. 그럼 다음에 다시 만나요~~~~ ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.09.19 22:16

안녕하세요~!!


지난 시간까지는 오픈스택을 설치하기 위한 서버를 준비하고 서버에 우분투 리눅스도 설치해 보았습니다. 이번에는 오픈스택을 설치하기에 앞서 쉽게 우분투 서버에 접속하기 위한 방법을 알아보고 네트워크 테스트 베드는 어떻게 구성할지, 네트워크 IP는 어떻게 가져가면 될지를 먼저 그림으로 그려보도록 하겠습니댜. 


SSH Client 프로그램을 이용한 우분투 서버 접속

자주 사용하는 SSH Client 프로그램을 이용하여 접속하면 됩니다.

일단 버철박스 명령창에서 ifconfig를 이용하여 아래와 같이 IP 정보를 확인합니다.


확인된 IP와 설치시 입력했던 아이디와 패스워드를 이용하여 접속합니다. 이런건 검색엔진에 많이 검색되니 제가 굳이 따로 설명하지는 않겠습니다.


네트워크 테스트 베드 구성

오픈스택을 설치하기에 앞서 아래와 같은 네트워크 테스트 베드 구성이 필요합니다. 오픈스택을설치 할 때는 인스턴스(가상서버)에 직접 할당해 주는 Fixed IP 범위와 외부에서 인스턴스에 접속하기 위한 Floating IP 범위가 필요합니다. Fixed IP 범위는 대체적으로 10.0.0.0 대역을 주로 사용하며, Floating IP 범위는 공인 IP 대역이나 특정 지역(인트라넷으로 네트워크가 묶여 있는 곳)에서 접속 할 수 있는 인트라넷 IP 범위가 필요합니다. 그러나, 이런 IP 정보를 잘 모를 경우에는 아래 그림과 같이 IP 공유기를 이용하여 간단하게 네트워크 테스트 베드를 구성할 수 있습니다. 공유기에 따라서 약간의 차이는 있지만, DHCP IP 범위를 설정할 수 있으며, 가상 서버의 IP 또한 공유기에서 할당하는 IP로 직접 설정할 수 있습니다. 뿐만 아니라, Floating IP 범위 또한 자유롭게 지정할 수 있습니다.


우선, IP 공유기를 하나 준비합니다. 그리고 인터넷 전용선을 공유기의 WAN 포트에 연결하고 나머지 다른 포트에는 가지고 있는 컴퓨터를 연결합니다. 이렇게 하면 일단 간단하게 테스트 베드 구성이 완료가 된 것입니다. 나머지 환경설정은 공유기에 접속하여 설정하면 됩니다.

 


네트워크 구성도를 그려보자.

네트워크 테스트 베드가 구성이 되었다면 이번에는 오픈스택을 이용하여 생성할 인스턴스에 어떤 IP를 부여할 것인지, 그리고 Host OSIP는 어떻게 가져갈 것인지에 대한 네트워크 구성도를 먼저 그려봐야 합니다. 네트워크 구성도를 먼저 그려보지 않은 상태에서 오픈스택을 설치할 경우 어떤 IP를 호스트 노드에 설정할 것인지, 어떤 IP 범위를 Fixed IP로 설정할 것인지, 어떤 IP 범위를 Floating IP 범위로 설정할 것인지를 쉽게 알 수 없어 설치할 때 많은 고생을 할 수도 있습니다. 네트워크를 잘 알고 계시는 분들도 네트워크 구성을 할 때는 구성도를 먼저 그려보고 설정을 하니, 처음 해 보는 우리들은 반드시 네트워크 구성도를 그려보고 시작해야 됩니다.

일단 IP 공유기의 게이트웨이 IP192.168.1.1이고, 서브 넷 마스크는 255.255.255.0이라고 가정합시다. 버철박스를 설치한 윈도우 PCIP192.168.1.101이라고 설정하고 버철박스를 이용해 생성한 우분투 가상서버의 IP는 윈도우 PC와의 같은 IP 대역인 192.168.1.20을 사용할 것 입니다. Fixed IP Range는 주로 사용하는 IP 범위인 10.0.0.0/20을 사용하고 Floating IP RangeIP 공유기의 IP 범위 중 일부인 192.168.1.128/28을 사용합니다


Fixed IP가 무엇이고 Floating IP가 무엇인지 대체 /20은 뭐고 /28은 뭔지 잘 모르시겠다구요?? 그럼 아래 글을 읽고 오면 도움이 될 것 같습니다.


Cloud에서 알아야 할 네트워크 이야기 --> http://naleejang.tistory.com/61


지금까지는 오픈스택을 설치하기 위한 준비를 하였습니다. 

그냥 간단하게 설치하면 되는 줄 알았는데 정말 해야할 것 들이 많죠~!! 다음시간에는 실제로 오픈스택을 설치해 보도록 하겠습니다. 그럼, 다음시간에 다시 만나요~~!!! ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.09.17 15:28

안녕하세요~!!


앞시간에 우분투를 설치하기 위한 가상서버 생성과 설정을 모두 마쳤습니다. 이번에는 우분투 서버를 생성한 가상서버에 설치해 보도록 하겠습니다.


1. 생성된 가상 머신을 선택한 후 상단의 시작 버튼을 클릭합니다.


2. 실행 버튼이 클릭되는 순간 콘솔 창이 새롭게 뜨면서 우분투 언어 설정 창이 뜹니다. 이때 한국어를 선택하셔도 상관이 없으나, 설치 후 우분투 업데이트나 오픈스택 설치 시 패키지를 못 가져와 별도로 설정해 주는 작업이 필요할 수도 있습니다. 그래서, 저 같은 경우에는 그냥 영어로 설치를 하며, 여기서는 영어로 설치를 해보도록 하겠습니다.


3. 우리는 우분투 서버를 설치할 것이므로 “Install Ubuntu Server”를 선택하고 엔터를 칩니다.


4. 언어를 선택하라는 창이 뜨면 영어로 설치할 것이므로 그냥 엔터를 칩니다.


5. 지역을 선택하라는 창이 뜨면 아시아는 목록에 없으므로 그냥 엔터를 칩니다.

6. 키보드 종류를 선택할 것이냐고 물어보면 <No>를 선택하고 엔터를 칩니다.


7. 키보드의 언어를 선택하라는 창이 나오면 영어를 선택했기 때문에 그냥 엔터를 칩니다.


8. 같은 언어라도 다양한 종류의 키보드 레이아웃이 있으나 기본을 선택하고 그냥 엔터를 칩니다.


9. 설치할 컴포넌트를 읽는 동안 잠시 기다립니다.

10. 그러면 어떤 네트워크 인터페이스를 사용할 것인지가 나오는데 그냥 엔터를 칩니다.


11. Hostname(호스트명)은 우분투 서버가 설치되었을 때의 서버 이름이므로, 입력하고자 하는 Hostname을 입력하고 엔터를 칩니다. 이때 Hostname의 기본 값은 ubuntu입니다.


12. 이번에는 사용자 계정을 입력합니다. 자주 사용하는 계정 명으로 입력하면 됩니다.


13. 계정을 입력하였으면 이번에는 계정에 해당하는 패스워드를 입력합니다.

14. 홈디렉토리를 암호화할 것인지를 물어보면 <Yes> 라고 선택하고 엔터를 칩니다.


15. 인터넷이 정상적으로 연결이 되었다면 time zone 설정 값을 자동으로 찾아 보여줍니다. Time zone을 확인하고 <Yes>를 선택한 후 엔터를 칩니다.


16. 어떤 디스크에 우분투를 설치할지를 묻는 화면이 나오면 Guided – use entire disk를 선택한 후 엔터를 칩니다.


17. 디스크가 하나이므로 그냥 엔터를 칩니다.


18. 자동으로 잡아서 파티션으로 우분투를 설치할 것인지 확인하는 창이 뜨면 <Yes>를 선택하고 엔터를 칩니다.


19. 이제 우분투 서버가 설치될 때까지 잠시 기다립니다.


20. 설치도중 프록시 서버를 설정할 것이냐고 물어보는 창이 뜨면 그냥 엔터를 칩니다.


21. 시스템을 업그레이드 할 것인지 여부를 묻는 창이 나오면 Install security updates automatically를 선택하고 엔터를 칩니다.


22. 설치 도중 소프트웨어를 설치할 것이냐는 메뉴가 나오면 OpenSSH Server만 선택하고 엔터를 칩니다.


23. GRUB 부트 로더를 마스터 부트 레코드에 설치할 것인지 여부를 물으면 <Yes>를 선택하고 엔터를 칩니다.


24. 이제 설치가 끝나고 시스템을 재 시작하겠다는 창이 뜨면 엔터를 칩니다.


25. 시스템 설치가 모두 끝나고, 우분투 서버가 재 부팅 되면 아래와 같이 로그인 창이 뜨게 됩니다.

 


이렇게 해서 버철박스를 이용해 가상서버를 생성하고 그 위에 우분투 서버를 설치를 해 보았습니다. 테스트할 서버가 없거나 개발용으로 오픈스택 설치를 할 경우에는 하이퍼바이저를 이용하시는 것도 괜찮은 방법입니다.


다음에는 설치한 우분투 서버에 SSH 클라이언트 프로그램을 이용하여 접속해 보고 오픈스택을 설치하기 위한 네트워크 구성를 한번 그려보도록 하겠습니다. 그럼, 다음에 다시 만나요~~~!!!! ^^



저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.09.14 00:49

안녕하세요~!! 


오늘부터 오픈스택 설치에 대해 글을 써 보려 합니다. 그 전에 오픈스택을 설치할 서버가 필요한데요~!! 그 비싼 테스트 서버를 어떻게 준비하느냐~!! 바로 하이퍼바이저를 이용해서 준비하려고 합니다. 테스트이니 굳이 비싼 서버가 없어도 상관은 없습니다. 대신 서비스를 하고 싶다 그러면 곤란하겠지요~!!


그 전에 제가 처음으로 오픈스택을 설치하던 그때 이야기를 잠시하고 가겠습니다.

제가 처음으로 오픈스택을 설치했을 때 설치했던 방법이 바로 DevStack이였습니다. 우분투 서버에 DevStack 쉘 스크립트를 다운로드 받고, 환경설정을 해 준 뒤 stack.sh 만 돌리면 자동으로 오픈스택이 설치되기 때문입니다. 그러나, DevStack이 쉽다고 만만하게 보시면 절대 안됩니다. 다만, 다른 설치 방법보다 쉽기 때문에 빠른 시간 내에 오픈스택이 무엇인지, 데쉬보드를 확인 할 수 있고, 테스트 해 볼 수 있기 때문에 처음 오픈스택을 입문하는 사람들에게 권장하는 이유입니다


그럼, 지금부터 서버 준비를 준비해 보도록 해 보겠습니다.


여기에서는 윈도우나 맥, 리눅스에서 설치 가능한 오픈소스형 하이퍼바이저인 버철박스를 이용하여 오픈스택을 설치할 가상 서버를 준비해 보도록 하겠습니다.

 

하이퍼바이저를 위한 PC의 최소사양

하이퍼바이저를 설치하여 그 위에 오픈스택을 설치하기 위해서는 적어도 아래와 같은 사양의 노트북이나 PC가 필요합니다.

-      CPU: 4 Core 이상

-      Memory: 4 GB 이상

-      Disk: 500 GB

 

버철박스(VirtualBox) 다운로드

버철박스 사이트(https://www.virtualbox.org/wiki/Downloads)에 방문하여 버철박스를 설치하고자 하는 해당 OS의 버철박스를 다운로드 합니다. 저 같은 경우는 윈도우를 주로 사용하기 때문에 윈도우에 설치가 가능한 버철박스를 다운로드 받았습니다.


버철박스 설치

1. 다운로드 받은 버철박스 실행파일을 더블 클릭합니다.


2. 아래와 같이 설치 마법사가 뜨면 Next를 클릭합니다.

3. 설치할 버철박스 컴포넌트와 어느 경로에 설치할 것인지를 물어보는 화면이 뜨면, 설치 경로를 확인하고 Next 버튼을 클릭합니다.


4. 이번에는 옵션을 선택하라는 화면이 나오면 Next를 클릭합니다.


5. 설치를 하기 전에 네트워크 인터페이스가 없으므로 함께 설치할지를 물어보는 화면이 뜹니다. 네트워크 인터페이스는 가상 네트워크를 잡아주는 중요한 기능이므로 Yes를 클릭합니다.

 


6. 설치를 위한 기본 준비가 다 되었으므로 설치를 할 것이냐고 물어보면 Install을 클릭합니다.


7. Install을 클릭함과 동시에 버철박스가 설치가 되기 시작합니다.


8. 버철박스 설치가 완료되면 아래와 같은 화면이 뜹니다. 그러면 Finish 버튼을 클릭하며 설치를 종료합니다.


이렇게 해서 가상서버를 생성할 준비를 모두 마쳤습니다. 만일, VMWare WorkStation 제품을 가지고 계시다면 VMWare를 사용하셔도 됩니다.



다음시간에는 설치한 버철박스를 이용하여 오픈스택을 설치할 가상 서버를 한번 생성해 보도록 하겠습니다.

그럼, 다음시간에 다시 만나요~~~!!! ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.06.06 13:55

안녕하세요~!! 

정말 오랜만에 블로그에 포스팅을 하는 것 같습니다. 많이들 기다리셨죠? 그동안 정말 바뻤거든요~~ 그래서, 글을 쓸 시간이 없었어요... ㅠ 저희 아이가 8살이라 올해 학교에 들어갔어요~ 그래서 아이와 저를 위해 얼마전에 회사에 육아휴직을 신청을 했어요. 집에서 쉬니 회사 다닐때보다 할일이 왜 이렇게 많은건지요~~ 정말 바쁘더군요.. 오늘은 큰 맘 먹고 글 하나 써보자 하고 이렇게 블로그에 글 하나 남겨 봅니다. 많이들 좋아해 주시는거죠~~ ^^ 


오늘은 지난 강의에 이어 오픈스택의 핵심 기능이자 초창기 프로젝트 멤버였던 컴퓨트 서비스! NOVA에 대해서 알아볼까 합니다. NOVA는 정말 오래되어서 많은 분들이 잘 알고 계실꺼라 생각이 드는데요~~ 그래도 지금 막 시작하시는 분들이나 알고 있다고 해도 정리하는 차원에서 보시면 좋을 것 같습니다. 


그럼, 시작해 볼까요~~



Logical Architecture로 알아보는 Nova


원 논리 아카텍쳐는 그림이 너무 작아 Nova가 어떤 기능을 하는지 잘 보이질 않습니다. 그래서 논리(Logical) 아키텍처 중 Nova 부분만 크게 잘라봤습니다. 아키텍쳐를 잘 보면 Nova는 아래와 같은 프로세스로 일을 한다는 것을 확인할 수 있습니다.


1. Nova는 데쉬보드나 커맨드 라인 명령어가 호출하는 nova-api로부터 시작됩니다. 

2. nova-api는 Queue를 통해 nova-compute에 인스턴스를 생성하라는 명령어를 전달하고, 

3. 인스턴스 생성 명령어를 전달받은 nova-compute는 하이퍼바이저 라이브러리를 통해

4. 하이퍼바이저에게 인스턴스를 생성하라는 명령어를 다시 전달합니다. 

5. 그 때 하이퍼바이저는 인스턴스를 생성하게 되는거죠! 

6. 생성된 인스턴스는 nova-console를 통해 사용자가 접근할 수 있게 되는 겁니다.





Nova가 지원하는 하이퍼바이저의 종류


이번에는 Nova가 지원하는 하이퍼바이저의 종류를 알아볼까요~!!

Nova가 지원하는 하이퍼바이저 종류는 아래 사이트에 가시면 확인 하실 수 있습니다.

https://wiki.openstack.org/wiki/HypervisorSupportMatrix


그런데, 영어로 되어 있고, 텍스트 뿐이여서 처음 시작하시는 분들에게는 조금 어려울 수 있습니다. 그래서 제가 그림으로 한번 그렸봤어요~!! 그러면 좀 더 이해하기 쉽겠죠!! ^^


Nova가 지원하는 하이퍼바이저는 그룹이 3개가 있는데 

1. 가장 기본적인 하이퍼바이저는 그룹A의 Qemu와 KVM입니다. 

2. 두번째 그룹B에서는 Hyper-V, VMware, XenServer6.2 을 지원합니다.

3. 세번째 그룹C에서는 Baremetal, docker, Xen via libvirt, LXC via libvirt 를 지원합니다.



노드별로 설치되는 Nova


이번에는 노드별로 설치되는 Nova 프로세스들을 알아보겠습니다. 그냥 노드별로 설치되는 프로세스명만 보는 것보다는 아래 그림처럼 아키텍처와 연관지어서 어떤 프로세스들이 설치되는지를 그려보면 Nova를 이해하는데 더욱 더 도움이 많이 됩니다. 그래서, 제가 대표로 여러분들을 위해 한번 그려 봤어요~!! ^^



컨트롤러 노드에 설치되는 Nova 프로세스들은 아래와 같아요~!! 아주 많죠?

- nova-api 

- nova-cert 

- nova-conductor 

- nova-consoleauth

nova-novncproxy 

- nova-scheduler

nova-novaclient 


대신에 컴퓨트 노드에는 몇개 설치되지 않아요~!!

- nova-compute-kvm 

- python-guestfs

- qemu-kvm 


여기서 python-guestfs가 뭘 하는건지 궁금하시죠? python-guestfs는 파일을 만들어주는 파이썬 라이브러리예요~!! 그래서, 가상 인스턴스를 생성할때 사용해요~!! 사실은 저도 잘 몰라서 검색엔진에서 찾아봤어요~~~ 저보다 더 잘 아시는 분이 계시다면 설명 해 주시면 감사하겠죠!!




DashBoard로 보는 Nova


그럼, Dashboard에서는 어떤 메뉴가 Nova 기능일까요? 아래 보이는 인스턴스 화면이 바로 Nova 기능이예요~!! 인스턴스라고 써 있어서 Nova가 왜 안보일까 하고 생각하셨다면 아래 보이는 화면이 Nova가 해주는다는 사실 하나만 알고 가도 되겠죠~!!^^




Nova에 대해 더 알고 싶다면~~~


Nova가 더 궁금하다구요? 그러면 아래 사이트들을 방문해보세요~~~ 저보다 더 친절하고 저보다 더 최신정보를 여러분들에게 제공해 드릴꺼예요~!! 영어때문에 잘 모르겠다구요~~~ 그러면 요즘 나오는 번역기를 이용하면 되겠죠!!! 


o 소스코드 다운로드: https://github.com/openstack/nova

o 코드 리뷰: https://review.openstack.org

o 코드 빌드: https://jenkins.openstack.org/

o 문서 : http://docs.openstack.org

o 개발자 문서: http://nova.openstack.org

o 런치패드 : https://launchpad.net/nova

o 위키 사이트 : https://wiki.openstack.org/wiki/nova



이렇게 해서 Nova에 대해 제가 알려드릴수 있는, 표현할 수 있는 범위의 모든 것에 대해 다 정리를 해 보았습니다. 사실 글로 정리만 한다거나 말로 하는것은 누구나 할 수 있습니다. 그러나 저는 많은 분들이 좀 더 쉽고 재미있게 오픈스택을 이해하고 공부하는데 도움이 되길 바라는 마음으로 그림으로 항상 그려보고 좀 더 쉽게 표현할 수 있는지를 늘 항상 연구합니다.  왜냐하면 저도 오픈스택이 어렵거든요~~~ 


그럼, 다음시간에는 오브젝트 스토리지인 Swift에 대해 정리해 보도록 하겠습니다. 많이들 좋아요~~~ 클릭해 주시고 댓글도 많이 많이 달아주세요~~~ ^^

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2014.04.23 17:05

안녕하세요~!! 

지난주부터 텔레비전에는 연일 세월호 참사에 대한 뉴스가 나와 국민 모두를 가슴 아프게 했습니다. 이제 이런 일들은 제발 일어나지를 않기를 간절히 소망해 봅니다.


오늘부터는 클라우드 시스템을 만들기 위한 오픈소스 플랫폼 중에서도 근래가 가장 핫(Hot)한 OpenStack 에 대해서 알아보도록 하겠습니다. 처음으로 오픈스택에 대한 소개를 하는 시간인데 어떤 주제로 소개를 하면 좋을까? 하고 고민하다가 늘 그렇듯이 오픈스택이 언제 처음으로 공개가 되었는지 그리고, 어떤 변천사를 거쳤는지에 대한 OpenStack 역사를 다루면 좋겠다 라는 생각을 했습니다.



오픈스택의 역사!


오픈스택은 2010년 NASA와 Rackspace가 하던 프로젝트를 오픈소스화하면서 세상에 알려지게 된 플랫폼으로써 그 해 10월에 처음으로 Austin이라는 이름으로 릴리즈를 하였습니다. 그리고, 그 후로 아래와 같이 6개월에 한번씩 릴리즈를 하고 있습니다. 현재 릴리즈 버전은 지난 4월 17일날 릴리즈 한 IceHouse입니다.



버전별 프로젝트 종류


처음으로 릴리즈 한 Austin에서는 그냥 단순히 컴퓨트 서비스와 오브젝트 파일 스토리지 서비스,이미지 관리 서비스뿐 이였습니다.


처음 서비스 개념으로 릴리즈한 오픈스택은 그 후 프로젝트를 만들고, 프로젝트에 이름을 달아주었습니다. 그리하여 Bexar 릴리즈 때부터는 컴퓨트 서비스는 Nova라는 이름을, 오브젝트 스토리지 서비스는 Swift를, 이미지 관리 서비스는 Glance라는 이름을 갖게 되었습니다. 그리고, Diablo 때까지 열심히 기능을 업그레이드 했습니다.


오픈스택은 Essex 버전을 릴리즈하면서 새로운 기능을 추가를 시켰는데, 그 기능들이 아래 보이는 Keystone과 Horizon이였습니다. Keystone은 Nova, Glance, Swift와 같은 서비스들의 인증을 담당하는 프로젝트이며, Horizon은 서비스들을 좀 더 쉽게 사용하기 위해 사용자들에게 Dashboard를 제공하는 프로젝트입니다.


Folsom 버전을 오면서 또 다시 새로운 프로젝트들이 나타났는데, SDN(Software Defined Network)을 사용하기 위한 Quantum 프로젝트와 볼륨 스토리지를 별도로 관리하기 위한 Cinder 프로젝트였습니다. 그리고, 이 기능들은 Grizzly 때까지 계속 업그레이드가 되었습니다.


오픈스택은 기존 프로젝트의 안정화를 하면서, 다양한 프로젝트로 새로운 기능들을 계속해서 추가하고 있습니다. Havana 버전부터는 아래와 같은 Conceptual 아키텍처가 나오기 시작했습니다. Havana 버전에서 정식으로 추가된 프로젝트는 오케스트레이션 서비스인 Heat와 모니터링 및 미터링 서비스인 Ceilometer가 있습니다. 그리고, 몇일 전에 릴리즈한 IceHouse 버전에서는 Trove라는 데이터베이스 서비스가 새롭게 추가되었습니다.



릴리즈에 대한 정보는 아래 wiki 사이트에서도 확인하실 수 있습니다.

https://wiki.openstack.org/wiki/Releases


오늘은 오픈스택의 역사~ 즉 오픈스택이 릴리즈한 현황과 어떤 프로젝트로 릴리즈를 했는지에 대한 정보들을 알아보았습니다. 다음 시간부터는 각각의 컴포넌트들에 대해서 하나씩 하나씩 알아보는 시간을 가져보도록 하겠습니다.



저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2013.12.19 00:14

안녕하세요~!! 


드디어 제가 Openstack을 위한 클라우드 강의~ 아니 정리를 시작했습니다. 혹시 보시다가 이건 아닌데 라고 생각하신다면 가차없이 댓글 달아주세요~!! 


그럼, 오늘은 OpenStack을 시작하려면 반드시 알고 넘어가야 할 개념~!! 클라우드! 

클라우드가 뭔지? 무엇을 대체 클라우드라고 하느지에 대해서부터 먼저 알아보도록 할께요~ ^^


요즘 사람들은 스마트폰, 스마트패드를 들고 다니며, 인터넷 상에서의 음악을 듣고, 동영상을 보며, 온라인 상의 사람들과 채팅을 하기도 하고, 게임을 하기도 하죠! 회사에서는 회의시간에 회의 내용을 문서에 정리하면 그 내용은 바로 인터넷을 통해 회의 참석자들과 함께 공유를 하기도 하고요. 여행을 가면 사람들을 추억을 모두 스마트 폰 카메라에 담고 그 사진은 인터넷 저 너머의 저장 공간에 저장이 됩니다. 그리고, 집에 돌아와 스마트 TV로 여행에서 찍은 사진을 가족들과 함께 볼때도 있습니다.

이렇게 우리는 클라우드 컴퓨팅 환경에서 다양하고 편리한 혜택을 누리며 살고 있습니다. 그런데 정작 클라우드 컴퓨팅이 무엇인지 무슨 의미를 뜻하는지를 알고 있는 사람은 그다지 많지 않습니다. 물론 이 글을 읽고 있는 여러분들은 클라우드가 무슨 뜻인지 무슨 의미인지를 알고 계시겠지만 말이에요!


그래도 제가 다시 한번 더 클라우드가 뭔지 다시 한번 더 설명 드리도록 할께요~~ 



클라우드 컴퓨팅(Cloud Computing)은 개인이 가진 스마트폰, 스마트패드, 스마트 TV, 노트북, 컴퓨터와 같은 인터넷이 가능한 디바이스를 통해 클라우드라고 불리는 제 3의 공간에서 데이터를 읽고 쓰고 정보를 분석하고 처리하여, 저장하고 관리하는 컴퓨팅 시스템이라고 볼 수 있습니다. 또한, 클라우드 컴퓨팅은 웹2.0, SaaS(Software as a Service)와 같이 최근에 잘 알려진 기술 경향들과 연관성을 가진 일반화된 개념이기도 합니다.



그럼, 클라우드 서비스에는 뭐가 있을까요?


클라우드는 크게 어떤 서비스를 하느냐에 따라 SaaS(Software as a Service), PaaS(Platform as a Service), IaaS(Infrastructure as a Service)로 나누어 집니다. 그리고, 서비스 범위에 따라 Public Cloud, Private Cloud, Hybrid Cloud로 나누어 집니다.





어떤 서비스를 하느냐에 따라


IaaS(Infrastructure as a Service)는 서버, 스토리지, 네트워크를 가상화 환경으로 만들어, 필요에 따라 인프라 자원을 사용할 수 있게 제공하는 서비스 형태입니다. 쉽게 말해서, 웹 서버나 애플리케이션 서버로 사용할 리눅스 혹은 윈도우즈 서버를 호스팅 업체에서 임대 하는 것과 비슷한 개념이지요.


PaaS(Platform as a Service)는 SaaS(Software as a Service)의 개념을 개발 플랫폼에도 확장한 방식으로, 개발을 위한 플랫폼 구축을 할 필요 없이 필요한 개발 요소들을 웹에서 쉽게 빌려 쓸 수 있는 서비스를 말합니다.


SaaS(Software as a Service)는 IaaS와 PaaS 위에 올라가는 소프트웨어를 말하며, “on-demand software” 라고도 불립니다. 사용자는 웹 브라우저 등의 클라이언트를 통해 중앙에서 호스팅 되고 있는 소프트웨어에 접속하여 서비스를 받습니다.




서비스 범위에 따라


Public Cloud는 말 그대로 인터넷에 공개되어 있는 서버나 스토리지를 아마존이나 구글 혹은 마이크로소프트와 같은 서비스 제공자들에게 제공받아 PaaS와 같은 개발환경이나 SaaS에 해당하는 소프트웨어 서비스를 하는 것을 통칭하여 Public Cloud 라고 부릅니다. 


Private Cloud는 쉽게 말해 Public Cloud의 반대라고 생각하면 되겠죠! 인터넷에 공개하지 않는 것입니다.


Hybrid Cloud는 Public Cloud 영역에 있는 인스턴스를 언제든지 Private Cloud 영역으로 가져올 수 있고, Private Cloud 영역에 있는 인스턴스를 Public Cloud 영역으로 내보낼 수 있는 Cloud System을 말합니다.




이제 클라우드 컴퓨팅하면 이 세가지는 꼭 알고 넘어가자구요~!! 클라우드 컴퓨팅의 정의, 어떤 서비스를 하는지, 그리고, 서비스 범위가 어디까지인지는 반드시 알아야 합니다. 잊지 마세요~!!

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang
OpenStack Class2013.12.18 09:29

안녕하세요~!!

정말 오랜만에 블로그에 다시 포스팅을 하는 것 같습니다.


그동안 프로젝트 업무로 인해 바뻐서 글을 쓸수가 없었거든요~!! 

하지만, 시간을 조금씩 내어서 이번 기회에 입문자들의 위한 클라우드 및 오픈스택 강좌(?) 를 하려고 합니다. 

강좌라기 보다는 그냥 여기저기 산재되어 있는 오픈스택과 관련된 정보들을 정리하는 수준이 되겠죠~!! 


아무쪼록 오픈스택을 하고자 입문하시는 많은 분들께 도움이 되었으면 좋겠습니다.

저작자 표시 비영리 변경 금지
신고
Posted by 나리 짱!!! naleejang