所以我试图部署打开两个端口的应用程序;一个是简单的http服务器,另一个用于app与其他实例通信并加入集群。你猜对了,这是它的弹性研究。
所以使用Dockerfile和Dockerrun.aws.js或者我可以在发行版中添加一些其他配置文件如何告诉EB将端口9300映射到专用网络接口?
我当前的Dockerfile有
EXPOSE 9200 9300
但是来自documentation据说EB只会将nginx反向代理连接到第一个端口,没有说明如何在没有nginx的情况下映射其他端口
由于
更新#1:
使用 .ebextensions 可以执行任何shell命令。我试图通过iptables映射端口,但仍有一些问题。
更新#2: 经过两天的挖掘知识和挖洞后,我能够将端口映射到主机并设置ES发现。但是,由于
,ES仍然不想创建集群disconnecting from [...] due to explicit disconnect call
更新#3: 我无法使ElasticSearch与EBT Docker容器一起工作,但是我在没有docker的情况下直接在EBT实例上工作。这是工作配置 https://github.com/vladmiller/elasticsearch-beanstalk
答案 0 :(得分:2)
Elasticsearch现在默认绑定到localhost(2.x)。使用elasticsearch.yml中的这些设置绑定到物理接口。请记住,让您的Elasticsearch服务器可以公开访问互联网是不安全的,接近自杀,所以请确保您有一个良好的防火墙并且只在LAN接口上进行监听。
network.bind_host: 0.0.0.0
network.publish_host: _non_loopback_
如果您在AWS / EC2上使用cloud-aws
插件进行自动发现,您可能需要自动选择您的VPC接口的IP地址:
network.bind_host: 0.0.0.0
network.publish_host: _ec2_
{}可能会在某个时候弃用_ec2_
并替换为_ec2:privateIpv4_
。
来源:
答案 1 :(得分:1)
我无法使ElasticSearch在EBT Docker环境中发现其他节点,但是我使用实例本身使其工作