2

我可能在这里误解了一些东西,因为我不清楚我应该如何连接到 Cassandra 集群。我在 AWS 上有一个由 Priam 管理的 5 个节点的 Cassandra 1.2.1 集群。我想通过使用类似于以下代码的代码来使用 Astyanax 连接到该集群:

conPool = new ConnectionPoolConfigurationImpl(getConecPoolName())               .setMaxConnsPerHost(CONNECTION_POOL_SIZE_PER_HOST).setSeeds(MY_IP_SEEDS)
                .setMaxOperationsPerConnection(100) // 10000

我应该使用什么作为 MY_IP_SEEDS?我应该使用以逗号分隔的所有节点的 IP 吗?还是应该只使用 1 台机器(种子机)的 IP?如果我只使用一台机器的 ip,我担心过多的请求会使这台机器过载。

我知道 Priam 有“get_seeds”REST api ( https://github.com/Netflix/Priam/wiki/REST-API ),它为每个节点返回一个 IP 列表,我也知道每个 RAC 有一个种子。但是,我不确定如果种子节点出现故障会发生什么......我在尝试建立新连接时需要连接到其他人,对吗?

4

1 回答 1

2

种子节点仅用于在节点启动时找到进入集群的方式 - 没有过载问题。

当然,其中一个节点必须在集群中可访问且已启动,才能使新节点启动并运行。

所以最好的方法是在启动节点之前从 Priam 更新种子列表。Priam 应该位于自动更新的 DNS 条目后面。

如果您的可用性最高,您应该定期存储来自 Priam 的当前种子列表并以镜像方式存储它们,就像您存储 puppet 或厨师配置一样,即使在 Priam 无法访问时也能够启动节点。

于 2013-04-19T12:52:07.267 回答