OpenSearch multi-nœud
Quatre rôles existent :
vector
qui fait tourner vector, connecté à OpenSearchmanager
, nœud OpenSearch manager, qui fait aussi tourner OpenSearch Dashboardsingest
, nœud OpenSearch ingest (uniquement, pas de data)data
, nœud OpenSearch data
Note : nous n'avons pas eu le temps de finir l'intégration de Colmet
dans cette configuration, mais les premiers pas on été faits dans la
branche multi_colmet
.
La plupart des informations valable pour Opensearch mono-nœud sont aussi valable pour cette composition (connexion à OpenSearch Dashboards et à l'API, tunnel SSH, dashboards par défaut).
Sécurité
Les échanges entre les nœuds sont chiffrés avec TLS. Pour celà, nous avons
mis en place une chaîne de certification. Un certificat racine est
généré au moment de la compilation (derivation opensearch-root-cert
dans l'overlay opensearch-security.nix
). Grâce à des scripts bash
exécutés par Systemd au lancement d'OpenSearch, des certificats pour chaque
nœuds sont ensuite générés et configurés lors du démarrage des machines.
Ces certificats de nœuds sont signés par le certificat racine (et placés
dans le keystore
). Le certificat racine est listé comme étant de confiance
(en étant copié dans le truststore
de chaque nœud, mais aussi en étant
ajouté à la liste des certificats du système).
Sur le nœud manager, un script pour configurer les permissions et utilisateurs
par défaut est également lancé (wait-and-run-secyrityadmin
). Afin d'avoir
des droits d'administration, ce script a également besoin d'un certificat pour
s'authentifier. Nous en générons donc un et le signons avec le même certificat
racine.
Note pour Docker
Le cluster peut ne pas démarrer avec Docker, avec le message d'erreur
suivant dans les logs d'OpenSearch (systemctl status opensearch.service
).
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Cette option est une option du noyau Linux qui peut être configurée avec
sysctl
. Dans les autres flavours, elle est configurée via NixOS dans
le code de la composition, mais dans le cas de Docker, comme le noyau
est partagé avec la machine hôte, on doit changer l'option manuellement
sur sa machine.
En dehors des containers, il faut donc faire :
sudo sysctl -w vm.max_map_count=262144
Lancer plusieurs nœuds du même type
Pour lancer plusieurs même noeud à partir d'un code on utilise la commande :
nxc start -r nom_du_noeud=nombre_de_noeud -f vm
Par exemple, on peut lancer la commande suivante pour avoir 2 noeuds data identique : nxc start -r data=2 -f vm