我已经在 EC2 机器中设置了 Elasticsearch 版本 6.5+,当我执行 curl localhost:9200/_cluster/health?pretty 时,它会返回我的值,但是当我使用 ec2instance public ip 在 google chrome 上执行此操作时,它不会导致我数据,我得到了,因为我没有绑定(bind)我的网络主机在 0.0.0.0 上运行。我不想这样做,因为它会暴露我的数据。现在我的 Spring Boot 应用程序在 beanstalk 实例上运行,如果我尝试将它从那里连接到 Elasticsearch 实例,它仍然无法工作。所以我将 beanstalk 公共(public) ip 放到网络主机上,但它仍然无法工作,并且仍然不是一个可行的解决方案,因为我的 beanstalk ip 可以根据自动缩放进行更改。那么解决这个问题的正确方法是什么
最佳答案
您可以在 elasticsearch 实例前使用反向代理,以仅允许来自您的公共(public) IP 的特定请求 (/_cluster/health?pretty) 以及仅来自使用虚拟服务器功能的另一个特定 IP 的所有请求。或者您也可以实现“基本身份验证”以允许所有请求,从而在公共(public) IP 上公开 Elasticsearch 实例。请记住,让您的反向代理与 elasticsearch 实例位于同一 AWS 区域,并使用反向代理中的私有(private) IP/DNS 与 elasticsearch 实例通信。
不要忘记检查您在此过程中可能使用的额外延迟和进一步优化,例如设置保持事件连接和请求限制等。
关于amazon-web-services - 如果它在 ec2 实例中运行,如何检查我的 Elasticsearch 是否启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63843418/