使用私有 IP 在 AWS 上配置 Cassandra

Posted

技术标签:

【中文标题】使用私有 IP 在 AWS 上配置 Cassandra【英文标题】:Cassandra configuration on AWS using private IPs 【发布时间】:2015-11-11 02:52:39 【问题描述】:

我正在尝试在 aws 实例上设置具有 2 个节点的 Cassandra 集群。

我使用

创建了两个 IP 地址
ifconfig eth0:0 <alias_ip1> up
and ifconfig eth0:1 <alias_ip2> up

另外,我有两个 cassandra 实例。

在我的第一个 cassandra 实例配置中,我给出了以下内容

cluster_name: 'ClusterName'
seeds: "<alias_ip1>"
listen_address: <alias_ip1>
rpc_address: <public_ip_of_aws_instance> #I want my spark program that is running on a different machine to access this cluster. So setting this.

在我的第二个 cassandra 实例配置中,我给出了以下内容

cluster_name: 'ClusterName' 
seeds: "<alias_ip1>" 
listen_address:<alias_ip2> 
rpc_address: <public_ip_of_aws_instance>

当我尝试启动我的实例时,我收到以下错误

java.lang.RuntimeException: Unable to gossip with any seeds
at org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1336) ~[apache-cassandra-2.1.11.jar:2.1.11]
at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:540) ~[apache-cassandra-2.1.11.jar:2.1.11]
at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:788) ~[apache-cassandra-2.1.11.jar:2.1.11]
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:720) ~[apache-cassandra-2.1.11.jar:2.1.11]
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:611) ~[apache-cassandra-2.1.11.jar:2.1.11]
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:387) [apache-cassandra-2.1.11.jar:2.1.11]
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:562) [apache-cassandra-2.1.11.jar:2.1.11]
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:651) [apache-cassandra-2.1.11.jar:2.1.11]

java.lang.RuntimeException:无法用任何种子八卦 在 org.apache.cassandra.gms.Gossiper.doShadowRound(Gossiper.java:1336)

我错过了什么吗?

我检查了以下链接并尝试设置广播地址。但是,它似乎不起作用。 Apache Cassandra: Unable to gossip with any seeds

【问题讨论】:

【参考方案1】:

确保在安全组中打开端口。安全组中的机器必须接受 7000、9042 和 9160 上的连接。如果这是概念验证,只需打开从安全组到自身的所有 TCP。

另外,请确保首先启动种子实例。否则,第二个实例会抱怨它“无法用任何种子八卦”。

如果您使用的是内部 IP,则不需要广播地址。

【讨论】:

以上是关于使用私有 IP 在 AWS 上配置 Cassandra的主要内容,如果未能解决你的问题,请参考以下文章

如何从公司内部机器浏览器访问 AWS EC2 实例私有 IP 以访问在 EC2 上运行的应用程序

使用 AWS api 网关 + lambda + Nodejs 的私有和公共 ip

无法在 AWS 中使用 Iptables 和 Strongswan 对 IP 进行 NAT

AWS上EC2与S3通过私有链接通信(同区)

无法通过私有 IP 从另一个实例访问 AWS EC2 实例

AWS ECS Fargate 模式 - 自动扩展