티스토리 뷰
[OpenStack Class] 제36강 서비스가 가능한 오픈스택 설치8편 - 컨트롤러 노드 설치6
naleejang 2014. 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. Keystone에 Heat 사용자 계정을 생성합니다.
$ 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. 굵게 표시한 부분을 복사하고 실행해서 몽고 DB에 ceilometer 사용자 계정을 추가합니다.
$ 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.conf에 notification_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. Cinder에 Ceilometer를 적용하겠습니다. /etc/cinder/cinder.conf 파일의 control_echange와 notification_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. Swift에 Ceilometer를 적용하겠습니다. Keystone에 ResellerAdmin 롤을 추가합니다.
$ 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 |
이렇게해서 컨트롤러 노드에 설치되는 서비스들을 하나 하나씩 설치해 보았습니다. 다음 포스팅에서는 네트워크 노드에 설치될 서비스들을 설치해 볼 예정입니다. 그럼, 다음시간에 다시 만나요~!!
'OpenStack Class' 카테고리의 다른 글
[OpenStack Class] 제38강 서비스가 가능한 오픈스택 설치10편 - 컴퓨트 노드 설치1 (2) | 2014.12.17 |
---|---|
[OpenStack Class] 제37강 서비스가 가능한 오픈스택 설치9편 - 네트워크노드 설치 (4) | 2014.12.15 |
[OpenStack Class] 제35강 서비스가 가능한 오픈스택 설치7편 - 컨트롤러 노드 설치5 (12) | 2014.12.10 |
[OpenStack Class] 제34강 서비스가 가능한 오픈스택 설치6편 - 컨트롤러 노드 설치4 (19) | 2014.12.05 |
[OpenStack Class] 제33강 서비스가 가능한 오픈스택 설치5편 - 컨트롤러 노드 설치3 (15) | 2014.12.03 |
- Total
- Today
- Yesterday
- 하둡
- 오픈스택
- 레드햇
- sdn
- 김미경
- 파이썬
- 후기
- Python
- NOVA
- ubuntu
- 설치
- 클라우드
- install
- 명령어
- 쿠버네티스
- 뉴트론
- 오픈쉬프트
- 우분투
- 컨테이너
- command
- OVN
- Swift
- openstack
- Network
- cpu
- 세미나
- neutron
- Java
- 네트워크
- Redhat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |