Соедините Spring с Elasticsearch в Docker - PullRequest
0 голосов
/ 01 мая 2018

Я должен подключить свой Spring-клиент к Elasticsearch, изображение которого было получено официальным образом ES 2.4.6, который Elastic имеет в Docker Hub, но когда я пытаюсь запустить контейнеры, консоль Docker сообщает мне об этой ошибке:

[Glitch] не удалось подключиться к узлу [{# transport # -1} {localhost} {127.0.0.1:9300}], удалено из списка узлов

application.properties моего проекта Spring:

spring.data.elasticsearch.cluster-nodes=localhost:9300
index.v = default
server.port = 8443

И docker-compose.yml :

version: "2.2"

services:
    elk:
        image: cvazquezlos/elk:2.4.6
        ports:
            - 5000:5000
            - 5601:5601
            - 9200:9200
            - 9300:9300
        volumes:
            - elk-data:/var/lib/elasticsearch

    testloganalyzer:
        image: cvazquezlos/testloganalyzer
        ports:
            - 8443:8443

volumes: 
    elk-data:

Если я запускаю бэкэнд без Docker, он работает как положено, но когда я запускаю бэкэнд с Docker, выдает сообщение об ошибке выше. Полная ошибка:

failed to connect to node [{#transport#-1}{localhost}{127.0.0.1:9300}], removed from nodes list

org.elasticsearch.transport.ConnectTransportException: [][127.0.0.1:9300] connect_timeout[30s]
        at org.elasticsearch.transport.netty.NettyTransport.connectToChannelsLight(NettyTransport.java:967) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:933) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.transport.netty.NettyTransport.connectToNodeLight(NettyTransport.java:906) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.transport.TransportService.connectToNodeLight(TransportService.java:267) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.client.transport.TransportClientNodesService$SimpleNodeSampler.doSample(TransportClientNodesService.java:390) ~[elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.client.transport.TransportClientNodesService$NodeSampler.sample(TransportClientNodesService.java:336) [elasticsearch-2.4.6.jar!/:2.4.6]
        at org.elasticsearch.client.transport.TransportClientNodesService$ScheduledNodeSampler.run(TransportClientNodesService.java:369) [elasticsearch-2.4.6.jar!/:2.4.6]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151]
Caused by: java.net.ConnectException: Connection refused: localhost/127.0.0.1:9300
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_151]
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[na:1.8.0_151]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) ~[netty-3.10.6.Final.jar!/:na]
        at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) ~[netty-3.10.6.Final.jar!/:na]
        ... 3 common frames omitted

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Когда служба SpringBoot работает в докере, она не может разрешить локальный хост как хост ES. В этом случае вы также можете использовать свойство links, например:

В разделе testloganalyzer добавьте параметр links:

testloganalyzer:
    image: cvazquezlos/testloganalyzer
    ports:
        - 8443:8443
    links:
        - elk:elk

Первый - сервис, а второй - псевдоним.

Затем измените ссылку в application.properties:

spring.data.elasticsearch.cluster-nodes=elk:9300
0 голосов
/ 01 мая 2018

Я думаю, что вам не хватает раздела networks в вашей конфигурации docker-compose, попробуйте это:

version: "2.2"

services:
    elk:
        image: cvazquezlos/elk:2.4.6
        ports:
            - 5000:5000
            - 5601:5601
            - 9200:9200
            - 9300:9300
        networks:
            - elk-network
        volumes:
            - elk-data:/var/lib/elasticsearch

    testloganalyzer:
        image: cvazquezlos/testloganalyzer
        ports:
            - 8443:8443
        networks:
            - elk-network

volumes: 
    elk-data:

networks:
    elk-network:
        driver: bridge
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...