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

Siapkan penyimpanan sesi untuk Dasbor

Dasbor menggunakan Django sessions framework untuk menangani data sesi pengguna. Namun, Anda dapat menggunakan akhir sesi sesi yang tersedia. Anda mengkustomisasi sesi back end melalui pengaturan SESSION_ENGINE dalam file anda local_settings.py.

Setelah merancang dan mengimplementasikan layanan OpenStack inti dan layanan lain yang diperlukan, dikombinasikan dengan langkah-langkah layanan Dasbor di bawah ini, pengguna dan administrator dapat menggunakan dasbor OpenStack. Mengacu pada bab OpenStack User Documentation Panduan OpenStack End User Guide untuk instruksi lebih lanjut tentang masuk ke Dasbor.

Bagian berikut mendeskripsikan pro dan kontra dari setiap opsi yang berkaitan dengan penerapan Dasbor.

Memori cache lokal

Penyimpanan memori lokal adalah akhir sesi tercepat dan termudah untuk diatur, karena tidak memiliki ketergantungan eksternal sama sekali. Ini memiliki kelemahan signifikan berikut:

  • Tidak ada penyimpanan bersama di seluruh proses atau pekerja.

  • Tidak ada persisten setelah suatu proses berakhir.

Back end memori lokal diaktifkan sebagai default untuk Horizon semata-mata karena tidak memiliki dependensi. Ini tidak direkomendasikan untuk penggunaan produksi, atau bahkan untuk pekerjaan pengembangan yang serius.

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

Anda dapat menggunakan aplikasi seperti `` Memcached`` atau `` Redis`` untuk caching eksternal. Aplikasi ini menawarkan persisten dan penyimpanan bersama dan berguna untuk penyebaran dan pengembangan skala kecil.

Memcached

Memcached adalah sistem cache objek memori kinerja tinggi dan terdistribusi yang menyediakan penyimpanan nilai kunci (key-value store) di memori untuk potongan kecil data arbitrer.

Persyaratan:

  • Layanan memcaching berjalan dan dapat diakses.

  • Modul Python python-memcached diinstal.

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

Redis

Redis adalah open source, BSD berlisensi, advanced key-value store. Ini sering disebut sebagai server struktur data.

Persyaratan:

  • Layanan Redis berjalan dan dapat diakses.

  • Modul Python redis dan Django-redis diinstal.

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",
        }
    }
}

Menginisialisasi dan mengonfigurasi database

Sesi Database-backed bersifat skalabel, persisten, dan dapat dibuat konkurensi tinggi dan sangat tersedia.

Namun, sesi database-backed adalah salah satu penyimpanan sesi yang lebih lambat dan menimbulkan biaya overhead yang tinggi di bawah penggunaan berat. Konfigurasi yang tepat dari penyebaran basis data Anda juga dapat menjadi pekerjaan substansial dan jauh di luar lingkup dokumentasi ini.

  1. Mulai klien baris perintah (command-line) MySQL.

    # mysql
    
  2. Masukkan kata sandi pengguna root MySQL ketika diminta.

  3. Untuk mengkonfigurasi database MySQL, buat database dasbor.

    mysql> CREATE DATABASE dash;
    
  4. Buat pengguna MySQL untuk database dasbor yang baru dibuat yang memiliki kontrol penuh terhadap database. Ganti DASH_DBPASS dengan kata sandi untuk pengguna baru.

    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. Masukkan quit` pada prompt ``mysql> `` untuk keluar dari MySQL.

  6. Di file local_settings.py, ubah opsi ini:

    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. Setelah mengkonfigurasi file `` local_settings.py`` seperti yang ditunjukkan, Anda dapat menjalankan perintah manage.py migrate untuk mengisi database yang baru dibuat ini.

    # /usr/share/openstack-dashboard/manage.py migrate
    
  8. Untuk menghindari peringatan ketika Anda me-restart Apache di Ubuntu, buatlah direktori blackhole di direktori Dashboard, seperti berikut.

    # mkdir -p /var/lib/dash/.blackhole
    
  9. Restart layanan Apache.

  10. Pada Ubuntu, restart layanan nova-api untuk memastikan bahwa server API dapat terhubung ke Dashboard tanpa kesalahan.

    # service nova-api restart
    

Database cache

Untuk memitigasi masalah kinerja query database, Anda dapat menggunakan sesi back-end Django cached_db, yang memanfaatkan database dan infrastruktur cache untuk melakukan cache write-through dan pengambilan yang efisien.

Aktifkan pengaturan hibrida ini dengan mengonfigurasi database dan cache Anda, seperti yang dibahas sebelumnya. Kemudian, tetapkan nilai berikut:

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

Cookies

Jika Anda menggunakan Django 1.4 atau yang lebih baru, back end signed_cookies akan menghindarkan beban server dan masalah skala.

Bagian belakang ini menyimpan data sesi dalam cookie, yang disimpan oleh browser pengguna. Bagian belakang menggunakan teknik penandaan kriptografi untuk memastikan data sesi tidak dirusak selama pengangkutan. Ini tidak sama dengan enkripsi; data sesi masih dapat dibaca oleh penyerang.

Keunggulan mesin ini adalah bahwa ia tidak memerlukan tambahan biaya atau overhead infrastruktur, dan itu skala tanpa batas sepanjang kuantitas data sesi yang disimpan cocok menjadi cookie normal.

Kelemahan terbesar adalah ia menempatkan data sesi ke penyimpanan di komputer pengguna dan mengangkutnya melalui kabel. Ini juga membatasi jumlah data sesi yang dapat disimpan.

Lihat dokumentasi Django cookie-based sessions.