本文基於 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