본문

VirtualBox위에 OpenStack Liberty 설치하기 #6. 서비스설치 (2)

VirtualBox위에 OpenStack Liberty 설치하기 #1. 소개

VirtualBox위에 OpenStack Liberty 설치하기 #2. Liberty 네트워크구조

VirtualBox위에 OpenStack Liberty 설치하기 #3. 네트워크 설정

VirtualBox위에 OpenStack Liberty 설치하기 #4. 노드구성

VirtualBox위에 OpenStack Liberty 설치하기 #5. 서비스설치 (1)


이전글에서는 기본 프로그램을 설치하고 Keystone(인증)과 Glance(이미지관리)를 설치하였다. 이제는 Nova(컴퓨트)와 Neutron(네트워크), Horizon(WebGUI)을 설치하려고 한다. 지난글에서는 대부분이 컨트롤러 노드에 집중되어 설명되었지만 이제는 Horizon을 제외하고는 컴퓨트와 컨트롤러노드를 번갈아가며 진행해야 하기때문에 실수하기 쉽다. 이번 게시물까지는 주구장창 설치만 하고 다음게시물에서 실제 인스턴스 생성을 수행하도록 한다.


주의사항: 사용자의 확인 또는 입력이 필요한 부분은 <입력값> 의 형태로 나타낼 것이고 그 이외에는 그냥 복사 붙여넣기하여 설치를 진행할 수 있다. 또한 괄호없이 빨간색 글씨로 되어있는부분은 기본암호이므로 보안을 강화하기 위해서는 이 부분과, 관련한 설정파일들을 변경해 주어야 한다. Ubuntu14.04버전 기준으로 작성되어 다른 운영체제에서는 호환이 되지않을수 있다. 기본적으로 'sudo su'를 미리 실행하여 root 권한으로 진행하도록 한다.


설치목차

5-1. Nova 설치

5-2. Nova 설치 후 동작 확인

6-1. Neutron 설치

6-2. Neutron 설치 후 동작 확인

7. Horizon 설치


5-1. Nova 설치

[컨트롤러 노드]

mysql -u root -p <아래의 sql구문입력>

CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';


source admin-openrc.sh
openstack user create --domain default --password-prompt nova <NOVA_PASS>
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
openstack endpoint create --region RegionOne compute public http://controller:8774/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2/%\(tenant_id\)s


apt-get install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_nova_nova.conf" > /etc/nova/nova.conf
su -s /bin/sh -c "nova-manage db sync" nova
service nova-api restart
service nova-cert restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
rm -f /var/lib/nova/nova.sqlite

[컴퓨트 노드]

apt-get install nova-compute sysfsutils
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Compute|_etc_nova_nova.conf" > /etc/nova/nova.conf

service nova-compute restart
rm -f /var/lib/nova/nova.sqlite


egrep -c '(vmx|svm)' /proc/cpuinfo <이 명령을 수행했을때 아무출력이 안나오면 아래를 실행하고 위의 service,rm명령을 다시실행>
vi /etc/nova/nova-compute.conf <[libvirt]항의 virt_type=kvm을 qemu로 바꿔준다>

[libvirt]
virt_type = qemu


5-2. Nova 설치 후 동작확인(오류메시지만 안나오면 OK)
[컨트롤러 노드]

source admin-openrc.sh
nova service-list
nova endpoints <이과정에서는 warning이 나와도 무시하면 된다>
nova image-list

6-1. Neutron 설치

[컨트롤러 노드]

mysql -u root -p <아래의 sql구문입력>

CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';


source admin-openrc.sh
openstack user create --domain default --password-prompt neutron <NEUTRON_PASS>
openstack role add --project service --user neutron admin
openstack service create --name neutron --description "OpenStack Networking" network
openstack endpoint create --region RegionOne network public http://controller:9696
openstack endpoint create --region RegionOne network internal http://controller:9696
openstack endpoint create --region RegionOne network admin http://controller:9696


apt-get install neutron-server neutron-plugin-ml2 neutron-plugin-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent python-neutronclient
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_neutron_neutron.conf" > /etc/neutron/neutron.conf
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_neutron_plugins_ml2_ml2_conf.ini" > /etc/neutron/plugins/ml2/ml2_conf.ini
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_neutron_plugins_ml2_linuxbridge_agent.ini" > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_neutron_l3_agent.ini" > /etc/neutron/l3_agent.ini
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_neutron_dhcp_agent.ini" > /etc/neutron/dhcp_agent.ini
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_neutron_dnsmasq-neutron.conf" > /etc/neutron/dnsmasq-neutron.conf
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_neutron_metadata_agent.ini" > /etc/neutron/metadata_agent.ini
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_nova_nova.conf " > /etc/nova/nova.conf
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
service nova-api restart
service neutron-server restart
service neutron-plugin-linuxbridge-agent restart
service neutron-dhcp-agent restart
service neutron-metadata-agent restart
service neutron-l3-agent restart
rm -f /var/lib/neutron/neutron.sqlite


[컴퓨트 노드]

apt-get install neutron-plugin-linuxbridge-agent
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Compute|_etc_neutron_neutron.conf" > /etc/neutron/neutron.conf
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Compute|_etc_neutron_plugins_ml2_linuxbridge_agent.ini" > /etc/neutron/plugins/ml2/linuxbridge_agent.ini
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Compute|_etc_nova_nova.conf" > /etc/nova/nova.conf
service nova-compute restart
service neutron-plugin-linuxbridge-agent restart


6-2. Neutron 설치 후 동작확인(오류메시지만 안나오면 OK)
[컨트롤러 노드]
source admin-openrc.sh
neutron ext-list
neutron agent-list

7. Horizon 설치

apt-get install openstack-dashboard
curl "https://raw.githubusercontent.com/frontjang/openstack_liberty/master/Ctrl|_etc_openstack-dashboard_local_settings.py" > /etc/openstack-dashboard/local_settings.py
service apache2 reload



이제 컨트롤러/컴퓨트 노드의 웹브라우저에서 http://controller/horizon 접속하여 설치를 확인할 수 있다.



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

댓글 15

  • 게스트 썸네일
    궁금
    2016.03.04 17:41 신고

    위의 부분까지 모두 설치가 완료되어 정상적 인상태였습니다.
    그런데 2틀뒤 갑작스럽게 로그인이 안되길래 컨트롤러 노드에서 keystone 관련 명령어를 치면 아래와같이 오류메시지가 뜨네요 keystone의 어떠한 명령어도 먹히지않기 대문에 다른 프로젝트 들도 인증이 안되어 모두 안되는것으로 보입니다.

    에러내용은 아래와같습니다.

    root@controller:~# keystone user-list
    /usr/lib/python2.7/dist-packages/keystoneclient/shell.py:64: DeprecationWarning: The keystone CLI is deprecated in favor of python-openstackclient. For a Python library, continue using python-keystoneclient.
    'python-keystoneclient.', DeprecationWarning)
    WARNING: unsupported identity-api-version 3, falling back to 2.0
    /usr/lib/python2.7/dist-packages/keystoneclient/v2_0/client.py:145: DeprecationWarning: Constructing an instance of the keystoneclient.v2_0.client.Client class without a session is deprecated as of the 1.7.0 release and may be removed in the 2.0.0 release.
    'the 2.0.0 release.', DeprecationWarning)
    /usr/lib/python2.7/dist-packages/keystoneclient/v2_0/client.py:147: DeprecationWarning: Using the 'tenant_name' argument is deprecated in version '1.7.0' and will be removed in version '2.0.0', please use the 'project_name' argument instead
    super(Client, self).__init__(**kwargs)
    /usr/lib/python2.7/dist-packages/debtcollector/renames.py:43: DeprecationWarning: Using the 'tenant_id' argument is deprecated in version '1.7.0' and will be removed in version '2.0.0', please use the 'project_id' argument instead
    return f(*args, **kwargs)
    /usr/lib/python2.7/dist-packages/keystoneclient/httpclient.py:376: DeprecationWarning: Constructing an HTTPClient instance without using a session is deprecated as of the 1.7.0 release and may be removed in the 2.0.0 release.
    'the 2.0.0 release.', DeprecationWarning)





    (이러한 에러가 발생전 swift 설치를 진행하려시도한적이 있긴 했습니다. )


    위와같은 상황에서는 어떻게 복원을 할 수있을까요?
    만약 운영상에 이런 문제가 생긴다면 굉장히 크리티컬할것으로 간주가 됩니다

    • 게스트 썸네일
      2016.07.01 11:17 신고

      답장이 늦었습니다..
      https://answers.launchpad.net/rally/+question/272277 에 나와있듯 keystone CLI가 deprecated 되었기 때문에 'keystone user-list' 대신 'openstack user list' 명령을 사용하셔야 합니다.
      혹시 다른부분 때문에 동작이 안한 것일 수 있으므로 /var/log 밑에서 로그를 확인하시는것도 좋을 것 같습니다.

  • 게스트 썸네일
    horizon
    2016.04.12 23:53 신고

    궁금한 점이 있습니다.

    7의 horizon 설치는 컨트롤 노드 & 컴퓨트 노드 공통인가요?

    아니면 컨트롤 노드에만 적용되는 건가요?

    • 게스트 썸네일
      2016.07.01 11:18 신고

      horizon은 컨트롤러 노드에서만 설치하시면 됩니다~

  • 게스트 썸네일
    2016.07.12 18:03 신고

    안녕하세요 설치를 모두마치고 인스턴스를 생성하러고 보니까 생성가능한 인스턴스수가 10개가 나오더라구오..ㅠㅠ 혹시 최대 생성할수 있는 인스턴스 개수는 어떻게 정해지는건지 아시나요? ㅠㅠ 인스턴스 여러개 더 (10개이상) 생성하려며어떻게 해야되는지ㅜㅠ

    • 게스트 썸네일
      2016.07.12 21:22 신고

      아래 페이지를 참고하시면 될것 같습니다^^ (nova quota-update)
      http://docs.openstack.org/admin-guide/cli_set_compute_quotas.html

  • 게스트 썸네일
    2016.10.11 15:13 신고

    질문이 있습니다.
    egrep -c '(vmx|svm)' /proc/cpuinfo <이 명령을 수행했을때 아무출력이 안나오면 아래를 실행하고 위의 service,rm명령을 다시실행>
    이부분에서 기본설정으로 실행시 0값이 떠서 설정을 qemu로 바꾼후 service,rm 명령을 실행했는데도 egrep -c '(vmx|svm)' /proc/cpuinfo 명령을 실행하면 0값이 뜨네요. 검색해도 안나오고... 혹시 해결책이 있을까요?
    바꾸고 나선 0이떠도 상관없는 건가요? 일단 대시보드 로그인까진 잘되네요

    • 게스트 썸네일
      2016.10.12 18:45 신고

      egrep 이부분은 호스트cpu가 가상화명령을 지원하는지 확인하는 부분이에요
      즉 0이뜨는건 호스트 지원을 안하는 cpu를 사용하고 계시다는것이고 그 값은 변경되지 않습니다^^

    • 게스트 썸네일
      2016.10.13 15:43 신고

      아 그런거군요. 또하나 알아가네요 감사합니다.

  • 게스트 썸네일
    2016.10.13 18:05 신고

    질문하나만 더해도 될까요? 실마리가 안보여서 ㅠ
    여기 글을 보고나니 어느정도 알거 같아서 오픈스택사이트의 가이드를 보고 미타카를 설치하고 있는데
    대시보드설치후 브라우져로 로그인하려고 실행시키면 Internal Server Error 가 뜨네요 ㅠ
    왜이러는 걸까요?
    아래는 전문입니다.
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.
    Apache/2.4.7 (Ubuntu) Server at controller Port 80

    • 게스트 썸네일
      2016.10.13 18:58 신고

      아래 링크를 확인해보세요? 오픈스택 Newton버전에서도 동일한 문제를 경험했고 해결하였습니다.
      혹시라도 안되신다면 /var/log/apache2/error.log를 확인해보세요~ Internal Server Error (500) 에러는 대개 apache conf 설정이거나 서버어플리케이션 문제였습니다.

      https://ask.openstack.org/en/question/91352/openstack-mitaka-can-not-access-dashboard/

    • 게스트 썸네일
      2016.10.17 19:01 신고

      링크의 에러와 같은에러지만 해결이 안되네요.
      답변 감사드리고
      해결되면 알려드리겠습니다!

      +추가
      알려주신 링크에 %{GLOBAL} 이 변수는 뭘 의미하는건지 알 수 있을 까요? 그대로 쓰는것은 아닌것 같고.. 환경변수로 따로 등록한 것도 없는데..
      변수가 맞긴 맞는건가요?

    • 게스트 썸네일
      2016.10.18 16:24 신고

      에러가 해결 됬습니다!
      비슷하면서도 살짝 달라서 정말 엄청 헤맸네요.
      작성자분이 달아주신 댓글의 글에선
      /etc/apache2/conf-available/openstack-dashboard.conf
      이 파일을 수정해보라고 했는데 안되었습니다.

      방금 찾은 글에서는
      /etc/apache2/conf-enabled/openstack-dashboard.conf
      이 파일을 수정해보라고 해서 해봤는데 되네요.
      똑같은 한줄인데... 몇일을 고생한건지..
      솔직히 왜 되는건지는 잘모르겠지만 일단 해결되서 정말 기쁩니다. 혹시 저와같은 에러로 고생하시는분 계실까봐 링크 걸어두고 갑니다.
      https://bugs.launchpad.net/horizon/+bug/1573488/comments/6

    • 게스트 썸네일
      2016.11.07 17:52 신고

      %{GLOBAL}은 해당 WSGI를 (파이썬) 서브 인터프리터가 아닌 메인 인터프리터의 context에서 처리하도록 하는 옵션입니다. 관련하여 아래 링크를 참고하는것도 좋을것 같습니다.
      http://stackoverflow.com/questions/755070/what-is-the-purpose-of-the-sub-interpreter-api-in-cpython

    • 게스트 썸네일
      2016.11.07 17:55 신고

      그리고 sites-enabled 폴더에 있는 내용을 수정해야 한다는데 동의합니다. 대신, 실제 사용되는 설정을 담아놓은 conf-enabled 폴더의 내용은 conf-available의 파일들의 심볼릭링크라는것을 언급하는게 좋을것 같습니다.
      피드백 댓글 감사드립니다^^

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.

티스토리 툴바