本文基于 OrientDB 3.1.6
master1,master2 部署在深圳数据中心 ,分别作为生产中心,同城容灾中心。
master3 部署在成都数据中心 ,作为异地容灾中心。
分布式配置涉及config/ 目录下三个文件:
一、修改 orientdb-server-config.xml 文件
启用 OHazelcastPlugin ,nodeName 属性设置 节点名称,三个节点分别设置为 master1、master2、master3
<handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
<parameters>
<parameter value="master1" name="nodeName"/>
<parameter value="${distributed}" name="enabled"/>
<parameter value="${ORIENTDB_HOME}/config/default-distributed-db-config.json" name="configuration.db.default"/>
<parameter value="${ORIENTDB_HOME}/config/hazelcast.xml" name="configuration.hazelcast"/>
</parameters>
</handler>
二、修改default-distributed-db-config.json 文件
增加了replication和hotAlignment属性,同时在servers属性中设置master1、master2、master3为master角色 , 其中 writeQuorum 设置为了 majority, readQuorum 为1 其他参数设置参考文章末尾附录的参考文档。
readQuorum | 在“读取”操作(记录读取,查询和遍历)上,这是在将响应发送到客户端之前要保持一致的响应的数量。如果您不想在读取时进行此检查,请设置为1 | 1 |
writeQuorum | 在“写”操作(数据库上的任何写操作)上,这是将响应发送到客户端之前要保持一致的响应的数量。如果您不想在写入时进行此检查,则设置为1。建议值为默认值“多数”,即N / 2 + 1,其中N是可用节点数。这样,仅当大多数节点是连贯的时才达到仲裁。“所有”表示所有可用节点。从v2.2开始,N表示仅MASTER服务器。有关更多信息,请参见服务器角色。 | "majority" |
{
"replication": true,
"hotAlignment": true,
"autoDeploy": true,
"readQuorum": 1,
"writeQuorum": "majority",
"executionMode": "undefined",
"readYourWrites": true,
"newNodeStrategy": "static",
"servers": {
"master1": "master",
"master2": "master",
"master3": "master"
},
"clusters": {
"internal": {
},
"*": {
"servers": ["<NEW_NODE>"]
}
}
}
三、修改 hazelcast.xml 文件
port 禁用 increment,multicast 设置enabled 为 false ,禁用广播方式, 增加 tcp-ip 节点,手动设置三个成员节点。
<network>
<port auto-increment="false">2435</port>
<join>
<multicast enabled="false">
<multicast-group>235.1.1.1</multicast-group>
<multicast-port>2434</multicast-port>
</multicast>
<tcp-ip enabled="true">
<member>机器ip:2434</member>
<member>机器ip:2435</member>
<member>机器ip:2436</member>
</tcp-ip>
<kubernetes enabled="false">
<pod-label-name>orientdb-cluster-member</pod-label-name>
<pod-label-value>true</pod-label-value>
<service-port>2434</service-port>
</kubernetes>
</join>
</network>
注意需要使用bin目录下的 dserver.sh
启动脚本来启动集群,而不是 server.sh
,启动集群后,查看log目录下的 orient-server.log 日志,检查 status 是否为online ,如果是则表示节点正常。
当启动节点数小于大多数,新增数据提示在线节点数不足,当全部节点启动后,新增成功,集群搭建完毕。
参考文档
https://orientdb.org/docs/3.0.x/distributed/Distributed-Architecture.html
https://orientdb.org/docs/3.0.x/gettingstarted/tutorials/Tutorial-Setup-a-distributed-database.html