So installieren Sie mehrere Elasticssearch-Knoten auf einem einzelnen Server

Elasticsearch ist eine Open-Source-, breit verteilbare, leicht skalierbare Suchmaschine der Enterprise-Klasse, auf die über eine umfangreiche und ausgeklügelte API zugegriffen werden kann. Es kann extrem schnelle Suchen ermöglichen, die Ihre Datenermittlungsanwendungen unterstützen, und kann für viele verschiedene Anwendungsfälle wie “klassische” Volltextsuche, Analysespeicher, Autovervollständigung, Rechtschreibprüfung, Benachrichtigungs-Engine und als universeller Dokumentenspeicher verwendet werden . Analytische Workloads neigen dazu, Dinge zu zählen und Ihre vielen Daten zusammenzufassen, die sogar Big Data sein können. Sie können dies für die unscharfe Suche verwenden, die gegenüber Rechtschreibfehlern nachsichtig ist. Es ist immer wichtig, Änderungen und Verbesserungen an Ihren Suchen mit realistischen Datenmengen zu testen, bevor Sie sie an die Produktion senden, da Fuzzy-Suchen CPU-intensiv sind und daher mit Vorsicht und wahrscheinlich nicht in jedem Feld hinzugefügt werden sollten. Elasticsearch hilft auch bei der automatischen Vervollständigung und der sofortigen Suche. Die Suche während der Benutzereingaben gibt es in vielen Formen, wie zum Beispiel einfache Vorschläge für zB vorhandene Tags, der Versuch, eine Suche basierend auf dem Suchverlauf vorherzusagen, oder einfach eine völlig neue Suche für jeden gedrosselten Tastendruck durchzuführen. Es gibt viele verschiedene Funktionen in Elasticsearch, die beim Erstellen dieser Funktionen helfen, z. B. match_phrase_prefix, Präfixabfragen, Indizierung von Gramm und eine Familie verschiedener Suggester.

In diesem Artikel geht es um die Installation mehrerer Elasticsearch-Knoten auf einem einzigen CentOS 7-Server.

Sie können jedoch ähnliche Schritte für Ihre anderen Linux-Distributionen verwenden.

Voraussetzungen

Um diese Aufgabe der Installation und Konfiguration von mehr als einem Elasticsearch-Knoten auf einem einzelnen Server zu erfüllen, müssen Sie nur mit Root-Benutzeranmeldeinformationen auf Ihren Server zugreifen, sei es CentOS 6 oder CentOS 7, welcher Server auch immer Sie für Ihre Umgebung verwenden möchten. Lassen Sie uns zunächst eine Verbindung zu Ihrem Server herstellen und einen allgemeinen Benutzer ohne Rootberechtigung erstellen.

#ssh root@server_ip

1) Hinzufügen eines neuen Benutzers

Verwenden Sie nach der Anmeldung mit dem Root-Benutzer die folgenden Befehle, um einen neuen Allzweckbenutzer zu erstellen, der während der Installation verwendet werden soll.

# adduser elasticsearch
Changing password for user elasticsearch.
New password:****
Retype new password: ****
passwd: all authentication tokens updated successfully.

Fügen Sie den neuen Benutzer der Gruppe ‘Rad’ hinzu, um ihn zu geben sudo Privilegien.

# usermod -aG wheel elasticsearch

2) Systemaktualisierung

Aktualisieren Sie jetzt Ihr System mit Updates und Sicherheitspatches, indem Sie den folgenden Befehl auf Ihrem CentOS 7-Server verwenden.

# yum update -y

Sobald Ihr System mit den Voraussetzungen fertig ist, fahren Sie mit dem nächsten Schritt für die Installation von Java Version 8 auf Ihrem System fort.

3) Installieren von Java (JVM) Version 8

Elasticsearch wird mit Java erstellt, für dessen Ausführung mindestens Java 8 erforderlich ist. Es werden nur Java und OpenJDK von Oracle unterstützt. Auf allen Elasticsearch-Knoten und -Clients sollte dieselbe JVM-Version verwendet werden. Es wird daher empfohlen, Java Version 1.8.0_121 oder höher zu installieren, da sonst Elasticsearch den Start verweigert, wenn eine andere Java-Version verwendet wird.

Um die erforderliche Version von JAVA zu installieren, können Sie den folgenden Befehl verwenden.

$sudo yum install java-1.8.0-openjdk.x86_64

Führen Sie nach Abschluss der Installation den folgenden Befehl aus und überprüfen Sie die Version der installierten java.

$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Die von Elasticsearch verwendete Java-Version kann durch Setzen der Umgebungsvariablen ‘JAVA_HOME’ konfiguriert werden. Sobald die Voraussetzungen erfüllt sind, wechseln Sie zur Netzsitzung, um die Knoten herunterzuladen, zu installieren und anschließend zu konfigurieren.

So laden Sie Elasticsearch herunter

Elasticsearch wird in mehreren Paketformaten bereitgestellt, aber die Pakete ‘zip’ und ‘tar.gz’ eignen sich für die Installation auf jedem System, was die einfachste Wahl für den Einstieg in Elasticsearch ist. Das Paket ‘rpm’ eignet sich eher für die Installation auf Red Hat, Centos, SLES, OpenSuSE und anderen RPM-basierten Systemen. Es kann von der Elasticsearch-Website oder von unserem RPM-Repository mit ‘wget’-Befehlen heruntergeladen werden.

Laden wir die beiden verschiedenen Versionen des Elastisearch-Pakets herunter, die wir auf CentOS 7 installieren werden.

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz

Jetzt stehen uns zwei verschiedene Versionen von Elasticsearch-Paketen zur Verfügung, die installiert werden können. Extrahieren Sie die Archive und verschieben Sie sie in den extrahierten Ordner, um das Paket zu kompilieren und zu installieren.

$ tar -zxf elasticsearch-5.0.1.tar.gz
$ tar -zxf elasticsearch-5.2.2.tar.gz

Konfigurieren Sie den ersten Knoten von Elasticsearch

Beginnen Sie nun mit der neuesten Version von Elasticsearch, die zuerst installiert werden muss. Lassen Sie uns die Standardkonfigurationsdatei mit Ihrem Befehlszeileneditor öffnen, der sich im Verzeichnis ‘config’ befindet.

$ vim elasticsearch-5.2.2/config/elasticsearch.yml

Drücken Sie ‘i’, um in den Einfügemodus zu wechseln und die folgenden Konfigurationsparameter in die Datei einzufügen.

cluster.name: elastic_cluster1
node.name: node-1
node.master: true
node.data: true
transport.host: localhost
transport.tcp.port: 9300
http.port: 9200
network.host: 0.0.0.0

Hier sind http.port und transport.port in der Standardkonfiguration nicht angegeben, ES versucht beim Start den nächsten verfügbaren Port auszuwählen, beginnend mit einer Basis von 9200 für HTTP und 9300 für den internen Transport. Lass uns sparen und close die Konfigurationsdatei mit ‘:wq!’ und konfigurieren Sie jetzt Ihren sekundären Knoten.

Sekundärknoten konfigurieren

Um Ihren sekundären Knoten zu konfigurieren, öffnen Sie dieselbe Konfigurationsdatei, die sich am Standardspeicherort des Archivs befindet, und fügen Sie den folgenden Inhalt mit Ihrem Editor ein.

$ vim elasticsearch-5.0.1/config/elasticsearch.yml
cluster.name: elastic_cluster1
node.name: node-2
#node.master: true
node.data: true
transport.host: localhost
transport.tcp.port: 9302
http.port: 9202
network.host: 0.0.0.0

Save und close die Datei und gehen Sie zum nächsten Abschnitt, um die Dienste zu starten.

So starten Sie die Elasticsearch-Dienste

Da wir beide Nodes von Elasticsearch mit unterschiedlichen Versionen konfiguriert haben, müssen wir nun beide auf unserem CentOS 7-Server starten, indem wir ihr Binärskript ausführen.

$ cd elasticsearch-5.2.2
$ bin/elasticsearch -d

Dies startet den elastischen Suchprozess im Hintergrund. Ändern Sie nun Ihr Verzeichnis in den sekundären Knoten von elasticsearch und führen Sie dieselben Befehle aus.

$ cd elasticsearch-5.0.1
$ bin/elasticsearch -d

Das war’s, jetzt können Sie den Status Ihrer Überwachungsports überprüfen, um sicherzustellen, dass beide Knoten auf ihren spezifischen Ports laufen, die in der Konfiguration angegeben sind.

$ netstat -tlnp
$ ps -ef | grep elastic

Sie können auch den folgenden Befehl verwenden, um zu bestätigen, dass der Dienst erfolgreich gestartet wurde.

$ curl -X GET 'https://localhost:9200'
{
  "name" : "node-1",
  "cluster_name" : "elastic_cluster1",
  "cluster_uuid" : "yrMHCKfJS2msgvQj-HWkag",
  "version" : {
    "number" : "5.2.2",
    "build_hash" : "f9d9b74",
    "build_date" : "2017-02-24T17:26:45.835Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}

Verwenden Sie auf ähnliche Weise für den sekundären Knoten, der auf Port ‘9202’ ausgeführt wird, den folgenden Befehl.

$ curl -X GET 'https://localhost:9202'
{
  "name" : "node-2",
  "cluster_name" : "elastic_cluster1",
  "cluster_uuid" : "I4Xk5Yr3RTuyp0Q0IsmxNQ",
  "version" : {
    "number" : "5.0.1",
    "build_hash" : "080bb47",
    "build_date" : "2016-11-11T22:08:49.812Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.1"
  },
  "tagline" : "You Know, for Search"
}

Fazit

Das ist es. In diesem Artikel haben wir erfahren, wie Sie mehrere Elasticsearch-Knoten auf einem einzigen CentOS 7-Server installieren. Jetzt können Sie Elasticsearch in einer Reihe verschiedener Konfigurationen für Logstash, einige Analysefunktionen, die benutzerorientierte Suche in großen Indizes und viele interne Anwendungen verwenden. Die Verwaltung von JVMs mit großen Heaps ist aufgrund der Laufzeiten der Garbage Collection eine beängstigende Angelegenheit. Es ist besser, noch kleinere Heaps zu verwenden, da es einfacher ist, Heap-Dumps zu erfassen und zu analysieren. Um eine optimale Lucene-Leistung zu erzielen, ist es auch wichtig, über ausreichend RAM für das Caching der Indexdateien durch das Betriebssystem zu verfügen. Wenn wir einen einzelnen Knoten mit einem kleinen Heap betreiben, würden wir sowohl CPU als auch RAM verschwenden.