[ English | English (United Kingdom) | 中文 (简体, 中国) | Indonesia | русский | français | नेपाली | Deutsch | Esperanto | português (Brasil) | español | 한국어 (대한민국) ]

대시보드의 세션 스토리지를 설정하세요.

대시보드는 Django sessions framework 을 사용하여 사용자 세션 데이터를 처리합니다. 그러나 사용 가능한 세션 백엔드를 사용할 수 있습니다. 사용자는 local_settings.py 의``SESSION_ENGINE`` 설정을 통해 세션 백엔드를 사용자 지정합니다

아래의 대시보드 서비스 단계와 함께 핵심 OpenStack 서비스 및 기타 필수 서비스를 설계 및 구현한 후 사용자와 관리자가 OpenStack 대시보드를 사용할 수 있습니다. 대시보드에 로그인하는 방법에 대한 자세한 지침은 OpenStack 최종 사용자 설명서의 OpenStack User Documentation 장을 참조하십시오.

다음 섹션에서는 대시보드 배포와 관련된 각 옵션의 장단점을 설명합니다.

로컬 메모리 캐시

로컬 메모리 스토리지는 외부 종속성이 없기 때문에 세션 백엔드에서 가장 빠르고 쉽게 설정할 수 있습니다. 그것은 다음과 같은 중요한 단점을 가집니다:

  • 프로세스나 작업 단위간의 공유 저장소가 없습니다.

  • 프로세스를 멈춘 후에 남아있는 프로세스가 없습니다.

로컬 메모리 백엔드는 종속성이 없기 때문에 Horizon의 기본값으로 사용됩니다. 그것은 생산용이나 어려운 개발 작업에는 권장되지 않습니다.

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
  'default' : {
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
  }
}

외부 캐시에 Memcached``또는  ``Redis 와 같은 응용 프로그램을 사용할 수 있습니다. 이러한 애플리케이션은 지속성과 공유 스토리지를 제공하며 소규모 구현 및 개발에 유용합니다.

Memcached

Memcached는 소규모의 임의 데이터 청크를 위한 메모리 내 키 값 저장소를 제공하는 고성능 분산 메모리 개체 캐싱 시스템입니다.

요구사항:

  • memcached 서비스가 실행중이며 접근할 수 있습니다.

  • 파이썬 모듈 python-memcached 가 설치되었습니다.

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

Redis

Redis는 오픈 소스, BSD 라이센스, 고급 키 값 저장소입니다. 종종 데이터 구조 서버라고 합니다.

요구사항:

  • Redis 서비스가 실행중이며 접근할 수 있습니다.

  • 파이썬 모듈 redisdjango-redis 설치합니다.

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
    "default": {
        "BACKEND": "redis_cache.cache.RedisCache",
        "LOCATION": "127.0.0.1:6379:1",
        "OPTIONS": {
            "CLIENT_CLASS": "redis_cache.client.DefaultClient",
        }
    }
}

데이터베이스 초기화 및 구성

데이터베이스 지원 세션은 확장 가능하고 지속적이며 높은 통화와 높은 가용성을 제공할 수 있습니다.

어쨌든, 데이터베이스 기반 세션이 느린 세션 저장소 중 하나이며 대량으로 사용시 높은 오버헤드를 초래합니다. 데이터베이스 배포의 적절한 구성은 상당히 힘들 수 있으며 이 문서의 범위를 훨씬 벗어납니다.

  1. MySQL 커맨드 라인 클라이언트를 시작합니다.

    # mysql
    
  2. MySQL 루트 사용자의 암호를 물어보면 입력하세요.

  3. MySQL 데이터베이스를 구성하려면 대시 데이터베이스를 생성하십시오.

    mysql> CREATE DATABASE dash;
    
  4. 데이터베이스를 완전히 제어하는 새로 생성된 대시 데이터베이스에 대한 MySQL 사용자를 생성하십시오. DASH_DBPASS를 새 사용자의 암호로 바꿉니다.

    mysql> GRANT ALL PRIVILEGES ON dash.* TO 'dash'@'%' IDENTIFIED BY 'DASH_DBPASS';
    mysql> GRANT ALL PRIVILEGES ON dash.* TO 'dash'@'localhost' IDENTIFIED BY 'DASH_DBPASS';
    
  5. MySQL을 종료하려면 mysql> 프롬프트에서 quit 을 입력하세요.

  6. In the local_settings.py file, change these options:

    SESSION_ENGINE = 'django.contrib.sessions.backends.db'
    DATABASES = {
        'default': {
            # Database configuration here
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'dash',
            'USER': 'dash',
            'PASSWORD': 'DASH_DBPASS',
            'HOST': 'localhost',
            'default-character-set': 'utf8'
        }
    }
    
  7. 보여진 것 처럼 local_settings.py 파일을 구성한 후 manage.py migrate 명령을 실행하여 새로 생성된 데이터베이스를 채울 수 있습니다.

    # /usr/share/openstack-dashboard/manage.py migrate
    
  8. 우분투에서 아파치를 재시작할 때 경고를 피하려면, 다음과 같이 대시보드 디렉토리에 blackhole 디렉토리를 생성하세요.

    # mkdir -p /var/lib/dash/.blackhole
    
  9. Apache 서비스를 재시작합니다.

  10. 우분투에서, API 서버가 오류 없이 대시보드에 연결하도록 하기 위해 nova-api 서비스를 재시작하세요.

    # service nova-api restart
    

캐시된 데이터베이스

데이터베이스 쿼리의 성능 문제를 완화하기 위해 데이터베이스와 캐싱 인프라를 모두 사용하여 write-through 캐싱 및 효율적인 검색을 수행하는 Django cached_db 세션 백엔드를 사용할 수 있습니다.

앞서 설명한 대로 데이터베이스와 캐시를 모두 구성하여 이 하이브리드 설정을 사용하도록 합니다. 그 후, 다음 값을 설정하십시오:

SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"

쿠키

Django 1.4 이상을 사용하는 경우``signed_cookies``의 백엔드는 서버 로드 및 확장 문제를 방지합니다.

이 백엔드는 사용자의 브라우저에 의해 저장되는 쿠키에 세션 데이터를 저장합니다. 백엔드는 암호화 서명 기술을 사용하여 전송하는 동안 세션 데이터가 손상되지 않도록 합니다. 이는 암호화와 다릅니다. 세션 데이터는 여전히 공격자가 읽을 수 있습니다.

이 엔진의 장점은 추가적인 종속성이나 인프라 오버헤드가 필요하지 않으며, 저장되는 세션 데이터의 양이 일반 쿠키에 적합한 한 무한 확장됩니다.

가장 큰 단점은 세션 데이터를 사용자의 컴퓨터에 있는 스토리지에 저장하여 무선으로 전송하는 것입니다. 또한 저장할 수 있는 세션 데이터의 양이 제한됩니다.

Django cookie-based sessions 문서를 보세요.