【问题标题】:How do I properly configure Cassandra in EC2 to connect to it?如何在 EC2 中正确配置 Cassandra 以连接到它?
【发布时间】:2021-06-26 20:16:57
【问题描述】:

我有一个带有 Centos 8AWS EC2 实例。

在这个实例中,我已经成功安装了 Cassandra (3.11.10) 数据库。

在这个数据库中,我已经通过这个 CQL 查询成功地创建了键空间:

create keyspace if not exists dev_keyspace with replication={'class': 'SimpleStrategy', 'replication_factor' : 2};

然后我编辑了配置文件 (/etc/cassandra/default.conf/cassandra.yaml):

cluster_name: "DevCluster"
seeds: <ec2_private_ip_address>
listen_address: <ec2_private_ip_address>
start_rpc: true
rpc_address: 0.0.0.0
broadcast_rpc_address: <ec2_private_ip_address>
endpoint_snitch: Ec2Snitch

之后,重启数据库:

Datacenter: eu-central
======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address                   Load       Tokens       Owns (effective)  Host ID                               Rack
UN  <ec2_private_ip_address>  75.71 KiB  256          100.0%            XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  1a

当我尝试使用此类凭据连接到 Cassandra 数据库时,它会引发错误:

host: <ec2_public_ip_address>
port: 9042
keyspace: dev_keyspace
username: cassandra (default)
password: cassandra (default)

错误

尝试查询的所有主机都失败(尝试: /:9042 (com.datastax.driver.core.exceptions.TransportException: [/:9042] 无法连接))

我忘了配置什么?如果您需要更多信息,请告诉我。

【问题讨论】:

  • 您是否尝试从其他实例进行连接?您是否配置了安全组以允许连接?
  • 我尝试从本地计算机通过DBeaverDataGrip 等软件应用程序连接到数据库。事实上,我有Security Group 的标准设置。 Type:SSH,Protocol:TCP; Port range22Source0.0.0.0/0。在official documentation 中,有几个示例说明关系数据库应采用哪些设置。我需要在 Cassandra 数据库的安全组部分进行哪些设置?
  • 好吧,我把Security GroupInbound Rules改了。我打开了port range (0 - 65535)。之后,我能够连接到 Cassandra 数据库。打开所有端口可能并不安全。

标签: amazon-web-services amazon-ec2 cassandra nosql


【解决方案1】:

您将无法远程访问您的集群,因为您已将 Cassandra 配置为仅使用此设置侦听专用 IP 上的客户端:

broadcast_rpc_address: <ec2_private_ip_address>

为了让节点接受来自外部客户端的请求,您需要在cassandra.yaml中设置以下内容:

listen_address: private_ip
rpc_address: public_ip

请注意,您不需要设置广播 RPC 地址。您需要重新启动 Cassandra 才能使更改生效。

您还需要在 AWS 管理控制台上使用入站规则定义一个安全组,以允许在端口 9042 上进入您的 EC2 实例。干杯!

【讨论】:

  • 感谢您的回答。我试图应用您的建议,但遇到了问题。你能指引我正确的方向吗?我设置了listen_address: 'ec2_private_ip_address'rpc_address: 'ec2_public_ip_address'。我还按照您的建议从cassandra.yaml 文件中删除了broadcast_rpc_address。清除系统缓存(nodetool flush system)并重新启动 Cassandra 服务:(sudo systemctl restart cassandra)。之后,我尝试连接到 Cassandra 数据库。它引发了与我之前描述的相同的错误。
  • 只有拥有rpc_address: 0.0.0.0broadcast_rpc_address: 'ec2_private_ip_address这样的设置才能连接。
  • 9042 端口已打开。我在security groupsinbound rules 中设置了这个。
猜你喜欢
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 2021-03-23
  • 2022-10-24
  • 2019-07-09
  • 1970-01-01
相关资源
最近更新 更多