오픈스택 설치 (Ubuntu - Mitaka) - control node, compute node 클라우드/빅데이터/가상화

[ 오픈스택 설치 (Mitaka)  - controller, compute ]


1. Oralce VM VirtualBox를 설치한다.

2. VM머신을 Ubuntu용으로 만들어 설치 한다.
   주의) SSD를 사용하는 PC는 VM에서 잡는 가상 메모리가 PC의 실제 메모리가된다.
         가상 메모리를 많이 잡으면 VM 몇 개 띄우면 PC가 멈춘다.(난, 디스크 16G, 메모리 2G, CPU 2로 했다.)

        다음은 별도 설정이 필요한 네트워크이다.

3. Ubuntu Linux 설치 (ubuntu-16.04-server-amd64.ios)
   설치는 별거없고, Software selection에서 <standard system utilities>,<Virtual Machine host>,
                      <OpenSSH server>를 체크한다.

4. DevStack으로 설치하기
   0) 설치 환경 설정 하기(controller node, compute node 모두)
      $vi /etc/passwd 를 오픈하여 stack사용자를 root 그룹에 포함시킨다.
      $vi /opt/stack/.profile
      export MY_HOST="192.168.201.207"  => host ip
      export OS_USERNAME="admin"
      export OS_PASSWORD="openstack"
      export OS_AUTH_URL="http://192.168.201.208:35357/v3" => controller node
      export OS_IDENTITY_API_VERSION=3
      export OS_PROJECT_NAME=admin
      export OS_PROJECT_DOMAIN_NAME=default
      export OS_USER_DOMAIN_NAME=default
      export FORCE=yes

   1) 현재 최신버전 Mitaka를 설치한다.(controller, compute1 모두 동일함)
      설치 스크립트를 다운로드 한다.
      설치는 반드시 stable버전을 이용한다. 기본 버전은 시험용이다.
      #git clone https://git.openstack.org/openstack-dev/devstack  -b stable/mitaka
      stack계정을 생성한다.아래와 같이하면 stack계정으로 로그된다.
      #./devstack/tools/create-stack-user.sh; su stack
      stack계정으로 로그인하여 다시 스크립트를 다운한다.
      $git clone https://git.openstack.org/openstack-dev/devstack  -b stable/mitaka
   2) control node(hostname:ubuntu)를 설치해보자(controller쪽은 모든 서비스를 설치할것이다.)
      $cd /opt/stack/devstack
      그냥 기본 설치한다.
      처음 설치를하면 비밀번호를 4번 물어보는데 compute1 node의 설정과 같이 openstack으로 했다.
      $./stack.sh
      설치가 되었으면 URL어디로 접속하라고 화면에 표신된다.
      아래 명령어로 서비스를 확인한다.
      $ nova-manage service list or nova service-list
      이미지에서 compute1은 현재까지는 아직 미표시된다.

   3) compute1 node추가
      $cd /opt/stack/devstack
      compute환경을 설정한다.
      $vi localrc (파일을 새로 만든다. 문서엔 local.conf로하라고했는데, 이상하게 이 파일은 설치시 적용이 안된다.ㅠㅠ)
      #[[local|localrc]]
      # DEFAULT
      FORCE=yes
      HOST_IP=192.168.201.207   => controller서버 IP이다.
      MULTI_HOST=True

      # LOG 디렉토리
      DEST=/opt/stack
      LOGFILE=$DEST/logs/stack.sh.log
      SCREEN_LOGDIR=$DEST/logs/screen

      # NETWORK 환경
      FLAT_INTERFACE=enp0s3
      FIXED_RANGE=10.0.0.0/20
      FIXED_NETWORK_SIZE=4096
      FLOATING_RANGE=192.168.201.0/25 => 사내 PC 대역 IP이다.

      # VNC
      VNCSERVER_LISTEN=0.0.0.0
      VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP

      # SYSTEM PASS(WEB포함)
      ADMIN_PASSWORD=openstack
      MYSQL_PASSWORD=openstack
      RABBIT_PASSWORD=openstack
      SERVICE_PASSWORD=openstack
      SERVICE_TOKEN=openstackservicetoken

      # CINDER(볼륨)
      VOLUME_GROUP="cinder-volume"
      VOLUME_NAME_PREFIX="volume-"“

      # install service
      ENABLED_SERVICES=n-cpu,n-net,n-api,cinder,c-sch,c-api,c-vol,neutron  => compute nod에 불필요한 서비스도있다.

      # SYSTEM HOSTS
      SERVICE_HOST=192.168.201.208  => controller서버 IP이다.
      MYSQL_HOST=$SERVICE_HOST
      RABBIT_HOST=$SERVICE_HOST
      GLANCE_HOSTPORT=$SERVICE_HOST:9292
      KEYSTONE_AUTH_HOST=$SERVICE_HOST
      KEYSTONE_SERVICE_HOST=$SERVICE_HOST
      DATABASE_TYPE=mysql

      # 아래 내용은 (/opt/stack/devstack/samples/local.conf의 내용 그대로다.)
      SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
      SWIFT_REPLICAS=1
      SWIFT_DATA_DIR=$DEST/data

      이제 설치하자.
      $./stack.sh
      설치가 완료되면 아래 명령어로 확인한다.(compute1 서버의 hostname이 보여야 한다.)
      VM을 복사하여 사용할때는 반드시 호스트명을 변경하여 사용해야 한다. control node와 compute1 node의
      호스트명이 동일하면 반영이 안된다.
      $ nova-manage service list or nova service-list
   4) 웹으로 로그인 해본다.
     http://192.168.201.208/ => controller IP
     ID : admin or demo
     PW : openstack(설치시 입력한 비밀번호이다.)
       이미지를 보면 compute1번이 보인다.
   5) 기타
      /opt/stack/devstack 디렉토리를 보면 몇 가지 스크립트가 있다.
      stack.sh => 패키지를 설치하는 스크립트다.
      unstack.sh => 실행 프로세스를 죽인다. 설치하다 에러가 발생하면 이 명령어 후 stack.sh를 실행하는데
                       환경 설정 파일(/etc/nova/*)들은 모두 초기화 된다. 어떤 설정이 반드시 필요하면 localrc파일을 이용하자.
      clean.sh => 패키지 설치를 모두 삭제한다.(초기화)

   [ 설치 시 에러 조치 ]
에러1) 
[ERROR] ./stack.sh:191 If you wish to run this script anyway run with FORCE=yes
/opt/stack/devstack/functions-common: line 232: /opt/stack/logs/error.log: No such file or directory

조치 : $ export FORCE=yes (위의 .profile 참고)

에러2)
2016-7-07 05:41:08.216 | ++lib/glance:configure_glance:108           database_connection_url glance
2016-07-07 05:41:08.222 | ++lib/database:database_connection_url:134  local db=glance
2016-07-07 05:41:08.230 | ++lib/database:database_connection_url:135  database_connection_url_ glance
2016-07-07 05:41:08.231 | /opt/stack/devstack/lib/database: line 135: database_connection_url_: command not found
2016-07-07 05:41:08.236 | +lib/glance:configure_glance:108           dburl=
2016-07-07 05:41:08.250 | +lib/glance:configure_glance:1             exit_trap

조치 : localrc파일에 DATABASE_TYPE=mysql 항목 등록

에러3)
ERROR (CommandError): You must provide a username or user ID via --os-username, --os-user-id, env[OS_USERNAME] or env[OS_USER_ID]

조치 : export로 해당 항목 등록 (위의 .profile 참고)

에러4)
2016-07-05 03:47:54.529 | +./stack.sh:exit_trap:494                  generate-subunit 1467689920 554 fail
2016-07-05 03:47:54.925 | +./stack.sh:exit_trap:495                  [[ -z /opt/stack/logs ]]
2016-07-05 03:47:54.932 | +./stack.sh:exit_trap:498                  /opt/stack/devstack/tools/worlddump.py -d /opt/stack/logs
2016-07-05 03:47:56.062 | +./stack.sh:exit_trap:504                  exit 1

조치 : 아래 패키지 설치
       $ sudo apt-get install python-pip
       $ sudo pip install --upgrade pip
       $ sudo pip install -U os-testr

에러5)
2016-07-07 08:13:52.780 | +lib/cinder:create_volume_types:553        openstack volume type create --property volume_backend_name=lvmd                                                                              river-1 lvmdriver-1
2016-07-07 08:13:55.278 | Volume Type lvmdriver-1 already exists. (HTTP 409) (Request-ID: req-ecfe0c50-f67b-455c-b0a6-911e15ace284)
2016-07-07 08:13:55.417 | +lib/cinder:create_volume_types:1          exit_trap
2016-07-07 08:13:55.463 | +./stack.sh:exit_trap:474                  local r=1
2016-07-07 08:13:55.518 | ++./stack.sh:exit_trap:475                  jobs -p
2016-07-07 08:13:55.571 | +./stack.sh:exit_trap:475                  jobs=
2016-07-07 08:13:55.581 | +./stack.sh:exit_trap:478                  [[ -n '' ]]
2016-07-07 08:13:55.594 | +./stack.sh:exit_trap:484                  kill_spinner
2016-07-07 08:13:55.605 | +./stack.sh:kill_spinner:370               '[' '!' -z '' ']'
2016-07-07 08:13:55.620 | +./stack.sh:exit_trap:486                  [[ 1 -ne 0 ]]
2016-07-07 08:13:55.630 | +./stack.sh:exit_trap:487                  echo 'Error on exit'
2016-07-07 08:13:55.630 | Error on exit
2016-07-07 08:13:55.647 | +./stack.sh:exit_trap:488                  generate-subunit 1467879049 186 fail
2016-07-07 08:13:56.140 | +./stack.sh:exit_trap:489                  [[ -z /opt/stack/logs ]]

조치 : 실행 node에서 openstack volume type delete lvmdriver-1 명령으로 등록 정보 삭제
       compute노드에서 unstack.sh를 실행하면 반드시 위 명령으로 삭제해야 한다.
       뭔가 다른 방법이 있을텐데....모르겠다. ㅠㅠ

에러5)
+lib/keystone:create_keystone_accounts:372  local admin_tenant
++lib/keystone:create_keystone_accounts:373  openstack project show admin -f value -c id
Could not find resource admin
+lib/keystone:create_keystone_accounts:373  admin_tenant=
+lib/keystone:create_keystone_accounts:1   exit_trap

조치 : stack 사용자를 root 그룹에 포함시킨다. mysql접근 권한이 없어 사용자 정보를 못가져오는 것이다.

에러6)
"NO_AUTO_CREATE_USER"의 내용이 나온다.

조치 : sql-mode="NO_AUTO_CREATE_USER" 를 my.cnf에 등록하고 mysql을 재시작한다.
        /etc/mysql/my.cnf


[ 참고 사이트 ]
오픈스택 사내 세미나 자료(개념 설명) - http://repository.egloos.com/5816176
오픈스택 커뮤니티 - http://www.openstack.org/
오픈스택 한국 커뮤니티 - http://openstack.or.kr/
오픈스택 패키지별 설치파일 제공 - https://github.com/vietstacker
오픈스택 페이스북 - https://www.facebook.com/openstack


덧글

댓글 입력 영역