卡桑德拉Datastax企业版使用亚马逊弹性IP

9
我希望在Amazon EC2实例上运行Cassandra Datastax Enterprise,但不使用节点私有IP地址,而是使用弹性公共IP。
我的当前配置如下:
/etc/dse/cassandra/cassandra.yaml

seed_provider:
  - class_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
        seeds: "publicIP"

listen_address:  "publicIP"
endpoint_snitch:Ec2Snitch
rpc_address: "publicIP"

“dse”服务未能正确启动。
在“/var/log/cassandra/system.log”中显示以下错误:
org.apache.cassandra.exceptions.ConfigurationException: 无法绑定到地址 /:7000。在cassandra.yaml中设置listen_address为您可以绑定的接口,例如EC2上的私有IP地址。
我还尝试将broadcast_address更改为指向公共IP地址,但它不起作用。
有没有办法以使用弹性IP地址而不是EC2盒子的私有IP运行dse服务(Cassandra)?

1
你可能无法这样做,因为您的实例网络配置中没有公共IP地址。除非Cassandra允许绑定到接口(例如eth0),而不仅仅是IP地址,否则您只能绑定到已配置接口上可用的IP地址。 - Marc B
我知道这是一段时间以前的事情,但可以绑定到 eth0 接口。 - syncdk
2个回答

9

这不是一个新的问题,但根据您的配置,需要做出以下更改。

listen_address: private_ip
broadcast_address: public_ip
rpc_address: 0.0.0.0

种子应该是公共IP,所以在这方面你没问题。


If rpc_address is set to a wildcard address (0.0.0.0), then you must set broadcast_rpc_address to a value other than 0.0.0.0 - xjcl
广播地址与广播RPC地址不同。你说的很准确,但我不明白你想表达什么意思? - LHWizard
重点是,如果不指定broadcast_rpc_address应该设置为什么,这个答案就不完整了——它也是public_ip吗? - xjcl
是的,你说得对。broadcast_rpc_address 将被设置为 public_ip - LHWizard

8

Cassandra.yaml中有三个可用地址

  1. Listen Address - 这是其他Cassandra节点用于与此节点通信的IP地址。 您希望这是您的内部AWS IP地址,以提高性能。

  2. RPC Address - 这是您的客户端连接的地址,如果您的客户端不在AWS或不在同一AWS区域,则可能想要配置为匹配您的外部AWS地址。

  3. Broadcast Address - 如果您正在使用多个数据中心或AWS区域,并且并非所有节点都可以通过内部IP相互访问,则可以指定不同数据中心中的节点的外部IP地址以仍然可以相互访问。在许多情况下,您根本不需要此设置,它将默认为您的"Listen Address"。

我认为您的问题的答案是使用RPC地址连接到C*,使用外部/弹性AWS IP从您的客户端连接。您可能可以不配置广播地址。

这个回答有帮助吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接