Add Install_odoo_sesion_redis.txt
This commit is contained in:
@@ -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.
|
||||||
Reference in New Issue
Block a user