我试着在3台服务器上安装。作为一个示例,我试图设置一个类"client",其中包含3个集群"client_1“、"client_2”和"client_3“。我的服务器名为node1、node2和node3。我希望将集群安排成每个集群有两个副本,所以如果一个节点出现故障,我仍然可以访问所有数据,例如:
我尝试通过以下步骤设置它: 1.下载OrientDB 2.1.1社区并解压缩到3台服务器上。2.从各服务器的数据库目录中删除GratefulDeadConcerts数据库。3.在node1上编辑default-distributed-db-config.json,如下所示:
{
"autoDeploy": true,
"hotAlignment": false,
"executionMode": "undefined",
"readQuorum": 1,
"writeQuorum": 2,
"failureAvailableNodesLessQuorum": false,
"readYourWrites": true,
"clusters": {
"internal": {
},
"index": {
},
"client_1": {
"servers" : [ "node1","node2" ]
},
"client_2": {
"servers" : [ "node2","node3" ]
},
"client_3": {
"servers" : [ "node3","node1" ]
},
"*": {
"servers" : [ "<NEW_NODE>" ]
}
}
}此时,我在3个节点上有一个数据库,其中有一个名为"client“的类,其中只有一个集群"client_1”。
如果我重新连接所有控制台会话并执行“列表群集”,那么现在我可以在每个节点上看到客户端类的所有3个集群。我还看到了每个节点上的三个集群中的每个集群的.cpm和.pcl文件。但是,我在默认分布的-db-config.json中的意图似乎被考虑到了,就好像我等待了几分钟,然后从每个节点插入了一条记录--我看到时间戳和文件大小只改变了与每个节点上应该存在的集群相关的文件(如果文件不存在于错误的节点上,但它并不是世界末日)。
所以..。现在看来,我已经按照我想要的方式设置了数据库,但是这样做的目的是为了让服务器能够继续运行,所以我用ctrl关闭了node3。我仍然可以从node1和node2中看到每条记录(我插入了3条,每个集群一条)--到目前为止还不错。
如果我看一下node1或node2上distirbuteddb.json的内容,现在我看到我的“客户机”类集群已经被重新配置了-配置中不再有node3:
"client_3": { "servers": [ "node1" ], "@version": 0, "@type": "d" },
"client_2": { "servers": [ "node2" ], "@version": 0, "@type": "d" },
"client_1": { "servers": [ "node1", "node2" ], "@version": 0,
"@type": "d" }现在我重新启动node3。配置不会再次更新:
"client_3": { "servers": [ "node1" ], "@version": 0,
"@type": "d" },
"client_2": { "servers": [ "node2" ], "@version": 0, "@type": "d" },
"client_1": { "servers": [ "node1", "node2" ], "@version": 0,
"@type": "d" },我创建/配置数据库的方式有什么问题吗?还是这是一个bug?
发布于 2016-11-23 22:07:04
我认为这里的问题是,在"default-distributed-db-config.json“文件中,需要将"hotAlignment”设置为"true“。根据OrientDB 2.2.x分片文档,“如果设置了hotAlignment=false,当节点重新加入集群时(在失败或根本无法到达),来自节点的数据库的完整副本可能没有关于碎片的所有信息。”但是,请注意,来自2.1.x至2.2.x之间的变化的这个项目:“已删除的hotAlignment设置:服务器一旦加入集群,就一直保留在配置中,直到它们被手动删除。”
https://stackoverflow.com/questions/32392194
复制相似问题