如何配置cassandra数据中心以防seed关闭?

qnzebej0  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(237)

我正在尝试用一个数据中心创建集群。
它们中的每一个都应该存储相同的日期,以防其中一个停止工作时集群应该继续工作。
我正在成功创建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公开,但是有没有办法在一个端口上公开整个数据中心/集群?
我可以在不同的端口上公开每个节点,但可能很难用restapi定义连接,因为我必须检查当前可见的节点。
在我看来,它应该可以解决当第一个节点被拒绝时无法在集群中获取/放置数据的问题。或者有没有更好的解决办法?

brccelvz

brccelvz1#

当您使用docker时,您可以通过docker网络连接到这些示例,因此如果您连接到 localhost 和端口9042,则驱动程序将获取集群的完整拓扑,并使用由节点本身播发的网络地址,如果您没有对其进行任何特定的配置,则将使用来自docker network的地址,而不是 localhost .

相关问题