2017-10-20 3 views
1

Es könnte eine dumme Frage sein, aber ich konnte keine Antwort finden. Wenn ich 3 Knoten in meinem Cluster habe, muss ich also die IP und den Port jedes Knotens bereitstellen, während ich einen Transport-Client erstelle, damit ich mit jedem Knoten kommunizieren kann ??Elasticsearch cluster connection

new PreBuiltTransportClient(settings, AuthenticationPlugin.class).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 
         Integer.parseInt("9300"))) 
         .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 
         Integer.parseInt("9301"))) 
InetSocketTransportAddress(InetAddress.getByName("localhost"), 
         Integer.parseInt("9302")));; 

Gibt es eine Möglichkeit, wo ich IP und Port von jedem Knoten nicht bereitstellen müssen ?? Bitte helfen Sie

Antwort

0

Wenn alle drei Knoten in einem einzigen Cluster sind, können Sie nur mit einem von ihnen kommunizieren. Sie werden alle notwendigen Kommunikation hinter der Szene tun.

Sie können den Cluster auch so einrichten, dass er loadbalancer-Knoten ohne Daten enthält und immer eine Verbindung zu diesem Knoten herstellt. mehr Details here

Update:

Lassen Sie sagen, Sie 3 Knoten des gleichen Cluster auf dem gleichen Server ausgeführt werden soll: node1.local node2.local node3.local

Config-Dateien wie folgt aussehen

node1.local

cluster.name: BillyMiligan 
node.name: "node1.local" 
network.host: "localhost" 
transport.tcp.port: 9301 
http.port: 9201 
discovery.zen.ping.unicast.hosts: ["node1.local:9301", "node2.local:9302", "node3.local:9303"] 
discovery.zen.minimum_master_nodes: 2 

node2.local

cluster.name: BillyMiligan 
node.name: "node2.local" 
network.host: "localhost" 
transport.tcp.port: 9302 
http.port: 9202 
discovery.zen.ping.unicast.hosts: ["node1.local:9301", "node2.local:9302", "node3.local:9303"] 
discovery.zen.minimum_master_nodes: 2 

node3.local

cluster.name: BillyMiligan 
node.name: "node3.local" 
network.host: "localhost" 
transport.tcp.port: 9303 
http.port: 9203 
discovery.zen.ping.unicast.hosts: ["node1.local:9301", "node2.local:9302", "node3.local:9303"] 
discovery.zen.minimum_master_nodes: 2 
+0

Wenn ich an den Knoten-1 anschließe (localhost, 9300), aber einige, wie dieser Knoten ES geht und dort zwei Knoten noch läuft auf Port [(localhost, 9301) und (localhost, 9302). Alle Knoten sind in einem einzigen Cluster, dann wird mein Transport-Client automatisch mit einem der Knoten verbunden, auf dem (9301 ODER 9302) läuft ?? – Wolverine

+0

Jeder ElasticSearch-Knoten verwendet mindestens 2 Ports (transport.tcp.port: 9300 http.port: 9200 standardmäßig) Stellen Sie sicher, dass Sie beide überschreiben, wenn Sie mehrere Knoten auf demselben Server – pkhlop

+0

Agreeed elasticsearch verwendet 2 Ports für jeden 1 für tcp und 1 für http, aber ich bin immer noch nicht klar über meine Frage ** Wenn ich Verbindung zu Knoten-1 (localhost, 9300) aber einige wie dieser ES-Knoten geht und dort 2 Knoten noch läuft auf Port [(localhost, 9301) und (localhost, 9302). Alle Knoten sind in einem einzigen Cluster, dann wird mein Transport-Client automatisch mit einem der Knoten verbunden, auf dem läuft (9301 ODER 9302) ?? ** – Wolverine

Verwandte Themen