From 2c4bd620ba2d7c80023c733d6717524523eb80e1 Mon Sep 17 00:00:00 2001 From: odoo <2+odoo@noreply.localhost> Date: Sun, 31 May 2026 15:32:49 +0700 Subject: [PATCH] Add Install_odoo_sesion_redis.txt --- Install_odoo_sesion_redis.txt | 148 ++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 Install_odoo_sesion_redis.txt diff --git a/Install_odoo_sesion_redis.txt b/Install_odoo_sesion_redis.txt new file mode 100644 index 0000000..3f1bcfc --- /dev/null +++ b/Install_odoo_sesion_redis.txt @@ -0,0 +1,148 @@ +Odoo versi standar secara *default* **selalu menyimpan session di dalam bentuk file (filestore)** dan tidak memiliki opsi bawaan (*built-in configuration*) untuk memindahkan session langsung ke tabel database PostgreSQL. + +Jika Anda ingin menghindari penggunaan *Shared Folder/NFS* untuk session di lingkungan High Availability, ada **dua alternatif standar** yang biasa digunakan di industri: + +1. **Menggunakan Modul Tambahan Odoo (`session_redis`):** Menyimpan session ke Redis (Ini adalah *best practice* yang paling direkomendasikan untuk HA Odoo). +2. **Menggunakan Modul Tambahan Odoo (`session_db`):** Menggunakan modul komunitas dari OCA (*Odoo Community Association*) agar Odoo dipaksa menyimpan session ke dalam database Postgres. + +Berikut adalah pembaruan file `docker-compose.yml` menggunakan pendekatan **HA Postgres + Redis Session Store** karena jauh lebih stabil, cepat, dan efisien daripada memaksanya masuk ke database utama (PostgreSQL). + +--- + +### File Docker Compose (`docker-compose.yml`) dengan Redis Session + +Dalam konfigurasi ini, kita menambahkan satu *service* Redis. Kita juga tidak perlu lagi menyatukan folder `/var/lib/odoo` antar aplikasi Odoo untuk urusan session (namun folder ini tetap butuh dibagikan **hanya** jika Anda menyimpan dokumen/lampiran secara lokal dan tidak menggunakan Cloud Storage seperti AWS S3/MinIO). + +```yaml +version: '3.8' + +services: + # ------------------------------------------------------------------- + # SESSION LAYER (Redis untuk Sinkronisasi Session App Odoo) + # ------------------------------------------------------------------- + redis_session: + image: redis:7-alpine + command: redis-server --appendonly yes + volumes: + - redis_data:/data + + # ------------------------------------------------------------------- + # DATABASE LAYER (HA Postgres via Bitnami Primary/Standby + Pgpool) + # ------------------------------------------------------------------- + pg-primary: + image: bitnami/postgresql:15 + environment: + - POSTGRESQL_POSTGRES_PASSWORD=primary_master_pass + - POSTGRESQL_USERNAME=odoo + - POSTGRESQL_PASSWORD=odoo_secure_pass + - POSTGRESQL_DATABASE=odoo_db + - POSTGRESQL_REPLICATION_MODE=primary + - POSTGRESQL_REPLICATION_USER=repl_user + - POSTGRESQL_REPLICATION_PASSWORD=repl_password + volumes: + - pg_primary_data:/bitnami/postgresql + + pg-standby: + image: bitnami/postgresql:15 + depends_on: + - pg-primary + environment: + - POSTGRESQL_POSTGRES_PASSWORD=primary_master_pass + - POSTGRESQL_MASTER_HOST=pg-primary + - POSTGRESQL_MASTER_PORT_NUMBER=5432 + - POSTGRESQL_REPLICATION_MODE=standby + - POSTGRESQL_REPLICATION_USER=repl_user + - POSTGRESQL_REPLICATION_PASSWORD=repl_password + volumes: + - pg_standby_data:/bitnami/postgresql + + pgpool: + image: bitnami/pgpool:4 + ports: + - "5432:5432" + depends_on: + - pg-primary + - pg-standby + environment: + - PGPOOL_BACKEND_NODES=0:pg-primary:5432,1:pg-standby:5432 + - PGPOOL_SR_CHECK_USER=odoo + - PGPOOL_SR_CHECK_PASSWORD=odoo_secure_pass + - PGPOOL_SR_CHECK_DATABASE=odoo_db + - PGPOOL_ENABLE_LDAP=no + - PGPOOL_POSTGRES_USERNAME=postgres + - PGPOOL_POSTGRES_PASSWORD=primary_master_pass + - PGPOOL_ADMIN_USERNAME=admin + - PGPOOL_ADMIN_PASSWORD=admin_pass + + # ------------------------------------------------------------------- + # APPLICATION LAYER (Odoo Cluster dengan Environtment Redis) + # ------------------------------------------------------------------- + odoo_app_1: + image: odoo:16.0 + depends_on: + - pgpool + - redis_session + environment: + - HOST=pgpool + - PORT=5432 + - USER=odoo + - PASSWORD=odoo_secure_pass + # Environment tambahan parameter untuk modul Redis Session (jika modul dipasang) + - ODOO_SESSION_REDIS=1 + - ODOO_SESSION_REDIS_HOST=redis_session + - ODOO_SESSION_REDIS_PORT=6379 + volumes: + - odoo_data_1:/var/lib/odoo # Tidak perlu shared volume lagi untuk session! + - ./odoo_addons:/mnt/extra-addons + + odoo_app_2: + image: odoo:16.0 + depends_on: + - pgpool + - redis_session + environment: + - HOST=pgpool + - PORT=5432 + - USER=odoo + - PASSWORD=odoo_secure_pass + - ODOO_SESSION_REDIS=1 + - ODOO_SESSION_REDIS_HOST=redis_session + - ODOO_SESSION_REDIS_PORT=6379 + volumes: + - odoo_data_2:/var/lib/odoo + - ./odoo_addons:/mnt/extra-addons + + # ------------------------------------------------------------------- + # LOAD BALANCER LAYER (Nginx) + # ------------------------------------------------------------------- + nginx_lb: + image: nginx:alpine + ports: + - "80:80" + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf:ro + depends_on: + - odoo_app_1 + - odoo_app_2 + +volumes: + pg_primary_data: + pg_standby_data: + redis_data: + odoo_data_1: + odoo_data_2: + +``` + +--- + +### Langkah Tambahan Wajib (Sisi Aplikasi Odoo): + +Agar Environment `ODOO_SESSION_REDIS` di atas dapat bekerja dan Odoo benar-benar menyimpan session ke Redis (bukan folder lokal), Anda harus memasukkan modul penunjang ke dalam folder `./odoo_addons`. + +1. Unduh modul **`server_environment`** atau modul **`redis` / `session_redis**` dari OCA (Odoo Community Association) untuk Odoo 16. +2. Letakkan modul tersebut di folder `./odoo_addons` Anda. +3. Jalankan Odoo, masuk ke menu *Apps*, lalu instal modul tersebut. + +**Bagaimana jika benar-benar ingin menggunakan Database Postgres untuk Session?** +Jika Anda bersikeras menggunakan tabel database PostgreSQL sebagai penyimpan session (meskipun performanya akan sedikit lebih lambat dibanding Redis karena operasi I/O write ke disk yang intens), jalankan struktur docker-compose di atas, tetapi ganti modulnya dengan mencari modul **`session_db`** dari OCA Odoo 16 di platform GitHub, lalu pasang di Odoo Anda. \ No newline at end of file