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

时间:2015-09-28 04:31:23

标签: amazon-ec2 hazelcast

我正在尝试使用ECS来运行服务器群集,它使用了hazelcast。我在线搜索过并询问了亚马逊,但在这种情况下我无法找到如何设置hazelcast的说明。有人可以分享一下吗?谢谢。

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果有一个容器,这个解决方案很有效;但是,运行多个容器是有问题的,因为ECS docker容器都具有相同的IP地址,因此当您尝试启动第二个容器时,该成员不是唯一的。有人发布here说明需要与--net=host option一起运行码头工作人员;但是,我认为你不能使用ECS任务定义明确地做到这一点。

答案 2 :(得分:0)

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

如果您仅使用固定的hostPort,似乎是可能的,因此显然每个主机只能有一个容器。通过这种方式,它可以像常规的EC2部署一样工作。

对于ECS,应该可以编写使用custom discovery strategy API方法的network bindings from DescribeTasks来发现动态端口。

答案 3 :(得分:0)

正如我目前在测试和生产系统中所做的那样,这绝对有可能。有一些技巧可以使其正常工作。首先,您的网络必须正确。将您选择的任何端口移植到容器中的端口5701。接下来,获取位于http://169.254.169.254/latest/meta-data/local-ipv4的实例IP,并将其设置在属性“ 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 /端口对。最后一个步骤是通过在网络配置中设置适当的AWS值来确保EC2自动发现有效。我应该注意,这些设置目前在测试中与带有3.12.3的Hazelcast 3.10.5一起运行。