【问题标题】:Build Cassandra Cluster构建 Cassandra 集群
【发布时间】:2017-08-30 22:46:51
【问题描述】:

我需要为我的公司搭建一个Cassandra集群,我使用的是官网下载的apache-cassandra-2.1.12-bin.tar.gz。

我有三台机器:

192.168.0.210;

192.168.0.209;

192.168.0.208;

我为每一个都更改了 cassandra.yaml。

Step1:在 192.168.0.210:

   listen_address: 192.168.0.210  

   seeds: 192.168.0.210  

第二步:在 192.168.0.209:

   listen_address: 192.168.0.209

   seeds: 192.168.0.210

Step3:在 192.168.0.208:

   listen_address: 192.168.0.208

   seeds: 192.168.0.210   

我在网上搜了一下,有的人也改了rpc_address,有的人没有。当我将 rpc_address 更改为 0.0.0.0,然后运行 ​​./cassandra 时,它显示:

Fatal configuration error

org.apache.cassandra.exceptions.ConfigurationException: 
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     

所以我把broadcast_rpc_address改成1.2.3.4,然后运行./cassandra,它显示了

 ERROR 05:49:42 Fatal configuration error
 org.apache.cassandra.exceptions.ConfigurationException: Invalid yaml
at      org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:120) ~[apache-cassandra-2.1.12.jar:2.1.12]
at  org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:84) ~[apache-cassandra-2.1.12.jar:2.1.12]
at org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:161) ~[apache-cassandra-2.1.12.jar:2.1.12]
at org.apache.cassandra.config.DatabaseDescriptor.<clinit>(DatabaseDescriptor.java:136) ~[apache-cassandra-2.1.12.jar:2.1.12]
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:168) [apache-cassandra-2.1.12.jar:2.1.12]
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:562) [apache-cassandra-2.1.12.jar:2.1.12]
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:651) [apache-cassandra-2.1.12.jar:2.1.12]
Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping; expected <block end>, but found BlockMappingStart;  in 'reader', line 455, column 2:
 broadcast_rpc_address: 1.2.3.4
 ^
at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:570) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:159) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481) ~[snakeyaml-1.11.jar:na]
at org.yaml.snakeyaml.Yaml.load(Yaml.java:412) ~[snakeyaml-1.11.jar:na]
at org.apache.cassandra.config.YamlConfigurationLoader.logConfig(YamlConfigurationLoader.java:126) ~[apache-cassandra-2.1.12.jar:2.1.12]
at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:104) ~[apache-cassandra-2.1.12.jar:2.1.12]
... 6 common frames omitted

 Invalid yaml
 Fatal configuration error; unable to start. See log for stacktrace.

所以我的问题:

1.我需要更改 rpc_address(有些人会,有些人不会)吗?
2.如果是,如何处理broadcast_rpc_address?
3. 除了rpc_address/broadcast_rpc_address,构建cassandra集群还需要做什么?

【问题讨论】:

  • 好的,经过两个小时的研究,我做到了。因为到目前为止没有人回答这个问题。我将展示我的方法,只需按照以下说明操作:blog.powerupcloud.com/2016/01/10/…
  • 引起:org.yaml.snakeyaml.parser.ParserException:解析块映射时;预期 ,但找到 BlockMappingStart;在'reader',第455行,第2列:broadcast_rpc_address:1.2.3.4 要解决这个问题,您需要在您更改的参数前输入两个空格以统一格式。我不知道原因,但这种方法有效。
  • 为什么不将 rpc_address 设置为与 listen_address 相同的值?

标签: cassandra


【解决方案1】:

rpc_address 是绑定 Thrift RPC 服务和本机传输服务器的地址或接口。你可以把它留空。 Cassandra 将使用节点的主机名。不建议设置为 0.0.0.0,除非节点有防火墙等保护。否则,任何人都可以访问 Cassandra。

broadcast_rpc_address 是广播到驱动程序和其他 Cassandra 节点的 RPC 地址。这不能设置为 0.0.0.0。驱动程序需要有效的 IP 地址来发送请求。如果将 rpc_address 设置为 0.0.0.0,则应将 broadcast_rpc_address 设置为节点的 IP。在您的示例中,192.168.0.208、192.168.0.209 或 192.168.0.210。

对于 3,您只需将集群名称在所有节点上设置为相同即可。

【讨论】:

    【解决方案2】:

    对于 rpc_address,尝试使用:

    rpc_address: 本地主机

    以下是您问题的答案:

    1.我是否需要更改 rpc_address(有些人需要,而有些人不需要)? 不,除非您希望您的客户端连接到不同的 IP 地址而不是服务器的实际 IP 地址,否则您不需要它,例如 SQL 服务器别名等。 2. 如果是,如何处理broadcast_rpc_address? 广播...我认为这将是作为广播地址的公共 IP,或 0.0.0.0

    1. 除了rpc_address/broadcast_rpc_address,我还需要做什么来构建cassandra集群?确保所有节点的集群名称相同,并且对于第一次设置集群的第一个节点,种子与侦听 IP 相同,然后第二个节点的种子是第一个节点等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2015-10-13
      • 1970-01-01
      • 2015-09-29
      • 2016-08-16
      • 2020-03-28
      相关资源
      最近更新 更多