我已经设置了一个带有cassandra的AWS实例,然后还设置了一个自动伸缩组,以根据alarma旋转另外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发布于 2015-08-24 21:34:42
在Cassandra中自动发现的最佳选择是种子节点,它们是“锚”节点,当新的节点出现时,它们应该总是在那里,并且可以在每次需要时查询集群的节点列表。
因此,您在每个节点的配置文件中提供一个种子节点列表(包括种子本身),一旦启动,它将从种子中获取节点列表。当然,这要求种子节点是静态的并且始终在运行(当然,为了冗余,您必须有多个种子节点)。Cassandra要求它也按IP列出(以避免DNS出现问题)。
尽管如此,我不认为自动缩放Cassandra会是一件好事。Cassandra跨节点对数据(行)进行分区,每次您添加或删除节点时,它都需要重新分区和重新分配行,这取决于您的数据有多大,这需要相当长的时间(并且可能需要其他管理操作,如修复等)。即使您有足够的副本来承受突然的节点丢失(这是使用自动伸缩时会发生的情况),这也是混乱的。首先,因为Cassandra不会自动停用节点-群集将知道节点不可用,但它只会等待节点返回,并尽可能保持群集的健康(包括一种机制,将对其他节点中不可用节点的写入保存一段时间)。
因此,您需要监视您的节点,并从外部管理这些起伏。而且,您甚至可能没有时间停用一个节点,并在另一个节点出现之前将所有内容(您的数据)重新设置到位,这一切都可能真正将您的集群搞得一团糟。
好吧,也许有些人在这样做,但根据我对Cassandra的知识和经验,它不像web应用程序那样自动缩放那么简单和神奇,你可能最终会丢失数据,系统非常不一致和不稳定。
发布于 2016-02-15 14:09:58
使用自动伸缩的另一个问题是,没有即时的满足感。在群集重新平衡之前,您无法真正看到新节点的好处,这可能需要很长时间,具体取决于您的群集。
当重新平衡正在进行中时,您最终会在原始节点上添加额外的负载,这将违背添加容量的目的。
https://stackoverflow.com/questions/32172335
复制相似问题