使用 Nginx 进行 ElasticSearch 集群身份验证

ElasticSearch Clustering authentication with Nginx

我有一个 ElasticSearch 集群,在服务器 192.168.30.141 上有一个主节点,在其他一些服务器上有 5 个数据节点。我已经在服务器192.168.30.141 上设置了一个nginx 反向代理服务器用于基本身份验证。 我的集群数据节点无法发现主节点。 我该如何解决这个问题? 数据节点是否需要安装nginx?

我的ngnix配置如下:

events {
  worker_connections  1024;
}
http {
  upstream elasticsearch {
    server 127.0.0.1:9200;
  }
  server {
    listen 9200;
    auth_basic "Protected Elasticsearch";
    auth_basic_user_file passwords;
    location / {
      proxy_pass http://elasticsearch;
      proxy_redirect off;
    }
  }
}

我的主节点配置如下:

node.master: true
node.data: false
network.host: 127.0.0.1
http.port: 9200

我的数据节点配置如下:

node.master: false
node.data: true
network.host: 192.168.30.142
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.30.141"] // master node ip

端口 9200 用于 HTTP API,而端口 9300 用于节点通信和发现。

您的主机网络主机似乎设置为 127.0.0.1,这意味着它只会在本地侦听。如果你想让其他节点能够发现它,你需要绑定一个网络主机而不是本地主机。

确保您所有的网络主机都设置为您的本地网络,并且节点可以在端口 9300 上相互通信,这将允许您的 ES 节点找到其他节点。