我正在尝试使用ECS来运行服务器群集,它使用了hazelcast。我在线搜索过并询问了亚马逊,但在这种情况下我无法找到如何设置hazelcast的说明。有人可以分享一下吗?谢谢。
答案 0 :(得分:1)
您可以使用以下样本。
网络配置: https://github.com/hazelcast/hazelcast-code-samples/tree/master/network-configuration/aws
答案 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一起运行。