我可能在这里误解了一些东西,因为我不清楚我应该如何连接到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有一个种子。但是,我不确定如果种子节点出现故障会发生什么......在尝试建立新连接时我需要连接到其他人,对吗?
答案 0 :(得分:2)
种子节点仅用于在节点启动时找到进入群集的方式 - 没有过载问题。
当然,其中一个节点必须可以在群集中到达并启动以启动并运行新节点。
因此,最好的方法是在启动节点之前从Priam更新种子列表。 Priam应该在自动更新的DNS条目后面。
如果您的可用性最高,您应该定期存储来自Priam的当前种子列表并以镜像方式存储它们,就像您存储木偶或厨师配置一样,即使Priam无法访问也能够获取节点