Amazon ec2 如何在ECS(EC2容器服务)环境中设置hazelcast?

Amazon ec2 如何在ECS(EC2容器服务)环境中设置hazelcast?,amazon-ec2,hazelcast,Amazon Ec2,Hazelcast,我正在尝试使用ECS运行服务器群集,它使用hazelcast。我在网上搜索过,也询问过亚马逊,但我找不到关于如何在这种情况下设置hazelcast的说明。有人能分享一下吗?谢谢。您可以使用以下示例 示例项目: 网络配置:如果只有一个容器,此解决方案效果良好;但是,运行多个容器是有问题的,因为ECS docker容器都具有相同的IP地址,因此当您尝试启动第二个容器时,成员不是唯一的。有人发帖说docker需要使用--net=host选项运行;但是,我不认为您可以使用ECS任务定义明确地做到这一点。

我正在尝试使用ECS运行服务器群集,它使用hazelcast。我在网上搜索过,也询问过亚马逊,但我找不到关于如何在这种情况下设置hazelcast的说明。有人能分享一下吗?谢谢。

您可以使用以下示例

示例项目:


网络配置:

如果只有一个容器,此解决方案效果良好;但是,运行多个容器是有问题的,因为ECS docker容器都具有相同的IP地址,因此当您尝试启动第二个容器时,成员不是唯一的。有人发帖说docker需要使用
--net=host选项运行
;但是,我不认为您可以使用ECS任务定义明确地做到这一点。

我只是在评估这种情况,因为我正在考虑将Hazelcast用于我们的ECS部署,所以我没有尝试过这一点,但我发现:

如果您仅使用固定的
主机端口
,这似乎是可能的,因此显然每个主机只能使用一个容器。通过这种方式,it每一次都应该像常规EC2部署一样工作


对于ECS,应该可以编写一个使用API方法发现动态端口的应用程序。

这绝对是可能的,因为我目前在测试和生产系统中这样做。有几个技巧可以让它发挥作用。首先,你的人际网络必须是正确的。港口将您选择的任何港口转发至集装箱中的5701港口。接下来,获取位于
http://169.254.169.254/latest/meta-data/local-ipv4
并在属性“
hazelcast.local.localAddress
”上设置此选项。接下来,将属性“
hazelcast.local.publicAddress
”设置为此IP和在步骤1中转发到5701的端口。例如,如果到实例IP为
172.1.2.3
,并且在步骤1中转发了端口5702->5701,则将属性设置为“
172.1.2.3:5702
”。为了更好地测量,还可以在
HazelcastConfig.getNetworkConfig().setPublicAddress(ipAndPort)上设置此ip/端口对最终的strp是通过在网络配置中设置适当的AWS值来确保EC2自动发现工作。我应该注意到,这些设置目前正在测试中的Hazelcast 3.10.5和3.12.3中运行