Déploiement CrunchServer
Recommandations matérielles
Machine 1 : Opensearch / Crunch Server
Objectif : indexer entre 5000 et 10000 documents avec quelques dashboards
Cette machine est principalement dédiée à Opensearch
auto-hébergée,
machine dédiée
VM Elle sert également à héberger des web services (probablement en Flask, FastAPI ou autre) : le crunh server.
Composant |
Spécification minimale recommandée |
|---|---|
OS |
Linux 64-bit (Ubuntu 22.04 LTS par ex.) |
RAM |
4 Go |
CPU |
2 vCPU |
Disque |
10–20 Go SSD (avec snapshot/réplica overhead) |
Shards |
1 shard principal par index |
Réplicas |
0 ou 1 (selon si tu veux de la redondance) |
Dashboards |
Oui, OpenSearch Dashboards sur la même machine possible |
Les dimensions pour un passage en prod si on veut booster les machines:
Cas d’usage |
RAM |
CPU |
Disque |
|---|---|---|---|
Besoin actuel Labrador (small) |
2–4 Go |
1–2 vCPU |
5–10 Go |
Pré-prod/test |
4 Go |
2 vCPU |
20 Go SSD |
Prod évolutive |
8 Go |
4 vCPU |
50+ Go SSD |
Machine 2 : Machine de données / Serveur Webdav
Objectif: dédiée au stockage des données.
a. Hypothèse de stockage local
Si on imagine le besoin de stocker la Base Labrador 2 (par exemple) qui a environ 2500 documents que j’estime à 1Go en moyenne. Cette machine doit servir à :
Héberger des web services (probablement en Flask, FastAPI ou autre)
Servir du WebDAV via Nginx
Stocker jusqu’à 5 000 fichiers, chacun pouvant faire jusqu’à 1 Go → stockage potentiel de 5 To
Être stable pour une utilisation réseau (accès distant, scripts, sauvegarde)
Ressource |
Recommandé |
Notes |
|---|---|---|
CPU |
4 vCPU (2 si faible trafic) |
Web services + gestion fichiers |
RAM |
8 Go |
Pour WebDAV, cache Nginx, apps |
Disque |
5 To SSD ou HDD avec cache (RAID 1) |
5 To utiles + marge |
Réseau |
1 Gbps si accès LAN ou externe |
Priorité au débit soutenu |
Sauvegarde |
Externe ou NAS |
5 To → pas négligeable |
b. Hypothèse avec stockage déporté.
Dans le cas ou les fichiers sont une autre zone, un autre disque. Cette fois ci un montage NFS de la zone est préférable à un montage SMB.
[STOCKAGE NFS]
|
[Machine WebDAV + Services]
|
[Clients HTTP / WebDAV / API]
La machine doit :
Héberger uniquement :
des web services
un serveur WebDAV (via Nginx)
Exposer une zone réseau (distant) contenant jusqu’à 5 000 fichiers de 1 Go chacun
Gérer l’I/O réseau, pas le stockage local
Dans ce cas, une configuration possible est la suivante :
Ressource |
Recommandé |
Pourquoi |
|---|---|---|
CPU |
2 vCPU |
Suffisant pour proxy, traitements légers |
RAM |
4 Go |
Nginx + services Python + cache |
Disque |
20–50 Go SSD |
OS + logs + services (pas de données) |
Réseau |
1 Gbps (minimum) |
Accès rapide à la zone réseau et clients |
OS |
Debian 12 ou Ubuntu Server 22.04 LTS |
Stable, bien supporté |
Déploiement à BF
Les deux machines proposées sont :
poc-crunch-opensearch (172.31.235.211)
poc-crunch-ws ()
Installation de la machine OpenSearch
Sur cette machine, les ports sont ouverts. Donc pas besoin de passer par des alias d’adresses avec un reverse_proxy et tout dans un flux sécurisé (https)
On peut directement adresser les services sans couche ssl (http://adresse:port)
1 service : C’est 1 adresse + 1 port
Cette machine est une machine debian (version ?). Elle ne contient rien au départ.
Utilisation de l’extension SSH remote de VSCode
On y accède via ssh en utilisant l’utilisateur localuser
ssh localuser@172.31.235.211
On peut donc utiliser VSCode pour y accéder
Installation de VSCode
Ajout de l’extensions ssh, docker
se connecter à l’hôte
poc-crunch-opensearchFaire un add new host : localuser@poc-crunch-opensearch)
Editer le fichier
.ssh/configavec les bons paramètres (user/name)
Installation de docker sur la machine
Suivre les indications données sur Docker Install
Ajouter l’utilisateur au groupe docker
sudo groupadd docker
sudo usermod –aG docker $USER
Pour tester, on se logue/delogue,
docker ps
Si la commande passe, docker est correctement installé
On teste l’installation d’un docker, on lance vite fait un serveur web
docker run –p 80:80 nginx:latest
Dans un autre terminal, on teste en local
curl http:localhost
on voit la page défaut de nginx
Sur sa machine, on accède à la machine en http, ouvrir l’url http://poc-crunch-opensearch:80 et voir que ça marche, on voit la page par défaut de nginx. ça montre au passage qu’on peut atteindre la machine poc-crunch-opensearch directement au travers du réseau par le DNS.
Création et lancement du Crunch Server
On récupère le code
git clone https://ifpen-gitlab.appcollaboratif.fr/tellus/crunch_server.git
On construit l’image docker du server
Dans le répertoire infra/crunch :
docker compose build
=> ça va créer le docker crunch_server:latest
on lance le serveur.
Pour cela, on va lancer le service crunch défini dans le fichier infra/docker-compose.yml
crunch:
image:crunch_server:latest
container_name:crunch
ports:
-8000:8000
Dans un terminal :
docker compose up crunch
On teste sur internet : http://poc-crunch-opensearch:8000/ping
ça répond pong, ça signifie que ça marche
On stoppe tout et on redémarre en mode daemon :
docker compose down crunch
docker compose up -d crunch
Lancement des services docker pour OpenSearch
Sur la machine poc-crunch-opensearch, suivre les indications pour installer OpenSearch
cat /proc/sys/vm/max_map_count # nombre de process qu’on peut faire tourner en même temps, lié à Java
sudo vi /etc/sysctl.conf
Rajouter une ligne avec vm.max_map_count=262144
sudo sysctl -p
Dans VSCode, ouvrir le fichier docker-compose.yml (disponible dans le paquet cadeau récupéré) et enlever les parties dédiées à Traefik
Dans le répertoire infra, créer un fichier .env et y ajouter OPENSEARCH_INITIAL_ADMIN_PASSWORD=passwd.
Attention: Ce mot de passe sera utilisé par la suite pour faire des requêtes sur la base opensearch.
Dans un terminal via VSCode sur la machine localuser@poc-crunch-opensearch :
docker volume create opensearch.data01
docker volume create opensearch.data02
Dans le fichier docker-compose.yml mettre pour la mémoire: Xms1g et Xmx1g (et non pas Xms2g et Xmx2g). C’est à adapter à la configuration de la machine
Ajouter pour le node s01 :
ports
-5601:5601
Dans le terminal via VSCode sur la machine localuser@poc-crunch-opensearch :
docker compose up
=> OK, attendre et regarder les logs pour voir qu’il n’y a pas d’erreurs au bout d’un certain temps.
On teste l’adresse http://poc-crunch-opensearch:5601/, ça marche si la fenêtre d’authentification des dashboards s’ouvre.
Normalement le service tourne tout le temps, si ça plante, refaire un docker compose up
Installation de la machine Data
La 2ème machine se nomme : poc-crunch-ws.
On peut également configurer une nouvelle machine distante dans VSCode pour l’extension remote ssh
Installation de Miniconda
Dans le terminal, afin d’avoir une version standalone python on installe miniconda, inutile si on a déjà un python en version > 3.10 d’installé sur la machine.
Tester que curl est installé et Si curl n’est pas déjà installé
sudo apt insatll curl
Ensuite on installe miniconda
export MINICONDA_VERSION=py311.25.22-2
export MINICONDA_REPO=https://repo.anaconda.com/miniconda
curl -sSLo /tmp/miniconda.sh ${MINICONDA_REPO}/Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh
bash /tmp/miniconda.sh –b –p /home/${USER}/mconda3.11
Récupération et installation du la DataCrunch ToolBox
Création d’un environnement virtuel (dans le terminal)
~/mconda3.11/bin/python –m venv venv
. venv/bin/activate
Installation de Python dans VSCode Ouvrir osearch_file_screener.py Shift Ctrl p > select interpréter > Python 3.11 Dans le terminal :
pip install –r requirements.txt
pip install –r requirements_reports.txt
python scripts/install_nltk_data.py
python scripts/install_spacy_data.py
pip install en_core_web_sm-3.5.0-py3-none-any.whl
Mise à jour des chemins dans les fichiers scripts/test_osearch.py et scripts/config.yaml
Modifier le fichier pyproject.toml :
Supprimer la ligne dynamic Mettre version_file=‘’0.1.1’’ Dans le terminal :
pip install –e .
pip install requests-ntlm
Création d’un fichier .env dans screener_toolbox_develop avec OSEARCH_PW=passwd
Dans terminal
export OSEARCH_PW=‘’passwd’’
Dans le fichier config.yaml :
Dans un terminal
curl –u ‘’admin:${OSEARCH_PW}’’ –X GET ‘’http://172.31.235.211:9200/’’
Attention: Mettre 172.31.235.211 au lieu de poc-crunch-opensearch. Soucis pour passer au travers du DNS pour le moment.