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.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
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
OpenStack2012.12.21 15:40

오늘은 예전에 Devstack Shell Script를 이용해서 살알짝 수정했었던 Swift Install Shell Script를 여러분들께 공개할까 합니다.

테스트나 스터디용으로 만든 버전이라서 혼자 가지고 있는것보다는 같이 공유해서 보면 좋을 것 같다는 생각을 했습니다. 보시다가 더 좋은 아이디어가 있다면 역시 서로서로 공유할 수 있는 아름다운 사회 문화를 만들어 봅시다. ^^



DevStack Shell Script를 보면 Openstack의 

- Compute Service인 Nova 뿐만 아니라 

- Image Service인 Glance, 

- Object Storage인 Swift, 

- Network Service인 Quantum, 

- Volume Storage 인 Cinder, 

- Web Service인 Horizon,

- Auth Service인 Keystone 

등 모든 것을 전부 다 설치할 수 있도록 지원해 준다.



그런데 이중에서 단독으로 따로 떨어져 나와 독단적으로 구성할 수 있는 것이 있는데 그것이 바로 Object Storage인 Swift이다.

Swift가 다른 OpenStack과 함께 설치가 되면 Glance를 통해 이미지를 저장할 수 있는 저장소로 쓰이지만, 따로 구성했을 경우에서는 클라우드 스토리지로 사용할 수 있다.


예전에 테스트로 DevStack Shell Script를 분석하면서 Swift만 따로 구성할 수 있는 Script를 만들면 좋을 것 같아 테스트 삼아 한번 수정해 본것이 있는데 그동안 시간이 안되서 포스팅을 못하고 있었다. 오늘 잠시 시간이 되어 포스팅을 한번 해 볼까 한다.


요즘에 다운로드 받는 DevStack Shell Script를 보면 Part별로 소스가 전부 나누어져 개발되어 있는 것을 볼 수 있다. 전에는 거의 한 소스에 전부 모여 있는 것들이 Part별로 나누어져 숨어 있어 한번 더 소스를 찾아가야 하는 번거로움이 있지만, 소스를 수정할 때나 업무를 분담할때는 오히려 더 좋을 수도 있겠다는 생각이 든다.


그런데, 내가 수정했던 DevStack Shell Script는 좀 오래 된 몇개월 된 버전에서 수정했다는 사실이다.

테스트로 만들어본 GitHub 계정에 올려 놓았으니 테스트로 공부를 해 보고 싶으신 분들에 한에서 다운로드 받아 설치해볼수 있다. 그러나, 절대로 시스템 구축시에는 사용할 수 없다~~~~!!!!


https://github.com/naleeJang/devstack-swift


저작자 표시 비영리 변경 금지
신고

'OpenStack' 카테고리의 다른 글

OpenStack! 그 시장의 가치는?  (1) 2013.01.11
Keystone 명령어 테이블  (0) 2013.01.04
Openstack Swift Install Shell Script  (2) 2012.12.21
Cinder 명령어로 볼륨 생성하기  (0) 2012.12.13
Chef 명령어 정리  (0) 2012.12.07
Ubuntu에서 Ubuntu Instance로 접속할 때~!!  (7) 2012.11.21
Posted by 나리 짱!!! naleejang
Python2012.08.21 15:42

오늘은 하루 종일 삽질한 Windows7에서 python-mysql 을 설치하는 방법을 남겨보고자 한다.

우선 mysql-server가 설치되어 있다는 가정하에 진행을 하도록 하겠다.

만일 설치가 되어 있지 않다면 설치를 하시길 바란다.


1.     우선 mysql.com에서 mysql-connector-c-6.0.2-win32.msi 를 다운로드 받는다.


http://www.mysql.com/downloads/connector/c/




2.     다운로드 받았으면 설치를 한다. 설치를 하면 아마도 C:\Program Files (x86)\MySQL 폴더에 MySQL Connector C 6.0.2 가 설치되어 있는 것을 확인할 수 있을 것이다.




3.     이제 다운로드 받은 MySQL Connector C 6.0.2 폴더에 들어가서 include에 있는 내용을 전부 복사한다.

 


4.     복사했으면 각자 설치되어 있는 Microsoft Visual Studio 폴더의 VC 폴더로 들어간다. 나 같은 경우는 Microsoft Visual Studio 10.0이 설치되어 있는 관계로 해당 폴더의 VC로 들어갔다. 그곳의 include 폴더에 3번에서 복사한 파일들을 붙여 넣는다.

 



5.     이번에는 같은 방법으로 MySQL Connector C 6.0.2 > lib > opt > mysqlclient.lib를 복사한다.



 

6.     복사한 파일을 역시 Microsoft Visual Studio10.0 > VC > lib에 붙여 넣는다.



 

7.     다 했으면 이제 MySQL-python-1.2.3.tar.gz 파일을 http://sourceforge.net/projects/mysql-python/ 에서 다운로드 받는다.




8.     다운로드 받은 MySQL-python-1.2.3.tar.gz 파일을 압축을 풀고 cmd를 통해 해당 폴더로 들어간다. 아마도 아래와 같은 파일들이 보일 것이다.



 

9.     설치를 해보자.

python setup.py build

위의 명령어를 치거나 python setup.py install을 입력하면 된다.

분명히 에러가 발생을 할 것인데 그 에러들은 다음 블로그에서 확인하면 된다.

http://namoda.springnote.com/pages/7836696?print=1

 


10. 다 설치를 했으면 이제 테스트를 해보자~!!

     우선 파이썬 IDLE(Python GUI)를 실행하고, 다음과 같이 하면 된다. 이때 로컬 PC에 설치한 mysql에 connection할 때       는 localhost라고 쓰지 말것~!!!! 로컬 PC IP를 적어준다. 그러면 오류없이 컨넥션이 될 것이다. 아래 그림처럼...




** Tip ** 9번에서 오류가 발생한다고 했다. 그럼, 어떤 곳을 수정하면 되는지 몇 가지 팁을 적어보도록 하겠다.

-      MySQL-python-1.2.3 폴더의 setup_windows.py에 다음과 같은 문구를 가장 상단 첫 줄에 입력한다.

from distutils import msvc9compiler

msvc9compiler.VERSION = 10.0



 

-      Python27\Lib\distutils\msvc9compiler.py 파일의 651 라인 밑에 다음과 같은 문구를 추가한다.

ld_args.append(‘/MAINFEST’)

 


 

저작자 표시 비영리 변경 금지
신고

'Python' 카테고리의 다른 글

Windows7에서 python-mysql 설치하기  (3) 2012.08.21
Python을 설치해보자~!! 2편-설치  (0) 2012.02.17
Python을 설치해보자~!! 1편-다운로드  (0) 2012.02.15
Posted by 나리 짱!!! naleejang
Python2012.02.17 10:41

그럼 이제 Python을 설치해보자.

다운로드 받은 python-3.2.2.amd64.msi를 더블클릭한다.



그러면 다음과 같이 보안 경고창이 뜨고 실행 버튼을 클릭한다.




실행버튼을 클릭하면 다음과 같은 실행창이 뜹니다.

 
계속 Next 버튼을 클릭하면 Python이 설치가 됩니다.
 


설치가 다 되면 완료창이 뜹니다.

 
Finish 버튼을 클릭하면 정말 설치가 완료가 된다. 그럼 정말 설치가 잘 되었는지 확인해 보자.
windows 시작 버튼을 클릭하면 Python3.2 폴더를 확인할 수 있을 것이고, Python3.2를 클릭하면 실행할 수 있는 실행파일들을 확인할 수 있을 것이다.

 

그럼 한번 실치된 Python이 잘 실행이 되는지 확인해 볼까? IDLE(Python GUI)를 클릭해 보자~!!
다음과 같은 Python Shell 창이 나오면 성공한 것이다.

저작자 표시 비영리 변경 금지
신고

'Python' 카테고리의 다른 글

Windows7에서 python-mysql 설치하기  (3) 2012.08.21
Python을 설치해보자~!! 2편-설치  (0) 2012.02.17
Python을 설치해보자~!! 1편-다운로드  (0) 2012.02.15
Posted by 나리 짱!!! naleejang
Python2012.02.15 13:53
요즘 새롭게 뜨는 Programming Language가 있다. 많은 Cloud 시스템에서 사용되고 있는 Open Source인 OpenStack이 사용하고 있는 언어~!! 바로 Python이다. 

이런 Python으로 Programming하기 위해서 우선 먼저 Python을 설치해 보자~!!

우선 개발은 Windows에서 개발할 꺼니까 Windows에 먼저 설치를 해 보도록 하겠다.

Python Download

2012년 2월 현재 Python 사이트에는 Python3.2.2 버전과 2.7.2버전이 존재한다. 주로 도서가 Python3 버전이므로 Python3.2.2 버전을 다운로드 받아 설치하도록 하겠다.

우선 다음과 같은 사이트로 들어간다. ( http://www.python.org/download/  )


PC에 설치되어 있는 Windows가 Win7이라면 Python 3.2.2 Windows X86-64 MSI Installer 를 다운로드 받고, 그 이하라면 Python 3.2.2 Windows X86 MSI Installer를 다운로드 받는다.


그러면 다운로드를 이제 받아보자~!! 클릭을 하시라.. 다음과 같이 물어볼 것이다.


저장 버튼을 클릭하면 다운로드가 될 것이다. 


다운로드가 다 되면 폴더에 실행파일이 보이겠지~!!





저작자 표시 비영리 변경 금지
신고

'Python' 카테고리의 다른 글

Windows7에서 python-mysql 설치하기  (3) 2012.08.21
Python을 설치해보자~!! 2편-설치  (0) 2012.02.17
Python을 설치해보자~!! 1편-다운로드  (0) 2012.02.15
Posted by 나리 짱!!! naleejang