1. 環境准備
操作系統: Centos6.8
內存: 8G(分布式部署時建議4G及以上,否則需要手動修改JVM配置)
JDK: 建議jdk8版本(3.0版本要求jdk8)
環境變量:需配置JAVA_HOME、ORIENTDB_HOME (配置文件中有用到)
export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin export ORIENTDB_HOME=/usr/local/orientdb export PATH=$PATH:$ORIENTDB_HOME/bin
創建orientdb用戶
# groupadd orientdb
# useradd -r -g orientdb orientdb
OrientDB安裝包下載:官網地址https://orientdb.com/
2. 單實例部署
2.1 解壓數據庫安裝包,並授權
tar -zxvf orientdb-enterprise-2.2.37.tar.gz
ln -s orientdb-enterprise-2.2.37 orientdb
chown -R orientdb:orientdb orientdb/
如果是下載的為社區版需將企業版agent jar包拷貝至plugins目錄下
tar -zxvf orientdb-3.0.10.tar.gz ln -s orientdb-3.0.10 orientdb
chown -R orientdb:orientdb orientdb/
cp agent-3.0.10.jar orientdb/ plugins
2.2 修改bin目錄下orientdb.sh
ORIENTDB_DIR="/usr/local/orientdb" ORIENTDB_USER="orientdb"
2.3 修改bin目錄下orientdb.service
User=orientdb Group=orientdb ExecStart=$ORIENTDB_HOME/bin/server.sh
2.4 首次啟動數據庫使用server.sh,並在啟動過程中提示配置root賬號密碼,如首次不采用此方式啟動,則會隨機生成root賬號的密碼。因此單實例啟動時建議用該方式啟動。
./server.sh
2.5 首次啟動后會在databases目錄下生成OSystem,如果該目錄屬主不是orientdb則需要手動修改為orientdb,否則下次啟動時異常(報沒有權限操作OSystem目錄的錯誤)
2.6 啟動、關閉服務(也可以復制到/etc/init.d目錄下,做成服務)
./orientdb.sh start ./orientdb.sh status ./orientdb.sh stop
2.7. 進入控制台,進行數據庫交互
./console.sh
3. 分布式部署
分布式部署前幾步操作同單實例情況(3.1-3.3),但后續操作不同
3.1 解壓數據庫安裝包
tar -zxvf orientdb-enterprise-2.2.37.tar.gz
如果是下載的為社區版需將企業版agent jar包拷貝至plugins目錄下
tar -zxvf orientdb-3.0.10.tar.gz ln -s orientdb-3.0.10 orientdb cp agent-3.0.10.jar orientdb/ plugins
3.2 修改bin目錄下orientdb.sh
ORIENTDB_DIR="/usr/local/orientdb" ORIENTDB_USER="orientdb"
3.3 修改bin目錄下orientdb.service
User=orientdb Group=orientdb ExecStart=$ORIENTDB_HOME/bin/server.sh
3.4 首次初始化啟動數據庫使用dserver.sh,並在啟動過程中提示配置root賬號密碼,以及節點名稱,節點名稱在后續操作中需要用到
./dserver.sh
3.5 修改hazelcast.xml文件
配置TCP / IP模式機制,並添加對應節點信息,修改后主要配置信息如下:
<group> <name>clusterName</name> <password>clusterPassword</password> </group> <properties> . . . </properties> <network> <port auto-increment="false">2434</port> <join> <multicast enabled="false"> <multicast-group>235.1.1.1</multicast-group> <multicast-port>2434</multicast-port> </multicast> <tcp-ip enabled="true"> <member>your_master_server_ip_1</member> <member>your_master_server_ip_2</member> <member>your_replica_server_ip</member> </tcp-ip> </join> </network>
其中部分標簽的含義如下:
group> name :此元素定義集群的名稱。 你可以選擇任何你喜歡的東西
group> password :定義用於加密每個成員發送的廣播消息加入群集的密碼。 在這里選擇一個強大的密碼。
network> port :標識用於自動發現節點的端口。 auto-increment屬性指示機制從定義的端口開始,如果該端口正在使用,則繼續嘗試其他端口。 通過將其設置為false,定義的端口將用於通信,如果端口已在使用中,則節點發現將失敗。 對於本文,該屬性將被禁用。
join>組播元素用於定義IP組播參數。 您將不會使用IP多播,因此我們將忽略它們。 這意味着我們將enabled屬性設置為false。
join> tcp-ip :用於定義與TCP / IP集群相關的參數。 enabled屬性用於啟用它。
join> tcp-ip> member :定義集群的每個成員。 還有其他方法來指定每個成員,但是我們將堅持指定每個成員的IP地址(每行一個)。
3.6 修改orientdb-server-config.xml文件
其中NodeName參數的值是在第3.4步中配置的節點名
. . . <handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin"> <parameters> <parameter value="true" name="enabled"/> <parameter value="${ORIENTDB_HOME}/config/default-distributed-db-config.json" na$ <parameter value="${ORIENTDB_HOME}/config/hazelcast.xml" name="configuration.haz$ <parameter value="orientdb_server_name_1" name="nodeName"/> </parameters> </handler> . . .
3.7 修改default-distributed-db-config.json文件
默認配置全部節點均為主節點,如配置其中部分節點為副本,則修改為如下情況,
其中新增replication ,hotAlignment
{
"replication": true,
"hotAlignment" : true,
"autoDeploy": true,
"readQuorum": 1,
"writeQuorum": "majority",
"executionMode": "undefined",
"readYourWrites": true,
"newNodeStrategy": "static",
"servers": {
"orientdb_server_name_1": "master",
"orientdb_server_name_2": "master",
"orientdb_server_name_3": "replica"
},
...
}
autoDeploy :指定是否將數據庫部署到集群中尚未擁有的新節點。
readQuorum :在讀取操作上回復客戶端之前需要一致的集群節點的響應次數。 將其設置為“1”將禁用讀取一致性。
writeQuorum :在寫入操作時,在向客戶端發送回復之前需要響應多少個節點。 默認值為多數 ,它使用(N / 2)+ 1計算 ,其中N是集群中可用主節點的數量。 在計算大多數時,不考慮復制節點。 如果在僅具有兩個主節點的群集中保留默認值,則如果其中一個節點關閉,則法定人數將永遠不會形成。
executionMode :定義客戶端的執行模式 - 同步或異步。 默認值允許客戶端決定。
readYourWrites :指定節點的響應是否計數達到寫入定額。
newNodeStrategy :當新節點加入集群時會發生什么。 使用默認值,節點將自動注冊在服務器列表下。
hotAlignment :指定如果節點關閉然后重新聯機,會發生什么。 如果啟用,則當節點脫機時,同步消息將保留在分布式隊列中。 當它回到在線時,通過輪詢隊列中的所有同步消息來啟動同步階段。
servers :用於指定集群中節點的角色(主節點或副本節點)。 默認情況下,使用星號*表示服務器中的所有節點都是主節點。 因為我們打算構建一個包含兩個主器件和一個副本的集群,所以我們將通過指定每個節點的名稱和集群中的角色來修改此參數進行匹配。
3.8啟動各節點服務
啟動時,注意啟動順序。啟動的第一個服務器(即第一個加入集群)成為協調服務器 ,這是分布式操作啟動的地方。 如果希望特定服務器具有此角色,先啟動該角色
./orientdb.sh start
所有節點啟動完畢后,日志中將有如下信息,其中含有主節點、副本集信息
耿小廚已開通個人微信公眾號,想進一步溝通或想了解其他文章的同學可以關注我