-
서비스가 가능한 오픈스택 설치8편 - 컨트롤러 노드 설치6openstack 2014. 12. 18. 11:59728x90
안녕하세요~!!
오늘 포스팅하는 내용이 컨트롤러 마지막 설치편이네요~!! 그동안 무슨일이 그렇게 바뻤는지 열심히 포스팅을 하자 해 놓고는 제가 많이 게을렀나봅니다. 오늘은 마지막으로 오케스트레이션 서비스인 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
이렇게해서 컨트롤러 노드에 설치되는 서비스들을 하나 하나씩 설치해 보았습니다. 다음 포스팅에서는 네트워크 노드에 설치될 서비스들을 설치해 볼 예정입니다. 그럼, 다음시간에 다시 만나요~!!
출처 - http://naleejang.tistory.com/139
'openstack' 카테고리의 다른 글
서비스가 가능한 오픈스택 설치10편 - 컴퓨트 노드 설치1 (0) 2014.12.18 서비스가 가능한 오픈스택 설치9편 - 네트워크노드 설치 (0) 2014.12.18 서비스가 가능한 오픈스택 설치7편 - 컨트롤러 노드 설치5 (0) 2014.12.18 서비스가 가능한 오픈스택 설치6편 - 컨트롤러 노드 설치4 (0) 2014.12.18 서비스가 가능한 오픈스택 설치5편 - 컨트롤러 노드 설치3 (0) 2014.12.18