65 lines
2.3 KiB
Markdown
65 lines
2.3 KiB
Markdown
|
|
# Runbook — Elasticsearch (recherche dans les cours et labs)
|
||
|
|
|
||
|
|
Instance interne, jamais exposée, consommée seulement par le portail en PHP
|
||
|
|
(`App\Services\Recherche\IndexRecherche`). Détail des choix :
|
||
|
|
[ADR 0009](../adr/0009-elasticsearch-interne-sans-securite.md).
|
||
|
|
|
||
|
|
## Où sont les choses
|
||
|
|
|
||
|
|
| Élément | Emplacement |
|
||
|
|
|---|---|
|
||
|
|
| Config | `/etc/elasticsearch/elasticsearch.yml` (sécurité x-pack désactivée, écoute `127.0.0.1` seulement) |
|
||
|
|
| Tas JVM | `/etc/elasticsearch/jvm.options.d/heap.options` (512 Mo, voir ADR 0009) |
|
||
|
|
| Index | `paillasse_catalogue` |
|
||
|
|
| Déployé par | `ansible/elasticsearch.yml` (rôle `elasticsearch`, rejoue aussi `portail` pour écrire `.env`) |
|
||
|
|
|
||
|
|
```
|
||
|
|
cd ansible && script -q /dev/null ansible-playbook elasticsearch.yml -i inventory.ini
|
||
|
|
```
|
||
|
|
|
||
|
|
## Vérifier que ça fonctionne
|
||
|
|
|
||
|
|
```
|
||
|
|
systemctl is-active elasticsearch
|
||
|
|
curl -s http://127.0.0.1:9200/paillasse_catalogue/_count
|
||
|
|
```
|
||
|
|
|
||
|
|
Reconstruire l'index manuellement (après un changement de mapping, ou si le
|
||
|
|
catalogue semble désynchronisé) :
|
||
|
|
|
||
|
|
```
|
||
|
|
cd /var/www/portail
|
||
|
|
sudo -u www-data HOME=/tmp php8.3 artisan recherche:indexer
|
||
|
|
```
|
||
|
|
|
||
|
|
Autrement, l'index se reconstruit automatiquement après `labs:synchroniser`
|
||
|
|
et `cours:synchroniser` (voir ces deux commandes).
|
||
|
|
|
||
|
|
## Pourquoi la RAM est surveillée
|
||
|
|
|
||
|
|
Comme pour Ceph et WebDAV (voir les runbooks correspondants) : ce serveur a
|
||
|
|
réellement 31 Go de RAM, partagés avec OpenStack et le portail. Le tas JVM
|
||
|
|
est volontairement limité à 512 Mo (~900 Mo de RSS au total mesuré) — ne
|
||
|
|
jamais retirer `heap.options` ni laisser Elasticsearch calculer sa taille de
|
||
|
|
tas automatiquement sur ce serveur.
|
||
|
|
|
||
|
|
## Si le besoin grossit réellement
|
||
|
|
|
||
|
|
Pas de pagination ni de recherche à facettes pour l'instant (catalogue
|
||
|
|
minuscule). À ajouter dans `App\Services\Recherche\IndexRecherche` et
|
||
|
|
`RechercheController` si le catalogue de cours/labs grossit vraiment —
|
||
|
|
jamais avant, pour ne pas construire une fonction sans usage réel.
|
||
|
|
|
||
|
|
## Nettoyer entièrement (si besoin)
|
||
|
|
|
||
|
|
```
|
||
|
|
ssh paillasse
|
||
|
|
sudo systemctl disable --now elasticsearch
|
||
|
|
sudo rm -rf /var/lib/elasticsearch /etc/elasticsearch
|
||
|
|
sudo apt-get purge -y elasticsearch
|
||
|
|
sudo rm /etc/apt/sources.list.d/elastic-8.x.list /usr/share/keyrings/elastic.gpg
|
||
|
|
sudo apt-get update
|
||
|
|
```
|
||
|
|
Puis retirer `ELASTICSEARCH_HOTE`/`ELASTICSEARCH_PORT` du `.env` du portail
|
||
|
|
et redémarrer Horizon.
|