Anpasungen für den Einsatz im produktiven Umfeld
This commit is contained in:
parent
617e757435
commit
f69e24c518
1 changed files with 114 additions and 0 deletions
114
readme.md
114
readme.md
|
|
@ -255,3 +255,117 @@ Nach Abschluss des Deployments ist deine Moodle-Instanz unter der konfigurierten
|
|||
```
|
||||
```
|
||||
|
||||
## Einsatz im Produktiven Umfeld
|
||||
|
||||
Um die Anwendung in einem produktiven Umfeld laufen zu lassen, sind die folgenden weiteren Anpassungen möglich
|
||||
|
||||
### Datenbank
|
||||
|
||||
Es empfielt sich für den produktiven Einsatz für die MariaDB anstelle einer Single Instanz eine Datenbank mit Replicas zu wählen:
|
||||
|
||||
Siehe dazu:
|
||||
https://docs.stackit.cloud/stackit/en/service-plans-for-mariadb-79071839.html
|
||||
|
||||
Neben der reinen Hochverfügbarkeit ist auch die zu erwartetende Last zu beachten.
|
||||
|
||||
### Session Persistenz
|
||||
|
||||
Im aktuellen Setup wird die Persistenz der Sitzungen über die Datenbank (MariaDB) sichergestellt. Besser geeignet ist hier der Einsatz eines Redis Caches, den es ebenfalls im Marketplace der STACKIT gibt und die auf ähnliche Weise wie die Datenank an die Moodle App gebunden werden kann.
|
||||
|
||||
```bash
|
||||
cf create-service appcloud-redis60 redis-4.16.100-replica moodle-redis
|
||||
```
|
||||
|
||||
Dazu ist dann auch eine Anpassung der config.php notwendig:
|
||||
|
||||
```php
|
||||
// --- Redis-Konfiguration für Sessions und Locks ---
|
||||
$vcap_services = json_decode(getenv('VCAP_SERVICES'), true);
|
||||
// Finde den Redis-Service (der Name kann variieren, z.B. 'redis')
|
||||
$redis_service = null;
|
||||
if (isset($vcap_services['redis'])) {
|
||||
$redis_service = $vcap_services['redis'][0];
|
||||
}
|
||||
|
||||
if ($redis_service) {
|
||||
$redis_creds = $redis_service['credentials'];
|
||||
|
||||
// Redis für Sessions verwenden
|
||||
$CFG->session_handler_class = '\cachestore_redis\session_handler';
|
||||
$CFG->session_redis_host = $redis_creds['host'];
|
||||
$CFG->session_redis_port = $redis_creds['port'];
|
||||
$CFG->session_redis_password = $redis_creds['password'];
|
||||
$CFG->session_redis_database = 0; // Normalerweise 0
|
||||
$CFG->session_redis_prefix = 'moodlesess_';
|
||||
|
||||
// Redis auch für Application Locks verwenden (Best Practice)
|
||||
$CFG->lock_factory = '\cachestore_redis\lock_factory';
|
||||
}
|
||||
// --- Ende der Redis-Konfiguration ---
|
||||
```
|
||||
|
||||
Die Einstellung
|
||||
```php
|
||||
$CFG->session_handler_class = '\core\session\database';
|
||||
```
|
||||
ist auszukommentieren.
|
||||
|
||||
Nun noch die angepasste manifest Datei:
|
||||
|
||||
```yaml
|
||||
---
|
||||
applications:
|
||||
- name: moodle
|
||||
memory: 2G
|
||||
disk_quota: 2G
|
||||
buildpack: php_buildpack
|
||||
path: moodle
|
||||
routes:
|
||||
- route: deine-moodle-route.deine-domain.de
|
||||
env:
|
||||
# Buildpack anweisen, weniger Debug-Logs in Dateien zu schreiben
|
||||
BP_PHP_LOG_LEVEL: WARNING
|
||||
|
||||
# S3-Zugangsdaten für den Object Storage
|
||||
S3_ACCESS_KEY: DEIN_S3_ACCESS_KEY
|
||||
S3_SECRET_KEY: DEIN_S3_SECRET_KEY
|
||||
S3_BUCKET: DEIN_S3_BUCKET_NAME
|
||||
S3_ENDPOINT: DEIN_S3_ENDPOINT_URL
|
||||
|
||||
services:
|
||||
- moodle-demo-mariadb
|
||||
- moodle-autoscaler
|
||||
- moodle-redis # <-- Neuer Service hinzugefügt
|
||||
|
||||
# Konfiguration für den Autoscaler-Service
|
||||
autoscaling:
|
||||
min_instances: 2
|
||||
max_instances: 10
|
||||
rules:
|
||||
- metric_type: cpu
|
||||
threshold: 50
|
||||
operator: ">"
|
||||
adjustment: "+1"
|
||||
breach_duration_secs: 60
|
||||
cool_down_secs: 60
|
||||
- metric_type: cpu
|
||||
threshold: 10
|
||||
operator: "<"
|
||||
adjustment: "-1"
|
||||
breach_duration_secs: 60
|
||||
cool_down_secs: 60
|
||||
```
|
||||
|
||||
### CDN (Content Delivey Network)
|
||||
|
||||
STACKIT bietet ein eigenes CDN an, welches nun im produktiven Einsatz noch zusätzlich die Performance erhöhen kann und die überregionale Erreichbarkeit erleichtert.
|
||||
|
||||
Dazu legt man bei STACKIT einen CDN Eintrag auf die Orginale Route an (In diesem Beispiel: https://moodle.cf.demo.stackit.rocks )
|
||||
|
||||
https://docs.stackit.cloud/stackit/en/create-a-distribution-332824982.html
|
||||
|
||||
Das CDN erzeugt damit nun eine eigene URL, in unserem Fall v22sf2s1td84d5hz6rsf2715mw.aa.cdn.onstackit.cloud. Um diese wieder "schön" zu bekommen, legt man in STACKIT noch einen weiteren DNS Eintrag an. In unserem Fall ein CNAME Eintrag von moodle.demo.stackit.rocks auf die vom CDN Service vorgeschlagene URL (hier v22sf2s1td84d5hz6rsf2715mw.aa.cdn.onstackit.cloud.) und legt damit im CDN eine Custom Domain an:
|
||||
|
||||
https://docs.stackit.cloud/stackit/en/add-a-custom-domain-to-your-distribution-332824866.html
|
||||
|
||||
Nun kann der weltweite Zugriff auf die URL https://moodle.demo.stackit.rocks erfolgen.
|
||||
Loading…
Reference in a new issue