Elasticsearch: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Installation mit separaten Verzeichnissen für config, logs und data)
(Setze Pfad für config Verzeichnis im Start Skript)
Zeile 81: Zeile 81:
   #!/bin/bash
   #!/bin/bash
   export HOME=/home/pacs/xyz00/users/elastic
   export HOME=/home/pacs/xyz00/users/elastic
  export ES_PATH_CONF=$HOME/elastic/config
   export ES_JAVA_OPTS="-Xms1g -Xmx1g"
   export ES_JAVA_OPTS="-Xms1g -Xmx1g"
   cd $HOME
   cd $HOME

Version vom 17. Dezember 2021, 05:42 Uhr

Elasticsearch

Elasticsearch ist ein weit verbreiteter Suchserver für die Indizierung von Volltext oder von Log-Dateien. Nach einer Lizenzänderung ist Elasticsearch leider keine freie Software im Sinne der Opensource Initiative (OSI) mehr.

Dieses Dokument leitet zur Installation eines Elasticsearch-Server an, der am Localhost-Interface erreichbar ist und für Anwendungen auf dem Server (zum Beispiel Nextcloud mit Volltextsuche) genutzt werden kann. Durch eine Proxy-Konfiguration in einer .htaccess-Datei kann der Server über das Internet erreichbar gemacht werden.

Installation

Für den Dienst wird in HSAdmin ein eigener Shell-User xyz00-elastic mit der Shell /bin/bash angelegt.

Im ersten Schritt wird die Software (als tar.gz-Archiv) heruntergeladen und entpackt.

Die neueste Version kann auf https://www.elastic.co/de/downloads/elasticsearch in Erfahrung gebracht werden.

 wget "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.1-linux-x86_64.tar.gz"
 tar xzf elasticsearch-7.16.1-linux-x86_64.tar.gz 
 rm elasticsearch-7.16.1-linux-x86_64.tar.gz 

Für zukünftige Updates ist zu empfehlen, die Verzeichnisse config, data und logs separat anzulegen:

 mkdir ~/elastic/
 mv elasticsearch-7.16.1/config elastic
 mkdir ~/elastic/logs
 mkdir ~/elastic/data

In der Konfigurationdatei ~/elastic/config/elasticsearch.yml werden folgende Optionen gesetzt: Die beiden Ports, auf denen das System erreichbar ist und die security-Option für das Passwort-Login. Außerdem die Pfade für logs und data.

 http.port: 39200
 transport.tcp.port: 39202
 xpack.security.enabled: true
 discovery.type: single-node
 path.data: /home/pacs/xyz00/users/elastic/elastic/data
 path.logs: /home/pacs/xyz00/users/elastic/elastic/logs

Dann wird der Dienst provisorisch gestartet.

 cd elasticsearch-7.16.1/
 export ES_PATH_CONF=$HOME/elastic/config
 ES_JAVA_OPTS="-Xms1g -Xmx1g" ./bin/elasticsearch

In einer zweiten Shell erzeuge ich mit dem Kommando elasticsearch-setup-passwords zufällige Passworte für die vordefinierten Account in Elasticsearch:

 cd elasticsearch-7.16.1/
 export ES_PATH_CONF=$HOME/elastic/config
 ./bin/elasticsearch-setup-passwords auto

Die Ausgabe mit den generierten Passwörtern sichern!

Für Nextcloud ist noch das Plugin ingest-attachment Plugin erforderlich:

 export ES_PATH_CONF=$HOME/elastic/config
 cd elasticsearch-7.16.1/
 ./bin/elasticsearch-plugin install ingest-attachment
 -> Installing ingest-attachment
 -> Downloading ingest-attachment from elastic
 [=================================================] 100%   
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @     WARNING: plugin requires additional permissions     @
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 * java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
 * java.lang.RuntimePermission accessDeclaredMembers
 * java.lang.RuntimePermission getClassLoader
 * java.lang.reflect.ReflectPermission suppressAccessChecks
 * java.security.SecurityPermission createAccessControlContext
 See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
 for descriptions of what these permissions allow and the associated risks.
 
 Continue with installation? [y/N]y
 -> Installed ingest-attachment
 -> Please restart Elasticsearch to activate any plugins installed

Danach sollte Elasticsearch neugestartet werden.

Monitoring

Ein Start- und ein Stop-Skript und eine Monit-Konfiguration sorgen für den automatischen Start des Dienstes nach einem Reboot.

~/bin/start-elastic

 #!/bin/bash
 export HOME=/home/pacs/xyz00/users/elastic
 export ES_PATH_CONF=$HOME/elastic/config
 export ES_JAVA_OPTS="-Xms1g -Xmx1g"
 cd $HOME
 mkdir -p $HOME/var
 cd $HOME/elasticsearch-7.16.1
 exec ./bin/elasticsearch &
 echo $! >$HOME/var/elasticsearch.pid

~/bin/stop-elastic

 #!/bin/bash
 export HOME=/home/pacs/xyz00/users/elastic
 kill $( cat $HOME/var/elasticsearch.pid )

~/.monitrc

 set daemon 60 with start delay 10
 set logfile /home/pacs/xyz00/users/elastic/var/monit.log
 set idfile /home/pacs/xyz00/users/elastic/var/monit.id
 set statefile /home/pacs/xyz00/users/elastic/var/monit.state
 set mailserver localhost
 set mail-format { from: monit@xyz00.hostsharing.net }
 set httpd port 39008 address localhost
     allow elasticadmin:ein-monit-passwort
 check process elasticsearch with pidfile /home/pacs/xyz00/users/elastic/var/elasticsearch.pid
     start program "/home/pacs/xyz00/users/elastic/bin/start-elastic"
     stop program "/home/pacs/xyz00/users/elastic/bin/stop-elastic"

crontab -l

 # m h  dom mon dow   command
 HOME=/home/pacs/xyz00/users/elastic
 @reboot  /usr/bin/monit -c $HOME/.monitrc