在Amazon ElasticBeanstalk上公开docker端口

时间:2015-11-12 15:44:16

标签: amazon-web-services elasticsearch amazon-elastic-beanstalk

所以我试图部署打开两个端口的应用程序;一个是简单的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

2 个答案:

答案 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环境中发现其他节点,但是我使用实例本身使其工作

工作配置 https://github.com/vladmiller/elasticsearch-beanstalk