amazon-web-services - AWS 和自动缩放 cassandra

标签 amazon-web-services cassandra

我已经设置了一个带有 cassandra 的 AWS 实例,然后还设置了一个自动缩放组以根据警报启动另外 4-8 个实例。但是 Cassandra 如何知道自动缩放何时开始?它如何知道要连接到哪些其他节点?我是否需要在 Cassandra 中配置一些东西才能嗅探节点?

当我运行节点工具时,自动缩放节点没有显示...

[root@ip-10-205-119-104 bin]# sh nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns    Host ID                               Rack
UN  127.0.0.1  107.12 MB  256     ?       a50294ac-2150-4d9e-9dd2-0a56906e9531  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

最佳答案

Cassandra 中自动发现的最佳选择是种子节点,它们是“ anchor ”节点,当有新节点出现时应该始终存在,并且可以每隔一段时间查询集群的节点列表需要的时候。

因此,您在其配置文件中为每个节点提供种子节点列表(包括种子本身),一旦启动,它将从种子中获取节点列表。当然,这要求种子节点是静态的并始终运行(当然,为了冗余,您必须拥有不止一个种子节点)。 Cassandra 要求它也按其 IP 列出(以避免出现 DNS 问题)。

尽管如此,我认为自动缩放 Cassandra 并不是一件好事。 Cassandra 跨节点对其数据(行)进行分区,每次添加或删除节点时,它都需要重新分区和重新分配行,这取决于您的数据有多大,需要很长时间(并且可能需要其他管理操作,例如维修等)。即使您有足够的副本来承受突然的节点丢失(这是使用自动缩放会发生的情况),那也是困惑的。首先,因为 Cassandra 不会自动停用节点——集群会知道节点不可用,但它只是等待它回来,并尽量保持集群健康(包括一种将写入保存到一段时间内其他节点不可用节点)。

因此,您需要观察您的节点并从外部管理这些起伏。而且,您甚至可能没有时间停用一个节点并在另一个节点出现之前将所有内容(您的数据)重新设置到位,然后再次关闭,所有这些都可能真正让您的集群完全崩溃。

好吧,也许有人在做这件事,但根据我对 Cassandra 的了解和经验,它并不像使用 Web 应用程序那样自动缩放那么简单和神奇,你可能会最终会丢失数据并拥有一个非常不一致和不稳定的系统。

关于amazon-web-services - AWS 和自动缩放 cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172335/

相关文章:

performance - grails 从 CDN 提供 index.html

amazon-web-services - 无服务器 - 无法使用 cloudwatch 事件触发 aws lambda

node.js - 我可以在一个 Amazon EC2 实例上运行多个应用程序吗?

database - 模型 M :M relations in Cassandra? 有哪些替代方法

amazon-web-services - 我可以通过FTP将数据传输到AWS S3吗?

go - 如何用GO语言创建持久的cassandra连接?

cassandra - Inet地址127.0.0.1 :9042 is not available when use ccm start

php - 无法使用 cassandra 和 php 创建键空间

cassandra - 我可以在运行 nodetool repair 时运行 nodetool cleanup 吗?

amazon-web-services - 如何将 AWS SecureTokenService 与 Spring Cloud AWS 结合使用