티스토리 뷰
몇일동안 OpenStack 과 씨름을 하면서 얻은 경험과 문제를 해결하기 위해서 반복했던 실수와 해결 과정들을 여러분들과 함께 공유하기로 했습니다. 그 이유는 저 또한 많은 분들이 이미 경험했던 것들을 받았기 때문입니다.
그럼 지금부터 운영 중인 OpenStack에 Compute Node를 추가하기 위해 어떻게 했었는지 좌충우돌 그 경험담을 여러분께 들려드리고자 합니다.
클라우드 노드에 생성된 VM 인스턴스가 인터넷이 되지 않는다는 사실을 알았을 때 문득 이런 생각이 들었다. 그러면 Master Server 즉 클라우드 노드를 다른 노드로 변경하면 되지 않을까? 하는 생각이 문득 스치고 지나갔다. 그래서, 남은 마지막 서버에다가 OpenStack 클라우드 서버를 설치하기로 하였다. 결과는 로컬의 Proxy Server에 연결을 실패하여 설치 실패~!!
그럼 이번에는 컴퓨트 노드로 설치해 보자~!! 그리고 다시 도전~!! 결과는 역시 또 실패~!! 이유는 같은 이유였다. 로컬의 Proxy Server에 연결을 할 수 없어서,…
다음과 같은 로그를 남기고 설치 중단~!!
+ screen -S stack -p n-api -X stuff 'cd /opt/stack/nova && /usr/local/bin/nova-api^M' + echo 'Waiting for nova-api to start...' Waiting for nova-api to start... + timeout 60 sh -c 'while ! http_proxy= wget -q -O- http://127.0.0.1:8774; do sleep 1; done' + echo 'nova-api did not start' nova-api did not start + exit 1 + clean + local r=1 ++ jobs -p + kill + exit 1 |
그럼, nova-api를 시작할 때 어떤 문제가 발생하길래 오류가 난 걸일까? 하고 screen 로그 분석~!
cd /opt/stack/nova && /opt/stack/nova/bin/nova-api 2012-11-06 16:59:56 16224 DEBUG nova.wsgi [-] Loading app ec2 from /etc/nova/api-paste.ini load_app /opt/stack/nova/nova/wsgi.py:383 2012-11-06 16:59:56 16224 CRITICAL nova [-] No module named api 2012-11-06 16:59:56 16224 TRACE nova Traceback (most recent call last): 2012-11-06 16:59:56 16224 TRACE nova File "/opt/stack/nova/bin/nova-api", line 50, in <module> 2012-11-06 16:59:56 16224 TRACE nova server = service.WSGIService(api) 2012-11-06 16:59:56 16224 TRACE nova File "/opt/stack/nova/nova/service.py", line 570, in __init__ 2012-11-06 16:59:56 16224 TRACE nova self.app = self.loader.load_app(name) 2012-11-06 16:59:56 16224 TRACE nova File "/opt/stack/nova/nova/wsgi.py", line 384, in load_app 2012-11-06 16:59:56 16224 TRACE nova return deploy.loadapp("config:%s" % self.config_path, name=name) … 중간 생략 … 2012-11-06 16:59:56 16224 TRACE nova return import_class(import_str)(*args, **kwargs) 2012-11-06 16:59:56 16224 TRACE nova File "/opt/stack/nova/nova/api/ec2/cloud.py", line 186, in __init__ 2012-11-06 16:59:56 16224 TRACE nova self.volume_api = volume.API() 2012-11-06 16:59:56 16224 TRACE nova File "/opt/stack/nova/nova/volume/__init__.py", line 27, in API 2012-11-06 16:59:56 16224 TRACE nova cls = importutils.import_class(nova.flags.FLAGS.volume_api_class) 2012-11-06 16:59:56 16224 TRACE nova File "/opt/stack/nova/nova/openstack/common/importutils.py", line 30, in import_class 2012-11-06 16:59:56 16224 TRACE nova __import__(mod_str) 2012-11-06 16:59:56 16224 TRACE nova ImportError: No module named api 2012-11-06 16:59:56 16224 TRACE nova |
그럼 github에 있는 Nova 소스를 살펴봐야겠다는 생각이 문득.. 그래서 살펴보았다.
내가 OpenStack을 설치했던 건 10월 8일에서 9일~!! 현재 한달이 지났다. 그런데, github에 있는 Nova 소스는 한시간 전에 업데이트가 일어났다. 그러면 기존에 설치했던 Nova 소스와 현재 다운받아서 설치한 Nova 소스는 버전이 다르며, 현재 Nova 소스에 버그가 있을수도 있다.
그리하여, 기존에 오픈스택 컴퓨트가 설치되어 있는 컴퓨터 노드의 소스를 복사하기로 결정!!
우선, tar를 이용하여 기존에 Compute Node의 /opt/stack/ 폴더에 있는 Nova 관련 소스들을 모두 묶는다. 이때, backup 폴더를 하나 생성하여 tar로 묶은 파일들을 한군데에 모아놓으면 다음에 사용할 때 편하다.
$ mkdir backup $ tar cvf backup/glance.tar glance $ tar cvf backup/keystone.tar keystone $ tar cvf backup/nova.tar nova $ tar cvf backup/python-glanceclient.tar python-glanceclient $ tar cvf backup/python-keystoneclient.tar python-keystoneclient $ tar cvf backup/python-novaclient.tar python-novaclient $ tar cvf backup/python-openstackclient.tar python-openstackclient |
tar로 묶인 압축파일들을 설치하고자 하는 서버로 보낸다.
$ scp *.tar stack@openstack04:/opt/stack/backup glance.tar 100% 9260KB 9.0MB/s 00:00 keystone.tar 100% 13MB 12.7MB/s 00:01 nova.tar 100% 126MB 41.9MB/s 00:03 python-glanceclient.tar 100% 630KB 630.0KB/s 00:00 python-keystoneclient.tar 100% 780KB 780.0KB/s 00:00 python-novaclient.tar 100% 1540KB 1.5MB/s 00:00 python-openstackclient.tar 100% 390KB 390.0KB/s 00:00 |
전송이 완료되면 해당 서버로 가서 다시 tar를 이용해 압축된 소스를 푼다.
$ tar xvf glance.tar $ tar xvf keystone.tar $ tar xvf nova.tar $ tar xvf python-glanceclient.tar $ tar xvf python-keystoneclient.tar $ tar xvf python-novaclient.tar $ tar xvf python-openstackclient.tar $ mv *.tar /opt/stack |
그럼 다시 devstack 폴더로 이동하여 서비스를 재 설치하거나 재 시작한다. 나는 재 시작하였다.
$ ./restart_stack.sh |
재시작이 완료되었으면 이제 nova-manage를 통하여 service가 정상적으로 동작하는지 확인해 본다. 역시나 서비스는 확인 안되고, 오류들만 잔뜩~~~ 보인다.
다시 삽질시작.. 뭐가 문제일까? 모르겠다. 오픈스택 커뮤니티로 다시 질문~!! 누군가는 이런 경험이 있겠지… 누군가가 답변을 올렸다. 확인.. nova.conf를 보면 된다. 그래서 /etc/nova/nova.conf 확인~!!
$ cat nova.conf [DEFAULT] ... 중간 생략 ... osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions my_ip=10.10.10.4 sql_connection= libvirt_type=kvm libvirt_cpu_mode=none instance_name_template=instance-%08x …. 이하 생략 … |
sql_connection에 값이 빠져있는걸 발견~!! 저거다.. 바로 다른 컴퓨터 노드의 nova.conf를 보고 복사해서 붙여넣기를 실행한다.
$ cat nova.conf [DEFAULT] ... 중간 생략 ... osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions my_ip=10.10.10.4 sql_connection=mysql://root:mypassword@www.host.co.kr/nova?charset=utf8 libvirt_type=kvm libvirt_cpu_mode=none instance_name_template=instance-%08x … 이하 생략 … |
이제 다시 서비스를 재 시작한다.
$ ./restart_stack.sh |
nova-manage를 활용하여 서비스가 정상적으로 돌고 있는지 확인해 본다.
$ nova-manage service list 2012-11-07 16:30:21 DEBUG nova.utils [req-fdc0c17c-4048-4038-b0cb-5f1e3874fb6c None None] backend <module 'nova.db.sqlalchemy.api' from '/opt/stack/nova/nova/db/sqlalchemy/api.pyc'> from (pid=20778) __get_backend /opt/stack/nova/nova/utils.py:502 Binary Host Zone Status State Updated_At nova-compute openstack01 nova enabled :-) 2012-11-07 07:30:17 nova-cert openstack01 nova enabled :-) 2012-11-07 07:30:18 nova-scheduler openstack01 nova enabled :-) 2012-11-07 07:30:20 nova-network openstack01 nova enabled :-) 2012-11-07 07:30:13 nova-consoleauth openstack01 nova enabled :-) 2012-11-07 07:30:15 nova-volume openstack01 nova enabled :-) 2012-11-07 07:30:13 nova-compute openstack02 nova enabled :-) 2012-11-07 07:30:32 nova-network openstack02 nova enabled :-) 2012-11-07 07:30:28 nova-volume openstack02 nova enabled XXX 2012-10-21 00:12:02 nova-compute openstack03 nova enabled :-) 2012-11-07 07:30:50 nova-network openstack03 nova enabled :-) 2012-11-07 07:30:43 nova-volume openstack03 nova enabled XXX 2012-10-21 00:12:12 nova-compute openstack04 nova enabled :-) 2012-11-07 07:30:17 nova-network openstack04 nova enabled :-) 2012-11-07 07:30:13 nova-volume openstack04 nova enabled :-) 2012-11-07 07:30:14 |
잘 돌아간다. 드디어, 운영 중인 OpenStack에 Compute Node 추가 완료~!!
알면 쉽지만, 모르면 이렇게 삽질해야 한다. 이제 또 이런 일이 발생하게 되면 그때는 삽질을 하지 않겠지…
** Tip **
이번 삽질을 통해 또 다시 배운 것 하나 더 팁으로 DevStack 설치를 레파지토리를 지정하는 곳이 있다. 그런 것도 있었어?? 다시 github에 가서 확인~!! 정말 있다.
그럼 devstack에서는 어디에서 레파지토리를 지정하는 거지?? stackrc에 있다.
# stackrc # … 중간 생략 … # Repositories # ------------
# Base GIT Repo URL # Another option is http://review.openstack.org/p GIT_BASE=https://github.com
# metering service CEILOMETER_REPO=https://github.com/stackforge/ceilometer.git CEILOMETER_BRANCH=master
# volume service CINDER_REPO=${GIT_BASE}/openstack/cinder CINDER_BRANCH=master
# volume client CINDERCLIENT_REPO=${GIT_BASE}/openstack/python-cinderclient CINDERCLIENT_BRANCH=master
# compute service NOVA_REPO=${GIT_BASE}/openstack/nova.git NOVA_BRANCH=master … 이하 생략 … |
이번 작업을 통해서 정말 많은 것들을 배웠다. 이렇게 무식할 수가~!!
다음에는 이런일이 일어나지 않겠지~ 대신 새로운 모르는 다른 일이 날 기다리고 있을 것이다.
모르는 걸을 챙피해 하거나 두려워 하지 말자~!
새로운 것을 배울수 있는 좋은 기회라고 생각하자.
공부하고, 배우면 나도 할 수 있다.
'OpenStack' 카테고리의 다른 글
Ubuntu에서 Ubuntu Instance로 접속할 때~!! (7) | 2012.11.21 |
---|---|
OpenStack Folsom에서의 Quantum 문제 (1) | 2012.11.15 |
OpenStack Glance 명령어 정리 (3) | 2012.10.23 |
OpenStack를 기반으로한 ixCloud 사용후기2 (0) | 2012.07.24 |
OpenStack를 기반으로 한 ixCloud 사용 후기1 (0) | 2012.07.24 |
- Total
- Today
- Yesterday
- 레드햇
- 하둡
- Redhat
- Network
- 우분투
- command
- 컨테이너
- 후기
- 파이썬
- 오픈스택
- 뉴트론
- cpu
- openstack
- Swift
- 오픈쉬프트
- 김미경
- 클라우드
- ubuntu
- OVN
- Java
- 쿠버네티스
- 명령어
- 네트워크
- neutron
- install
- sdn
- 설치
- 세미나
- Python
- NOVA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |