Проблемы с Transport client and elasticsearch cluster behind load balancer


#1

привет,

я прошу меня извенить, но я не в состояние сформулировать мой вопрос по русски, поэтому попытаюсь по англиски.
Может быть кто-нибудь здесь мне может помочь.

I try to use elasticsearch for "search suggestion" in a java-webapplication.
There are 2 nodes in the cluster behind a load balancer.
I use elasticsearch 1.5

My problem is, if I use Transport Client with node host addresses there is no problem.

Client transportClient = new TransportClient(settings())
.addTransportAddress(new InetSocketTransportAddress("elastic-suggest1.de", 9300))
.addTransportAddress(new InetSocketTransportAddress("elastic-suggest2.de", 9300));

but if I try to use the load balancer with load balancer host address

Client client = new TransportClient(settings())
.addTransportAddress(new InetSocketTransportAddress("load_balancer_host.de", 80));

I get an error
elasticsearch[Blue Diamond][transport_client_worker][T#20]{New I/O worker #20} deploymentPhase
WARN org.elasticsearch.transport.netty - [Blue Diamond] exception caught on transport layer [[id: 0x6f6cd7f0, /xx.xxx.xxx.xxx:41411 => load_balancer_host.de/xx.xxx.xxx.xxx:80]], closing connection
java.io.IOException: Die Wartezeit fuer die Verbindung ist abgelaufen // =time out
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:192)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:384)
at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:64)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

and then
None of the configured nodes were available: [[suggest1][l6ReVYRRSeqz8CT9aSHnEA][elastic-suggest1.de][inet[load_balancer_host.de/xx.xxx.xxx.xxx:80]]]

Can somebody help me to find a solution for this problem?

Спасибо,
Таня


(Igor Motov) #2

Не был уверен на каком языке отвечать, поэтому ответил в английском в английской категории :smile:


#3

Доброе утро Игорь,

огромное спасибо за ответ. Все поняла.
Может вы мне подскажите какой REST Client я могла бы исползывать in java Application
Может быть JEST?

Таня


(Igor Motov) #4

Да, пока что официального REST клиента для java нет.


(system) #5