我目前正在尝试使用一个数据中心创建群集。
如果其中一个停止工作群集应使用的情况,则每个人都应存储相同的日期。
我成功创建了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
。