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. In der Regel sollte OpenSearch jedem Node die „Anzahl Shards im Index“ geteilt durch „Anzahl Nodes“ zuweisen.
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 2024-11-18