Hallo GinFizz
Derzeit verwende ich eine experimentelle Konfguration eines “es multinode clusters” auf Basis dieser Beschreibung: Install Elasticsearch with Docker | Elasticsearch Guide [8.12] | Elastic
Ähnlich, wie von Dir geschildert beobachte ich häufiger (*) dieses Verhalten:
Nach jedem Neustart der ElasticSearch Container meldet “occ fulltextsearch:test
” auf dem “nextcloud CLI” den Fehler “No alive nodes found in your cluster
”.
Eine systematische Erfassung des Fehlverhaltens führte ich noch nicht durch.
Zum Nachweis, dass die “es” Container gestartet und die “es” Prozesse fertig gestartet sind, nutze ich
curl -X GET "127.0.0.1:9200/_cat/nodes?v=true&pretty"
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
1nn.mm.0.4 19 58 67 5.12 3.81 1.67 cdfhilmrstw - es03
1nn.mm.0.3 37 58 67 5.12 3.81 1.67 cdfhilmrstw * es01
1nn.mm.0.2 29 58 67 5.12 3.81 1.67 cdfhilmrstw - es02
- einen Blick auf die Logeinträge mindestens des Containers “es01”:
…
[2021-09-17T11:53:54,015][INFO ][o.e.p.PluginsService ] [es01] loaded module [x-pack-text-structure]
[2021-09-17T11:53:54,017][INFO ][o.e.p.PluginsService ] [es01] loaded module [x-pack-voting-only-node]
[2021-09-17T11:53:54,019][INFO ][o.e.p.PluginsService ] [es01] loaded module [x-pack-watcher]
[2021-09-17T11:53:54,023][INFO ][o.e.p.PluginsService ] [es01] loaded plugin [ingest-attachment]
[2021-09-17T11:53:54,342][INFO ][o.e.e.NodeEnvironment ] [es01] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/sda1)]], net usable_space [1.6tb], net total_space [1.7tb], types [ext4]
[2021-09-17T11:53:54,345][INFO ][o.e.e.NodeEnvironment ] [es01] heap size [512mb], compressed ordinary object pointers [true]
[2021-09-17T11:53:54,810][INFO ][o.e.n.Node ] [es01] node name [es01], node ID [8VUha04pTMqoWxjUjkqO5w], cluster name [es-docker-cluster], roles [transform, data_frozen, master, remote_cluster_client, data, ml, data_content, data_hot, data_warm, data_cold, ingest]
[2021-09-17T12:10:40,342][INFO ][o.e.n.Node ] [es01] version[7.14.1], pid[7], build[default/docker/66b55ebfa59c92c15db3f69a335d500018b3331e/2021-08-26T09:01:05.390870785Z], OS[Linux/5.10.17-v8+/aarch64], JVM[Eclipse Foundation/OpenJDK 64-Bit Server VM/16.0.2/16.0.2+7]
[2021-09-17T12:10:40,388][INFO ][o.e.n.Node ] [es01] JVM home [/usr/share/elasticsearch/jdk], using bundled JDK [true]
[2021-09-17T12:10:40,400][INFO ][o.e.n.Node ] [es01] JVM arguments [-Xshare:auto, -Des.networkaddress.cache.ttl=60, -Des.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.locale.providers=SPI,COMPAT, --add-opens=java.base/java.io=ALL-UNNAMED, -XX:+UseG1GC, -Djava.io.tmpdir=/tmp/elasticsearch-13354192362627189037, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Des.cgroups.hierarchy.override=/, -Xms512m, -Xmx512m, -XX:MaxDirectMemorySize=268435456, -XX:G1HeapRegionSize=4m, -XX:InitiatingHeapOccupancyPercent=30, -XX:G1ReservePercent=15, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=docker, -Des.bundled_jdk=true]
…
Etwa ab dem Log-Eintrag der JVM (JVM arguments …) antworten die ES Prozesse des Containers auf Anfragen.
Suche in Gang setzen
Bisher (Experimente) setze ich die Suche wie folgt in Gang, wenn die ES Container neu gestartet wurden:
- deaktivieren und deinstallieren der Apps zum Thema „fulltextsearch“;
- installieren und aktivieren der Apps zum Thema „fulltextsearch“;
- ein wenig warten.
Schlussfolgerung
Daraus schliesse ich vorerst:
-
Die ES Prozesse erfordern eine gewisse Zeitspanne für den Start, ein ES Cluster auf demselben Nextcloud Host braucht noch etwas länger;
-
Die Nextcloud Application „fulltextsearch“ synchronisiert ihre Liste verfügbarer „ES“ Knoten zum ersten Mal bei der Installation.
-
Die Nextcloud Application „fulltextsearch“ synchronisiert ihre Liste verfügbarer „ES“ Knoten womöglich im Takt mit dem Aufruf des Nextcloud Schedulers (cron, respektive dessen Nachfolger / Alternativen).
Nächste Schritte
- Code von “fulltextsearch:text” anschauen, um die Vermutung “regelmässiger Update der ES Konfiguration” zu bekräftigen;
- ES Fakten studieren, um nach dem Start den Status “ready for use” präzise abfragen zu können;
- Prüfen, ob mit einer Ergänzung des Codes von “fulltextsearch:text” eine angemessene Resilienz erreicht werden kann.