如果种子关闭时,如何配置Cassandra数据中心



我目前正在尝试使用一个数据中心创建群集。

如果其中一个停止工作群集应使用的情况,则每个人都应存储相同的日期。

我成功创建了2个节点,但是...

他们的日期没有相同的日期,他们只是在他们之间分开。我使用命令阅读了此内容:

docker exec -ti cas1 nodetool status

和自己的标签约为45/55。我想在每个人上有100个。每当一个节点以某种方式停止工作时,这将阻止丢失数据。

CREATE KEYSPACE mykeyspace
WITH replication = {
    'class' : 'NetworkTopologyStrategy',
    'datacenter1' : 2
};

有我用来启动cassandra的命令:

datacener1

上的第一个节点
docker run -e DS_LICENSE=accept -e CASSANDRA_CLUSTER_NAME=AAIPCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -p 9042:9042 --name cassandra --memory 2g -d cassandra

数据中心上的第二个节点

docker run --name cassandra2 -e CASSANDRA_SEEDS="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' cassandra)" -e CASSANDRA_CLUSTER_NAME=AIIPCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -d cassandra

在同一数据中心(Datacenter1(中启动并运行。

我知道只有第一个节点是使用端口9042暴露的,但是是否有任何方法可以在一个端口上公开整个数据中心/群集?

我可以在不同端口上公开每个节点,但是很难与REST API定义连接,因为我必须检查当前可见的哪个节点。

我认为,每当拒绝第一个节点时,它应该解决问题,而无法将数据放在群集中。还是有更好的解决方案可以实现这一目标?

使用Docker时,可以通过Docker Network连接到这些实例,因此,如果您连接到localhost和端口9042,则驱动程序将获取集群的完整拓扑,并且使用节点本身宣传的网络地址,如果您没有执行任何特定的配置,则将使用Docker网络的地址,而不是localhost

最新更新