Angenommen, ich habe 5 Computer, auf denen ich einen Elasticsearch-Cluster ausführen möchte, und alle sind mit einem freigegebenen Laufwerk verbunden. Ich habe eine einzelne Kopie von elasticsearch auf dieses freigegebene Laufwerk gelegt, damit alle drei es sehen können. Starten Sie einfach die Elasticsearch auf diesem freigegebenen Laufwerk auf allen meinen Computern, und das Clustering würde automatisch seine Magie entfalten? Oder müsste ich bestimmte Einstellungen konfigurieren, damit die Elasticsearch erkennt, dass sie auf 5 Computern ausgeführt wird? Wenn ja, welche Einstellungen sind relevant? Sollte ich mir Gedanken über die Konfiguration von Replikaten machen oder wird dies automatisch erledigt?
elasticsearch
Rolando
quelle
quelle
Antworten:
es ist super einfach.
Sie benötigen für jeden Computer eine eigene Kopie von ElasticSearch (kopieren Sie einfach die, die Sie jetzt haben). Der Grund dafür ist, dass jeder Computer / Knoten seine eigenen Dateien behält, die im gesamten Cluster gespeichert sind.
Das einzige, was Sie wirklich tun müssen, ist die Konfigurationsdatei so zu bearbeiten, dass sie den Namen des Clusters enthält.
Wenn alle Computer denselben Clusternamen haben, erledigt elasticsearch den Rest automatisch (solange sich alle Computer im selben Netzwerk befinden).
Lesen Sie hier, um loszulegen: https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html
Wenn Sie Indizes erstellen (wohin die Daten gehen), definieren Sie zu diesem Zeitpunkt, wie viele Replikate Sie möchten (sie werden im Cluster verteilt).
quelle
Es wird normalerweise automatisch behandelt.
Wenn die automatische Erkennung nicht funktioniert. Bearbeiten Sie die Konfigurationsdatei für die elastische Suche, indem Sie die Unicast-Erkennung aktivieren
Knoten 1:
Knoten 2:
und so weiter für Knoten 3,4,5. Machen Sie Knoten 1 zum Master und den Rest nur als Datenknoten.
Bearbeiten: Bitte beachten Sie, dass nach der ES-Regel, wenn Sie
N
Knoten haben, Knoten gemäß der KonventionN/2+1
Master für Failover-Mechanismen sein sollten. Sie können jedoch Datenknoten sein oder nicht.Falls die automatische Erkennung nicht funktioniert, liegt der wahrscheinlichste Grund darin, dass das Netzwerk dies nicht zulässt (und daher deaktiviert). Wenn zu viele Pings für die automatische Erkennung auf mehreren Servern stattfinden, verhindern die Ressourcen zum Verwalten dieser Pings, dass andere Dienste ordnungsgemäß ausgeführt werden.
Stellen Sie sich zum Beispiel einen Cluster mit 10.000 Knoten und alle 10.000 Knoten vor, die die automatischen Pings ausführen.
quelle
Ich habe die von @KannarKK in ES 2.0.2 vorgeschlagenen Schritte ausprobiert, konnte den Cluster jedoch nicht zum Laufen bringen. Offensichtlich habe ich etwas herausgefunden, da ich in der Slave-Konfiguration die TCP-Portnummer auf dem Master festgelegt hatte. Discovery.zen.ping.unicast.hosts benötigt die Portnummer des Masters zusammen mit der IP-Adresse (TCP-Portnummer) für die Erkennung. Wenn ich also die folgende Konfiguration versuche, funktioniert es für mich.
Knoten 1
Knoten 2
quelle
Elastic Search 7 hat die Konfigurationen für die Clusterinitialisierung geändert. Es ist wichtig zu beachten, dass die ES-Instanzen intern über die Transportschicht (TCP) kommunizieren und nicht über das HTTP-Protokoll, das normalerweise zur Durchführung von Operationen an den Indizes verwendet wird. Unten finden Sie eine Beispielkonfiguration für einen Cluster mit 2 Maschinen.
cluster.name: cluster-new node.name: node-1 node.master: true node.data: true bootstrap.memory_lock: true network.host: 0.0.0.0 http.port: 9200 transport.host: 102.123.322.211 transport.tcp.port: 9300 discovery.seed_hosts: [“102.123.322.211:9300”,"102.123.322.212:9300”] cluster.initial_master_nodes: - "node-1" - "node-2”
Maschine 2 Konfiguration: -
cluster.name: Dies gilt für alle Computer, die Teil eines Clusters sein sollen.
node.name: Kennung für die ES-Instanz. Standardmäßig wird der Computername verwendet, wenn er nicht angegeben wird.
node.master: Gibt an, ob diese ES-Instanz Master sein soll oder nicht
node.data : Gibt an, ob diese ES-Instanz ein Datenknoten sein soll oder nicht (Daten halten).
bootrap.memory_lock: Deaktivieren Sie das Austauschen. Sie können den Cluster starten, ohne dieses Flag zu setzen. Es wird jedoch empfohlen, die Sperre festzulegen. Weitere Informationen: https://www.elastic.co/guide/en/elasticsearch/reference/master/setup-configuration-memory.html
network.host: 0.0.0.0, wenn Sie die ES-Instanz über das Netzwerk verfügbar machen möchten. 0.0.0.0 unterscheidet sich von 127.0.0.1 (auch bekannt als localhost oder Loopback-Adresse). Dies bedeutet, dass alle IPv4-Adressen auf dem Computer vorhanden sind. Wenn der Computer mehrere IP-Adressen hat und ein Server 0.0.0.0 überwacht, kann der Client den Computer von jeder der IPv4-Adressen aus erreichen.
http.port: Port, an dem diese ES-Instanz auf HTTP-Anforderungen wartet
transport.host: Die IPv4-Adresse des Hosts (diese wird zur Kommunikation mit anderen ES-Instanzen verwendet, die auf verschiedenen Computern ausgeführt werden). Weitere Informationen: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-transport.html
transport.tcp.port: 9300 (der Port, an dem der Computer die TCP-Verbindungen akzeptiert)
Discovery.seed_hosts: Dies wurde in neueren Versionen geändert. Initialisieren Sie alle IPv4-Adressen mit dem TCP-Port (wichtig) von ES-Instanzen, die Teil dieses Clusters sein sollen. Dies wird für alle ES-Instanzen, die Teil dieses Clusters sind, gleich sein.
cluster.initial_master_nodes: Knotennamen (node.name) der ES-Maschinen, die an der Master-Wahl teilnehmen werden. (Quorum-basierte Entscheidungsfindung: - https://www.elastic.co/guide/en/elasticsearch/reference/current /modules-discovery-quorums.html#modules-discovery-quorums )
quelle