![](/img/trans.png)
[英]Can EC2 instances in different regions communicate over their private IP addresses?
[英]Cassandra cluster in EC2 communicates to itself over private IP. How do I communicate with it from the outside?
我在AWS中托管了一个三机集群。
集群可以正确启动,并且可以与自身正常通信。 当我使用Spring Data连接到该集群时,我将contactPoints属性设置为节点的三个公共IP地址的列表。 我可以成功连接到一个节点,但是Cassandra Java驱动程序引发了有关尝试通过其私有IP连接到其他两个节点的异常。 我怀疑该节点为驱动程序提供了内部IP而不是我通过contactPoints提供给它的公共IP。
还缺少什么吗? 是应该工作的人之一,我只是搞砸了吗?
谢谢
集群使用broadcast_address向其他实例通告它,它们应尝试通过该地址与节点进行通信。 群集绝对不知道客户端是否会使用某种NAT转换(本地和外部客户端混合使用)或它的外部IP地址(因为它是基础结构,而不是群集)来连接到它,属性)。
因此,驱动程序负责查找如何连接到群集。 一些驱动程序仅接受应连接到的IP的有限列表,并且仅连接到这些IP。
但是Java驱动程序具有一个称为AddressTranslater的策略,您可以实施该策略以执行从内部IP到外部IP的转换-例如通过使用AWS API。 http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/policies/AddressTranslater.html
这是实现的链接(我自己没有使用过): http : //docs.hazelcast.org/docs/3.3/javadoc/com/hazelcast/client/spi/impl/AwsAddressTranslator.html
broadcast_address是广播到其他Cassandra节点的地址。 最好将listen_address和broadcast_address都设置为节点的本地IP。 当您要通过节点的公共IP访问Cassandra时,应将rpc_address和broadcast_rpc_address设置为节点的公共IP。
但是出于安全原因,最好不要将Cassandra暴露给公众。 如果您的应用程序也运行在AWS上,最好让Cassandra仅侦听本地IP,并让应用程序访问本地IP。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.