
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:
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.