参考链接:https://www.howtoing.com/how-to-configure-an-orientdb-cluster-on-ubuntu-16-04/
orientD安装
一、解压到/opt下
tar -zxvf /opt/packs/orientdb-3.0.18.tar.gz -C /opt/
然后
cd /opt/orientdb-3.0.18/
二、orientDB单机版安装
-
1、其实单机版直接启动就可以了,但是会提示输入root密码,并且保存到config/orientdb-server-config.xml的users配置中。所以一般先进行密码设置,再启动。
修改前: <users> </users> 修改后: <users> <user resources="*" password="rzx1218(这个随意,到时候登录界面需要的)" name="root"/> <user resources="connect,server.listDatabases,server.dblist" password="rzx1218(这个随意,到时候登录界面需要的)" name="guest"/> </users>
如果不设置密码,启动会提示输入
-
2、服务启停
启动服务 sh ./bin/server.sh 停止服务 sh ./bin/shutdown.sh
三、集群版安装
集群配置需要修改三个文件:orientdb-server-config.xml、hazelcast.xml、default-distributed-db-config.json。
orientdb-server-config.xml开启分布式 ==> hazelcast.xml配置文件默认使用广播方式发现其他节点 ==> default-distributed-db-config.json来指定odb集群中节点的角色。
其实hazelcast.xml、default-distributed-db-config.json不是必须修改的,他们都有默认值,默认是用广播发现其他节点,并且将所有节点划分到一个odb集群。同样默认所有的节点角色为master,如果需要划分多个集群,则需要进行修改
-
1、vim config/orientdb-server-config.xml
修改com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin开启分布式,会使用配置文件hazelcast.xml进行广播发现其他节点,最后要加上一行来指定nodeName,否则启动时会提示输入机器名称
修改前: <handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin"> <parameters> <parameter name="enabled" value="${distributed}"/> <parameter name="configuration.db.default" value="${ORIENTDB_HOME}/config/default-distributed-db-config.json"/> <parameter name="configuration.hazelcast" value="${ORIENTDB_HOME}/config/hazelcast.xml"/> </parameters> </handler> 修改后: <handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin"> <parameters> <!-- 开启分布式 --> <parameter name="enabled" value="true"/> <parameter name="configuration.db.default" value="${ORIENTDB_HOME}/config/default-distributed-db-config.json"/> <parameter name="configuration.hazelcast" value="${ORIENTDB_HOME}/config/hazelcast.xml"/> <!-- 绑定机器名称,每个机器都要对应修改 --> <parameter name="nodeName" value="本机名称"/> </parameters> </handler>
注意:nodeName如果不配置,启动的时候提示输入,输入后会将值增加到这个文件上面对应的位置,每次启动就不需要配置了
修改users ==> 和单机版一样
-
2、vim config/hazelcast.xml
这个文件默认使用广播的方式发现其他节点,并把他们划为一个odb集群,如果想分为几个集群,则需要单独指定ip划分。
修改前 <group> <name>orientdb</name> <password>orientdb</password> </group> <properties> . . . </properties> <network> <port auto-increment="true">2434</port> <join> <multicast enabled="true"> <multicast-group>235.1.1.1</multicast-group> <multicast-port>2434</multicast-port> </multicast> </join> </network> 修改后 <!-- 集群名称,以及广播时使用的密码,只有开启广播才用到 --> <group> <name>clusterName</name> <password>clusterPassword</password> </group> <properties> . . . </properties> <network> <port auto-increment="false">2434</port> <join> <!-- 下面两种方式随便选择一种,广播或者直接指定ip,默认是广播 --> <!-- 默认是这个:广播,会把集群中所有odb节点都加入为一个odb集群--> <multicast enabled="false"> <multicast-group>235.1.1.1</multicast-group> <multicast-port>2434</multicast-port> </multicast> <!-- 单独指定那几台作为一个集群,可以划分出多个odb集群 --> <tcp-ip enabled="true"> <member>rzx168</member> <member>rzx169</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、vim config/default-distributed-db-config.json
这个文件也可以不用修改,默认odb集群中所有odb节点都是master角色,如果需要单独指定角色,则单独修改
修改前 { "autoDeploy": true, "readQuorum": 1, "writeQuorum": "majority", "executionMode": "undefined", "readYourWrites": true, "newNodeStrategy": "static", <!-- 表示全部都是master节点 --> "servers": { "*": "master" }, ...... } 修改后: { "autoDeploy": true, "readQuorum": 1, "writeQuorum": "majority", "executionMode": "undefined", "readYourWrites": true, "newNodeStrategy": "static", "replication": true, "hotAlignment" : true, "servers": { <!-- rzx168为master,rzx169为replica --> "rzx168": "master", "rzx169": "replica" }, ...... } 参数作用: autoDeploy :指定是否将数据库部署到集群中尚未拥有的新节点。 readQuorum :在读取操作上回复客户端之前需要一致的集群节点的响应次数。 将其设置为“1”将禁用读取一致性。 writeQuorum :在写入操作时,在向客户端发送回复之前需要响应多少个节点。 默认值为多数 ,它使用(N / 2)+ 1计算 ,其中N是集群中可用主节点的数量。 在计算大多数时,不考虑复制节点。 如果在仅具有两个主节点的群集中保留默认值,则如果其中一个节点关闭,则法定人数将永远不会形成。 executionMode :定义客户端的执行模式 - 同步或异步。 默认值允许客户端决定。 readYourWrites :指定节点的响应是否计数达到写入定额。 newNodeStrategy :当新节点加入集群时会发生什么。 使用默认值,节点将自动注册在服务器列表下。 我们将添加以下参数: replication: 是否副本备份 hotAlignment: 指定如果节点关闭然后重新联机,会发生什么。 如果启用,则当节点脱机时,同步消息将保留在分布式队列中。 当它回到在线时,通过轮询队列中的所有同步消息来启动同步阶段。 servers: 用于指定集群中节点的角色(主节点或副本节点)。 默认情况下,使用星号*表示服务器中的所有节点都是主节点。 因为我们打算构建一个包含两个主器件和一个副本的集群,所以我们将通过指定每个节点的名称和集群中的角色来修改此参数进行匹配。 名称是您在第1步中配置的。
-
4、将本机本机配置好的orientDB发送到其他机器
scp -r /opt/orientdb-3.0.18/ rzx169:/opt/ 注意:一定要修改其他机器的config/orientdb-server-config.xml <parameter name="nodeName" value="本机名称"/>
-
5、防火墙开放如下端口
2424 2434 2480
-
6、服务启停
启动服务 sh ./bin/server.sh 会出现如下日志 “Accepting socket connection from /10.10.160.21:34786 [TcpIpAcceptor]” “Established socket connection between /10.10.160.23:2434 and /10.10.160.21:34786” 说明rzx168机器和rzx169机器已经相互通信了 停止服务 sh ./bin/shutdown.sh