我们当前的cassandra集群是分布在四个AWS EC2区域的26个节点。我们为所有节点使用弹性IP,我们使用安全组允许所有节点相互通信。
每个网络接口(http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Appendix_Limits.html#vpc-limits-security-groups)有250个安全组规则的硬限制。来自文档:
每个安全组可以有50个入站规则和50个出站规则(总共有100个组合的入站和出站规则)。如果您需要增加或减少此限制,可以联系AWS Support - 限制更改适用于入站和出站规则。但是,每个安全组的入站或出站规则限制的倍数以及每个网络接口的安全组限制不能超过250
由于每个节点都需要集群中每个其他节点的安全组条目,这意味着我们有250个节点集群的硬限制。
我可以考虑一些缓解问题的方法,例如使用两个安全组,其中一个允许来自同一区域中的“本地”节点的访问,另一个安全组具有用于“远程”节点的弹性IP在其他地区。这会有所帮助,但只有一点点。
我已经与AWS技术支持部门联系,他们建议使用连续的弹性IP块(我不知道这是可能的)。这似乎可以解决问题,但事实证明这是一个涉及的过程,并要求我们(我的公司)成为这些IP的ARIN所有者。 AWS代表正在推动我寻找替代方案,例如DynamoDB。我对其他技术持开放态度来解决我们的问题,但我觉得他们只是想让我们使用AWS托管服务。最重要的是,当我提出诸如“这通常是客户如何在ec2中运行多区域cassandra集群?”这样的问题时,他们回到我身边的速度相当缓慢。
有没有人有这种方法的经验?
使用安全组有哪些替代方法?有没有人有经验在EC2中运行大型(> 250节点),多区域cassandra集群?或者甚至是具有> 50个节点的集群(此时单个安全组不再可行)?