我想在亚马逊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: Unable to bind to address /<publicIP>:7000. Set listen_address in cassandra.yaml to an interface you can bind to, e.g., your private IP address on EC2
我还试图更改broadcast_address以指向公共IP地址,但它不起作用。
有没有任何方法可以运行dse服务(Cassandra),使其使用弹性IP地址,而不是EC2盒的私有IP?
这不是一个新问题,但请查看您的配置,进行这些更改。
listen_address: private_ip
broadcast_address: public_ip
rpc_address: 0.0.0.0
种子应该是public_ip,这样你就可以了。
Cassandra.yaml中有三个可用地址
-
侦听地址-这是其他Cassandra节点用来与该节点通信的ip地址您希望这是您的内部AWS IP地址,以提高性能
-
RPC地址-这是您的客户端连接到的地址,如果您的客户端不在AWS或不在同一AWS区域,则可能是您想要配置为匹配外部AWS地址的地址。
-
广播地址-如果您使用多个数据中心或AWS区域,其中并非所有节点都可以通过内部IP相互访问。您可以为不同数据中心中的节点指定外部IP地址,这些节点仍然可以相互通信。在许多情况下,您根本不需要此设置,它将默认为您的侦听地址。
我认为你的问题的答案是使用RPC地址使用外部/弹性AWS IP从你的客户端连接到C*。您可以不配置广播地址。
这有帮助吗?