Tôi thiết lập một thùng chứa elasticsearch với hình ảnh docker REPIC elasticsearch CHÍNH THỨC. Sau đó, chạy nó vớiKhông thể kết nối với elasticsearch được Dockerized qua java-client
docker run -dP elasticsearch
Dễ dàng và hiệu quả. Thông báo thông tin ps là
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
658b49ed9551 elasticsearch:latest "/docker-entrypoint. 2 seconds ago Up 1 seconds 0.0.0.0:32769->9200/tcp, 0.0.0.0:32768->9300/tcp suspicious_albattani
Và tôi có thể truy cập vào máy chủ bằng http-client thông qua cổng 32769-> 9200
baihetekiMacBook-Pro:0 baihe$ curl 10.211.55.100:32769
{
"status" : 200,
"name" : "Scorpia",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.4.5",
"build_hash" : "2aaf797f2a571dcb779a3b61180afe8390ab61f9",
"build_timestamp" : "2015-04-27T08:06:06Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
Bây giờ tôi cần JAVA-chương trình của tôi để làm việc với các elasticsearch dockerized. Trình khách java Node chỉ có thể kết nối với elasticsearch qua 32768-> 9300 (cổng nói chuyện nút cụm). Vì vậy, tôi cấu hình các khách hàng vận chuyển trong java của tôi như thế này
Settings settings = ImmutableSettings.settingsBuilder()
.put("client.transport.sniff", true)
.put("client.transport.ignore_cluster_name", true).build();
client = new TransportClient(settings);
((TransportClient) client)
.addTransportAddress(new InetSocketTransportAddress(
"10.211.55.100", 32768));
Sau đó, tôi nhận được lỗi sau đây trong giao diện điều khiển:
Caused by: org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:305)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:200)
at org.elasticsearch.client.transport.support.InternalTransportIndicesAdminClient.execute(InternalTransportIndicesAdminClient.java:86)
at org.elasticsearch.client.support.AbstractIndicesAdminClient.exists(AbstractIndicesAdminClient.java:170)
at org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequestBuilder.doExecute(IndicesExistsRequestBuilder.java:53)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:91)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:65)
at cct.bigdata.yellowbook.service.impl.ResourceServiceImpl.<init>(ResourceServiceImpl.java:49)
at cct.bigdata.yellowbook.config.YellowBookConfig.resourceService(YellowBookConfig.java:21)
at cct.bigdata.yellowbook.config.YellowBookConfig$$EnhancerBySpringCGLIB$$e7d2ff3e.CGLIB$resourceService$0(<generated>)
at cct.bigdata.yellowbook.config.YellowBookConfig$$EnhancerBySpringCGLIB$$e7d2ff3e$$FastClassBySpringCGLIB$$72e3e213.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:312)
at cct.bigdata.yellowbook.config.YellowBookConfig$$EnhancerBySpringCGLIB$$e7d2ff3e.resourceService(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... 31 common frames omitted
Khi tôi chạy elasticsearch trực tiếp tại máy chủ. mọi thứ đều ổn.
Tôi kiểm tra tất cả dockerfile của elasticsearch trên hub docker. Có vẻ như tất cả chúng chỉ đơn giản là làm theo các bước sau:
EXPOSE 9200 9300
Tôi tự hỏi có ai đó đã cố gắng làm những việc tương tự. 9300 là cổng TCP thông thường hay cổng UDP? Tôi có cần phải làm một số điều đặc biệt để làm cho nó khi chạy container? Cảm ơn!
thanx, nó hoạt động –