我们有一个70tb的集群,它有大约200个密钥空间,并计划将其移动到aws。我们正在思考的几个方法将其中一个集群中的节点替换为aws中的一个节点,并对所有节点逐个进行替换在aws中创建一个新的集群,批量复制每个密钥空间,并对两个集群进行双写操作,在停机期间进行切换。还有其他更好的方法吗?我们可以把aws作为一个新的dc,一次改变一个键空间吗?
monwx1rj1#
可以将aws用作新集群。但你要小心。并不是所有的cassandra sstable都可以相互通信,因此需要验证sstable之间的兼容性。另一个问题是,您可能会在“旧”集群中造成一些高负载。因此,我建议您从非常低的参数开始测试集群和aws集群的强大功能:
compaction_throughput_mb_per_sec (Default 16) stream_throughput_outbound_megabits_per_sec (Default 200)
在实际集群中引导一个新的aws节点并不是一个好主意,因为每次引导一个新节点时,您都会告诉cassandra在集群之间重新分配密钥,如果出现任何错误,您将不使用“计划b”。另一个好的解决方案是在aws中创建一个独立的集群(不连接它们),并使用spark移动数据。只需移动数据而不进行转换是非常简单的,您就可以“控制”这个过程。
r7s23pms2#
是的,您可以使用混合云模型并在aws中创建一个新的dc。如果您希望在不停机的情况下迁移实时数据,并且可以逐个键空间来管理i/o流,那么这可能是最好的方法。这篇由alainrodriguez撰写的关于cassandra数据中心交换机的博客文章详细介绍了如何做到这一点。
2条答案
按热度按时间monwx1rj1#
可以将aws用作新集群。但你要小心。并不是所有的cassandra sstable都可以相互通信,因此需要验证sstable之间的兼容性。另一个问题是,您可能会在“旧”集群中造成一些高负载。
因此,我建议您从非常低的参数开始测试集群和aws集群的强大功能:
在实际集群中引导一个新的aws节点并不是一个好主意,因为每次引导一个新节点时,您都会告诉cassandra在集群之间重新分配密钥,如果出现任何错误,您将不使用“计划b”。
另一个好的解决方案是在aws中创建一个独立的集群(不连接它们),并使用spark移动数据。只需移动数据而不进行转换是非常简单的,您就可以“控制”这个过程。
r7s23pms2#
是的,您可以使用混合云模型并在aws中创建一个新的dc。如果您希望在不停机的情况下迁移实时数据,并且可以逐个键空间来管理i/o流,那么这可能是最好的方法。
这篇由alainrodriguez撰写的关于cassandra数据中心交换机的博客文章详细介绍了如何做到这一点。