본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Manually Install OpenStack

Openstack Horizon on Centos (Rocky)

by iamlucia 2020. 8. 22.

 

Horizon: Openstack's Dashboard 


오픈스택 서비스(Nova, Swift, Keystone)에 대한 웹 기반 UI를 제공한다.

 


 

<< ⭕ 본 설치 내용은 컨트롤러 노드에서 진행 >>

 


🔨 구성요소 설치

 

🟢 dashboard 패키지 설치

 

# yum install openstack-dashboard

 

 

🟢 dashboard의 local_settings 파일 수정 

 

# vi /etc/openstack-dashboard/local_settings

더보기

OPENSTACK_HOST="[컨트롤러 노드 관리용 ip]"


ALLOWED_HOSTS=['*' , ]  //보안적으로는 좋지 않은 방식 


SESSION_ENGINE='django.contrib.sessions.backends.cache'
CACHES={
                    'default': {
                             'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
                             'LOCATION':'controller:11211',
                    }
}


OPENSTACK_KEYSTONE_URL="http://%s:5000/v3"% OPENSTACK_HOST


OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT=True


OPENSTACK_API_VERSIONS={
        "identity":3,
        "image":2,
        "volume":2,
}


OPENSTACK_KEYSTONE_DEFAULT_DOMAIN="Default" //대쉬보드로 생성한 계정의 디폴트 domain: default 


OPENSTACK_KEYSTONE_DEFAULT_ROLE="user" //대쉬보드로 생성한 계정의 디폴트 role: user 


OPENSTACK_NEUTRON_NETWORK={ //네트워크 옵션 1일 때와 옵션 2일 때 다르게 설정 필요 (예로 옵션1일 때는 layer 3 네트워킹 서비스를 비활성화해야함) 

OPENSTACK_NEUTRON_NETWORK = {
    'enable_router': True,
    'enable_quotas': True,
    'enable_ipv6': True,
    'enable_distributed_router': True,
    'enable_ha_router': False,
    'enable_lb': True,
    'enable_firewall': False,
    'enable_vpn': True,
    'enable_fip_topology_check': True,


TIME_ZONE = "Asia/Seoul"

 

 

🟢 dashboard.conf 파일에 해당 커맨드가 없는 경우 추가 :  

 

# vi/etc/httpd/conf.d/openstack-dashboard.conf
---------------------------------------------------
WSGIApplicationGroup %{GLOBAL}

 


🔨 설치 마무리 

🟢 웹서버와 세션 스토리지 서비스(memcached.service) 재실행 : 

 

# systemctl restart httpd.service memcached.service

 

* 이때 각 서비스가 실행되지 않는다면? 각 서비스를 따로 하나씩 (커맨드를 분리하여) 재실행시켜 본다.


📍  Verification

주소창에  http://[컨트롤러 노드 관리용 ip]/dashboard  입력하여 오픈스택 로그인 화면이 나오는 지 확인

 

 


🔫 Trouble Shooting # 1 : URL Not Found

 

🔴  ERROR: The Requested URL was not found on this server.

 

(흔히, 구글링을 하면 15-horizon_vhost를 해결방식으로 언급하지만, 오픈스택을 packstack으로 설치하지 않는 경우 해당 파일이 생성되지 않는 것 같다. 왜냐하면 내 오픈스택 파일 중엔 해당 파일이 없었으니까..)

 

There was no /etc/httpd/conf.d/15-horizon_vhost.conf but a /etc/httpd/conf.d/openstack-dashboard.conf file

 

 

🟠 경로 오류라고 판단 :

 

1. /dashboard 경로가 아닌 /static 으로 접속해 봄

 


2. 오픈스택 대시보드 관련 conf 파일 경로 관련 command 중

/dashboard 로 접속하는 경우의 Aliase가 설정되어 있지 않은 상태였음

 

🟢  Trouble Shooting : /dashboard 에 해당하는 Alias 명령문 설정 : 


"WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi "

 

# vi /etc/httpd/conf.d/openstack-dashboard.conf

WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess dashboard
WSGIProcessGroup dashboard
WSGISocketPrefix run/wsgi

WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi

Alias /dashboard/static /usr/share/openstack-dashboard/static

<Directory /usr/share/openstack-dashboard/openstack_dashboard/wsgi>
   Options All
   AllowOverride All
   Require all granted
</Directory>

<Directory /usr/share/openstack-dashboard/static>
  Options All
  AllowOverride All
  Require all granted
</Directory>

 

 

🔫 Trouble Shooting # 2 : Something went wrong ! 

 

🔴 ERROR : 로그인화면은 이제 제대로 뜨는데. 로그인을 한 다음 대쉬보드로 들어가지지 않는다? 

 

🟠 로그 분석시, 토큰 세션 관련된 오류임을 확인 . 인증서비스의 토큰 캐시를 관리하는 memcache 수정 필요 

 

🟢 Trouble Shooting : memcached 파일에서 컨트롤러 노드의 관리용 ip 추가가 안 되어있어, 추가하여 해결  

 

# vi /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,192.168.1.100" // 컨트롤러 노드의 관리용IP

 

수정한 설정 내용 반영하기: restart 

 

# systemctl restart httpd.service memcached.service