elasticsearch 弹性搜索多个发布主机,elasticsearch,docker,cluster-computing,elasticsearch,Docker,Cluster Computing" /> elasticsearch 弹性搜索多个发布主机,elasticsearch,docker,cluster-computing,elasticsearch,Docker,Cluster Computing" />

elasticsearch 弹性搜索多个发布主机

elasticsearch 弹性搜索多个发布主机,elasticsearch,docker,cluster-computing,elasticsearch,Docker,Cluster Computing,是否可以为群集发现和外部连接设置不同的IP 像这样: 我希望通过172.16.1.1x IP实现群集自动发现,外部源(如logstash、fluentd或couchbase)将使用192.168.1.10 IP连接到群集 这可能吗?如何配置这个 注: 目前,我正在以docker容器的形式运行ES,因此在network.publish\u host中,我使用的是主机的IP(172.16.1.1x),自动发现功能很好。 我可以使用172.16.1.1x IP中的任何一个连接到群集,但我想使用192

是否可以为群集发现和外部连接设置不同的IP

像这样:

我希望通过172.16.1.1x IP实现群集自动发现,外部源(如logstash、fluentd或couchbase)将使用192.168.1.10 IP连接到群集

这可能吗?如何配置这个

注: 目前,我正在以docker容器的形式运行ES,因此在
network.publish\u host
中,我使用的是主机的IP(172.16.1.1x),自动发现功能很好。 我可以使用172.16.1.1x IP中的任何一个连接到群集,但我想使用192.168.1.10连接到群集


提前感谢

您需要更改网络。请将主机绑定到192.168.1.10。这意味着在外部,您只能从该IP连接到群集

但更好的方法是使用nginx使用类似代理的方法,并将3个节点作为负载平衡节点。您可以在服务器“192.168.1.10”上部署nginx,并将节点用作负载平衡的上游服务器

upstream elasticsearch {
    server 172.16.1.10:9200 weight=1;
    server 172.16.1.11:9200 weight=1;
    server 172.16.1.12:9200 weight=1;
    keepalive 15;
}
阅读更多有关使用的信息

在这种情况下,您需要将
网络.主机绑定分别设置为172.16.1.10,172.16.1.11和172.16.1.12,或者将
网络.主机设置为172.16.1.10,172.16.1.11和172.16.1.12。使用nginx还可以帮助您轻松保护集群


像logstash这样的外部工具可以使用

连接到集群。谢谢Prabin,我面临的问题是我在docker内部运行它们,所以
网络。绑定主机
应该是dockers IP,如果我给出172.16.1.1x,我就无法绑定到IP。如果我将
network.publish_host
设为192.168.1.10,我的自动发现将无法检测群集。正如我提到的,将
network.bind_host
设为192.168.1.10和
network.publish_host
应保持为172.16.1.1xI获取此错误,当我设置
网络时,将主机绑定到192.168.1.10
失败SelectChannelConnector@192.168.1.10:10077:java.net.BindException:无法分配请求的地址java.net.BindException:无法分配请求的地址
。我正在尝试你的nginx解决方案。非常感谢此错误是因为系统上不存在地址192.168.1.10。该地址必须是系统网络地址的一部分。提到最后,从外观上看,您最好在尝试时使用nginx代理。这就是为什么我说,我不能绑定到192.168.1.10,它的负载均衡器IP。我想你的nginx解决方案可以,让我试试