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

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

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

After architecting and implementing the core OpenStack services and other required services, combined with the Dashboard service steps below, users and administrators can use the OpenStack dashboard. Refer to the Log in to the dashboard.

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

로컬 메모리 캐시

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

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

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

로컬 메모리 백엔드는 종속성이 없기 때문에 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 문서를 보세요.