📜  OrientDB-放置群集(1)

📅  最后修改于: 2023-12-03 15:18:10.503000             🧑  作者: Mango

OrientDB-放置群集

OrientDB是一个高性能的多模型开源NoSQL数据库,支持图形、文档、键值对、对列等多种数据模型。本文将重点介绍如何在OrientDB上放置集群。

集群

集群是特定大小的机器集合,它们共享资源并在共同管理的工作负载上运行。集群提供高可用性、容错能力和可扩展性,以便在负载增加时动态扩展。OrientDB通过分布式架构支持多主/多从/异步复制等不同类型的集群,旨在处理大型数据集的存储和处理。

放置集群

放置集群可以使我们从硬件故障、软件故障等问题中恢复过来,以确保我们的数据一直处于可用状态。OrientDB支持将集群放置在分布式网络中的多个节点上。

步骤一:启用分布式配置

启用分布式配置以支持多节点之间的数据复制和数据同步。打开orientdb-server-config.xml文件,添加以下内容并重启OrientDB:

<orient-server>
  <handlers>
    <handler class="org.reflections.Reflections" scanPackage="com.orientechnologies.orient.server.plugin.handler"/>
  </handlers>

  <network>
    <listeners>
      <listener protocol="binary" socket="default" port-range="2424-2430" ip-address="0.0.0.0" />
      <listener protocol="http" socket="default" port-range="2480-2490" ip-address="0.0.0.0">
        <parameters>
        </parameters>
      </listener>
    </listeners>
    <protocols>
      <protocol name="binary" implementation="com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary" />
      <protocol name="http" implementation="com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpDb" />
    </protocols>
  </network>
  
  <distributed>
    <servers>
      <server name="myServer" enabled="true"
              nodeName="node1"
              securityAlgorithm="SHA-256"
              securitySalt="-5875856156745355845"
              network-mapper-converter-class="com.orientechnologies.orient.server.network.OServerNetworkListenerTUShortNameConverter">
        <listen from="node1" port="2424-2430" protocol="binary" />
        <listen from="node1" port="2480-2490" protocol="http" />
        <network>
          <members>
            <member id="1" name="node1"  />
            <member id="2" name="node2"  />
            <member id="3" name="node3"  />
          </members>
          <protocols>
            <protocol name="binary" implementation="com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary" />
            <protocol name="http" implementation="com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpDb" />
          </protocols>
        </network>
        <users>
          <user name="root" password="root_password" resources="*" />
        </users>
      </server>
      <server name="node2" enabled="true"
              nodeName="node2"
              securityAlgorithm="SHA-256"
              securitySalt="-5875856156745355845"
              network-mapper-converter-class="com.orientechnologies.orient.server.network.OServerNetworkListenerTUShortNameConverter">
        <listen from="node2" port="2424-2430" protocol="binary" />
        <listen from="node2" port="2480-2490" protocol="http" />
        <network>
          <members>
            <member id="1" name="node1"  />
            <member id="2" name="node2"  />
            <member id="3" name="node3"  />
          </members>
          <protocols>
            <protocol name="binary" implementation="com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary" />
            <protocol name="http" implementation="com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpDb" />
          </protocols>
        </network>
      </server>
      <server name="node3" enabled="true"
              nodeName="node3"
              securityAlgorithm="SHA-256"
              securitySalt="-5875856156745355845"
              network-mapper-converter-class="com.orientechnologies.orient.server.network.OServerNetworkListenerTUShortNameConverter">
        <listen from="node3" port="2424-2430" protocol="binary" />
        <listen from="node3" port="2480-2490" protocol="http" />
        <network>
          <members>
            <member id="1" name="node1"  />
            <member id="2" name="node2"  />
            <member id="3" name="node3"  />
          </members>
          <protocols>
            <protocol name="binary" implementation="com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary" />
            <protocol name="http" implementation="com.orientechnologies.orient.server.network.protocol.http.ONetworkProtocolHttpDb" />
          </protocols>
        </network>
      </server>
    </servers>
  </distributed>
</orient-server>

在以上代码中,您需要设置在名为node1、node2和node3的机器上运行的OrientDB服务。每台机器都是一个单独的服务器,并且属于同一个群集。每个服务器都向每个其他服务器广播它的存在,并使用它们之间的安全通信建立联系。

步骤二:启动节点

启动多个节点并加入同一个集群,以支持负载平衡、容错和高可用性。您可以使用命令行举例中的方式启动三个节点:

./server.sh -Dnode.name=node1 /path/to/server/config
./server.sh -Dnode.name=node2 /path/to/server/config
./server.sh -Dnode.name=node3 /path/to/server/config
步骤三:创建数据库

创建数据库并将其存储在不同的节点上。您可以使用类似以下的命令创建数据库:

orientdb> connect "remote:localhost/myDB" root root_password
orientdb> create database plocal:/path/to/database/myDB [user-name password] [database-type]
orientdb> close

其中,“remote:localhost/myDB”是您要连接的远程数据库URL,“root”和“root_password”是用户名和密码。

步骤四:添加数据

添加数据到存储在不同节点上的数据库中。您可以使用类似以下的命令添加数据:

orientdb> connect "remote:localhost/myDB" root root_password
orientdb> INSERT INTO myClass (name, value) VALUES ("foo", 1)
orientdb> close
步骤五:查询数据

查询存储在不同节点上的数据库中的数据。您可以使用类似以下的命令查询数据:

orientdb> connect "remote:localhost/myDB" root root_password
orientdb> SELECT FROM myClass
orientdb> close

以上就是在OrientDB上放置集群的步骤,它支持多种类型的集群,并提供高可用性、容错和可扩展性。