Elasticsearch Cluster 8.x einrichten

Veröffentlicht am 28.02.2023

« Alle Vorträge ansehen Kontaktieren Sie uns
Setup Elasticsearch Cluster 8.x

Einführung

Code auf Github: Elasticsearch-Cluster

Wir richten einen Elasticsearch-Cluster mit fünf verschiedenen Knoten ein. Wir integrieren Kibana. Wir verwenden selbstsignierte Zertifikate für das Elasticsearch-Transportprotokoll. Für die Elasticsearch-REST-API verwenden wir öffentlich signierte Let's Encrypt-Zertifikate.

Wir gehen davon aus, dass Sie bereits öffentlich signierte SSL-Zertifikate (z. B. Let's Encrypt) erstellt haben. Wenn Sie noch keine öffentlich signierten SSL-Zertifikate haben, dann Befolgen Sie diese Anweisungen um kostenlose Let's Encrypt SSL-Zertifikate zu generieren.

Anforderungen

In diesem Video werden sechs verschiedene VM-Instanzen eines Cloud-Dienstanbieters verwendet. Für ein wenig Abwechslung verwenden einige Maschinen Ubuntu 20.04, andere Ubuntu 22.04.

Wir haben die Domänen abgebildet node1.evermight.net, node2.evermight.net, node3.evermight.net, node4.evermight.net, node5.evermight.net Und kibana.evermight.net zu jeder der 6 Maschinen.

Schritte

Schritt 1 - Ubuntu aktualisieren [03:35]

Alle Ubuntu-Installationen sind brandneu. Wir aktualisieren die Distribution und installieren einige Tools, die wir normalerweise auf allen Maschinen verwenden.

apt-get update && apt dist-upgrade -y && apt-get install -y vim curl gnupg gpg

Schritt 2 - Elasticsearch installieren [05:10]

Installieren Sie Elasticsearch auf node1 Zu node5 indem Sie diese Befehle auf allen ausführen.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; apt-get update; apt-get install -y apt-transport-https; apt-get install -y elasticsearch;

Schritt 3 - Konfigurieren Sie node1.evermight.net [07:10]

Gehe zu node1.evermight.net.

SSL-Zertifikate kopieren:

mkdir -p /etc/elasticsearch/certs/node1.evermight.net/

Laden Sie Ihre Zertifikate in das Verzeichnis hoch.

Bearbeiten Sie elasticsearch.yml

Gehen Sie zum /etc/elasticsearch/elasticsearch.yml Datei. Bearbeiten Sie die folgenden Felder:

cluster.name: es-demo node.name: node1 network.host: node1.evermight.net http.port: 9200 cluster.initial_master_nodes: ["node1"]

Fertiggestellte elasticsearch.yml auf GitHub verfügbar

Note- Wir tun NICHT Verwenden Sie das öffentlich signierte SSL für http noch auf node1.evermight.net. Wir benötigen die selbstsignierten Zertifikate, um mithilfe von Kommandozeilentools Registrierungstoken für unsere Knoten für den Clusterbeitritt zu generieren. Im letzten Schritt werden die selbstsignierten Zertifikate gegen die öffentlichen Zertifikate ausgetauscht. Wenn wir die Kommandozeilentools erneut verwenden müssen, müssen wir wieder auf die selbstsignierten Zertifikate zurückgreifen.

Eigentümer ändern

chown -R elasticsearch:elasticsearch /etc/elasticsearch

Schritt 4 - Starten Sie node1.evermight.net [13:45]

Starten Sie elasticsearch mit diesen Befehlen:

systemctl enable elasticsearch; systemctl daemon-reload; systemctl start elasticsearch;

Elastic-Passwort zurücksetzen

Setzen Sie das Passwort für den Elastic-Benutzer mit diesem Befehl zurück:

/usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u elastic

Geben Sie bei der entsprechenden Aufforderung ein Passwort ein.

Bestätigen Sie mit diesem Befehl, dass Elasticsearch funktioniert:

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cluster/health?pretty

Und Sie sollten ungefähr Folgendes sehen:

Confirm Elasticsearch Node 1 Success

Andere nützliche Befehle

Die folgenden Befehle können auch für Statusprüfungen und Untersuchungen nützlich sein:

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cat/nodes?pretty curl -k -u elastic:<password> https://node1.evermight.net:9200/_cat/master?pretty

Schritt 5 - Konfigurieren Sie node2.evermight.net [16:10]

Beitritt mit Registrierungstoken

Gehe zu node1.evermight.net und führen Sie diesen Befehl aus, um ein Registrierungstoken zu erstellen:

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

Gehe zu node2.evermight.net und führen Sie diesen Befehl aus, um das Registrierungstoken zu akzeptieren:

/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <paste the token>

Bestätigen Sie, dass die /etc/elasticsearch/elasticsearch.yml von node2.evermight.net hat eine discovery.seed_hosts die die IP-Adresse von node1.evermight.net.

SSL-Zertifikate kopieren:

mkdir -p /etc/elasticsearch/certs/node2.evermight.net/

Laden Sie Ihre Zertifikate in das Verzeichnis hoch.

Bearbeiten Sie elasticsearch.yml

Jetzt müssen Sie noch einige letzte Änderungen vornehmen an /etc/elasticsearch/elasticsearch.yml von node2.evermight.net. Bearbeiten Sie diese Felder:

cluster.name: es-demo node.name: node2 network.host: node2.evermight.net http.port: 9200 transport.host: 0.0.0.0 xpack.security.http.ssl: enabled: true key: certs/node2.evermight.net/privkey1.pem certificate: certs/node2.evermight.net/fullchain1.pem

Fertiggestellte elasticsearch.yml auf GitHub verfügbar

Eigentümer ändern

chown -R elasticsearch:elasticsearch /etc/elasticsearch

Schritt 6 - Starten Sie node2.evermight.net [26:00]

Starten Sie elasticsearch mit diesen Befehlen:

systemctl enable elasticsearch; systemctl daemon-reload; systemctl start elasticsearch;

Bestätigen Sie mit diesem Befehl, dass Elasticsearch funktioniert:

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cluster/health?pretty

Bestätigen Sie mit diesem Befehl, dass sich zwei Knoten im Cluster befinden:

curl -k -u elastic:<password> https://node1.evermight.net:9200/_cat/nodes?pretty

Sie können auch pingen node2.evermight.net für ähnliche Ergebnisse.

Schritt 7 - Konfigurieren und Starten von Knoten3, Knoten4 und Knoten5 [27:26]

Sie können Schritt 5 und Schritt 6 wiederholen für node3.evermight.net, node4.evermight.net, node5.evermight.net.

Schritt 8 – node1.evermight.net bereinigen – initialMasterKnoten und öffentlich signiertes SSL [30:10]

Zurück zu node1.evermight.net und bearbeiten Sie die /etc/elasticsearch/elasticsearch.yml um das öffentlich signierte SSL zu verwenden. xpack.security.http.ssl: enabled: true key: certs/node1.evermight.net/privkey1.pem certificate: certs/node1.evermight.net/fullchain1.pem

Kommentieren Sie auch die cluster.initial_master_nodes denn das sollte bei jedem Neustart vollständig vom Cluster bestimmt werden.

Hier ist die elasticsearch.yml für nachfolgende Neustarts von node1.evermight.net.

Dann neu starten node1.evermight.net

systemctl restart elasticsearch.service

Schritt 9 - Seed-Hosts aktualisieren [32:15]

Im /etc/elasticsearch/elasticsearch.yml von alle Knoten, aktualisieren Sie die discovery.seed_hosts um auf jeden Knoten zu verweisen:

// replace with actual ip addresses discovery.seed_hosts: - 1.1.1.1 - 1.1.1.2 - 1.1.1.3 - 1.1.1.4 - 1.1.1.5

Auf diese Weise weiß jeder Knoten, der den Cluster verlässt, wie er dem Cluster wieder beitreten kann, indem er nachschlägt:discovery.seed_hosts.

Schritt 10 - Kibana installieren [42:30]

Führen Sie diesen Befehl auf dem kibana.evermight.net Maschine zum Installieren von Kibana:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; apt-get install -y apt-transport-https; apt-get install -y kibana;

Schritt 11 - Kibana konfigurieren [43:30]

SSL-Zertifikate kopieren:

Gehen Sie zu Ihrem kibana.evermight.net Server und führen Sie diesen Befehl aus:

mkdir /etc/kibana/certs/kibana.evermight.net

Kopieren Sie anschließend Ihre SSL-Zertifikate in das /etc/kibana/cert/kibana.evermight.net.

kibana.yml bearbeiten

Gehen Sie zum /etc/kibana/kibana.yml Datei. Bearbeiten Sie die folgenden Felder:

server.port: 5601 server.host: 0.0.0.0 server.publicBaseUrl: "https://kibana.evermight.net:5601" server.ssl.enabled: true server.ssl.key: /etc/kibana/certs/kibana.evermight.net/priv1.key server.ssl.certificate: /etc/kibana/certs/kibana.evermight.net/fullchain1.pem elasticsearch.hosts: ["https://node1.evermight.net:9200"] elasticsearch.ssl.verificationMode: full

Note- Fügen Sie nur Hosts hinzu, die über die /etc/elasticsearch/service_tokens zum elasticsearch.hosts. Gastgeber ohne die service_tokens Datei kann Kibana nicht authentifizieren.

Service-Token erstellen

Führen Sie diesen Befehl von einem beliebigen Server aus:

curl -X POST -u elastic:<password> https://node1.evermight.net:9200/_security/service/elastic/kibana/credential/token/kibana_token

Kopieren Sie das Token, das Sie sehen.

Führen Sie diesen Befehl auf dem Kibana-Server aus: /usr/share/kibana/bin/kibana-keystore add elasticsearch.serviceAccountToken Fügen Sie das Token nach der Eingabeaufforderung ein.

Schritt 12 - Kibana starten [52:30]

systemctl enable kibana; systemctl start kibana;

Jetzt können Sie besuchen https://kibana.evermight.net:5601/ und melden Sie sich an mit elastic und das Passwort aus Schritt 4.