OpenSearch
OpenSearch basiert auf Apache Lucene.
Begriffe:
Index: Sammlung an „Dokumenten“, wobei ein Dokument ein JSON-Objekt ist. Analogie zu Datenbanken: Alle Studenten aus einer Tabelle.
Shard: Ein Index wird in Häppchen - den Shards - aufgeteilt und gleichmässig im Cluster verteilt. Ein Shard ist dabei ein vollständiger Lucene-Index, der CPU- und RAM-Ressourcen belegt. In der Regel sollte OpenSearch jedem Node die „Anzahl Shards im Index“ geteilt durch „Anzahl Nodes“ zuweisen. Shards sollten in der Praxis zwischen 10 und maximal 40 GB gross werden.
Shard Replica: Backup-Kopie im Falle des Ausfalls eines Nodes.
Installation
OpenSearch 2.15.x (inkl. Pinning):
curl --show-error --location https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo --output /etc/yum.repos.d/opensearch-2.x.repo
export OPENSEARCH_INITIAL_ADMIN_PASSWORD=$(tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom | head -c${1:-32})
echo Admin Password: $OPENSEARCH_INITIAL_ADMIN_PASSWORD
dnf -y install opensearch-2.15.0
Bemerkung
Die separate Installation einer Java-Runtime ist nicht nötig, OpenSearch liefert sein JDK mit - siehe /usr/share/opensearch/jdk/bin/java -version
.
Mindestens OpenSearch’s JVM-Options an die RAM-Grösse der Maschine anpassen:
cp /etc/opensearch/jvm.options /etc/opensearch/jvm.options.d/z00-linuxfabrik.options
# update the Xms and Xmx settings with half of the installed system memory
-Xms3g
-Xmx3g
Tipp
Aktuelle, tatsächliche Heap-Size und dessen Nutzung ausgeben lassen:
curl http://127.0.0.1:9200/_cat/nodes?h=heap*
# heap.current heap.percent heap.max
502.2mb 24 2gb
Cluster-Name anpassen - muss unternehmensweit eindeutig sein:
cluster.name: graylog-linuxfabrik
Optional Bind-Adresse und Port anpassen. Achtung: Wird eine externe IP-Adresse angegeben, müssen weitere Security-Konfigurationen getätigt werden - ansonsten schlagen die „bootstrap checks“ beim Start des Servers mit einer node validation exception
fehl.
network.host: 0.0.0.0
http.port: 9200
# plus more ...
In den Default-Einstellungen erwartet OpenSearch Log-Einträge auf Port 9200 per HTTPS. Wer das abschalten möchte:
# disable HTTPS
plugins.security.ssl.http.enabled: false
Ausserdem ist eine Authentifizierung fällig. Wer das ganze Security-Thema abschalten möchte:
# disable all security settings, including authorization
plugins.security.disabled: true
Bemerkung
So wird Security konfiguriert: https://opensearch.org/docs/latest/security/configuration/index/
Kernel-Parameter für OpenSearch anpassen:
# this is already the default, just to be sure:
sudo sysctl --write vm.max_map_count=262144
echo 'vm.max_map_count=262144' > /etc/sysctl.d/opensearch.conf
OpenSearch aktivieren:
systemctl daemon-reload
systemctl enable --now opensearch.service
Test:
# if http:
curl http://localhost:9200
# if https with authorization:
curl https://localhost:9200 -u 'admin:<custom-admin-password>' --insecure
Troubleshooting
- JNA temporary directory ‚/usr/share/opensearch‘ is not writable
chown -R opensearch:opensearch /usr/share/opensearch systemctl restart opensearch
- java.nio.file.AccessDeniedException: /usr/share/opensearch/3333321522907482464.tmp
Seit Version 2.13.0 müssen die Order dem OpenSearch User und Gruppe gehören, siehe https://github.com/opensearch-project/opensearch-build/pull/4043.
chown -R opensearch:opensearch /etc/opensearch/ /usr/share/opensearch/ /var/lib/opensearch/ systemctl restart opensearch
Built on 2025-03-27