帮酷LOGO
0 0 评论
文章标签:orientdb  Ubuntu  集群  

介绍

OrientDB是一个支持图形和文档数据库的多模型nosql数据库,它是一个Java应用程序,可以在操作系统上运行,它也完全支持ACID,并支持多主群集和复制,从而可以轻松进行水平扩展。

在本教程中,你将使用OrientDB的Community版本设置一个包含两个主节点和一个副本节点的三节点群集。

前提条件

要遵循本教程,你需要:

有足够内存支持群集的3台Ubuntu服务器,这取决于你的需求和自定义OrientDB的方式,但是每台4GB是一个不错的默认值。

dserver.sh

步骤1生成root密码和OrientDB实例名

首先,运行分布式服务器脚本dserver.sh,生成OrientDB实例需要在集群中运行的凭证,具体来说,这将允许我们为OrientDB实例设置root密码和名称,你将需要在所有三个服务器上执行此步骤。

要启动,请导航到安装目录。


cd /opt/orientdb

然后启动分布式服务器。


sudo bin/dserver.sh

首次启动分布式服务器时,系统将提示你为root用户帐户指定密码,这是一个内部OrientDB帐户,将用于访问服务器以进行OrientDB Studio用于管理OrientDB的基于Web的界面以及从控制台连接到OrientDB等操作,如果你没有指定密码,将自动生成一个密码,


Output+---------------------------------------------------------------+
| WARNING: FIRST RUN CONFIGURATION |
+---------------------------------------------------------------+
| This is the first time the server is running. Please type a |
| password of your choice for the 'root' user or leave it blank |
| to auto-generate it. |
| |
| To avoid this message set the environment variable or JVM |
| setting ORIENTDB_ROOT_PASSWORD to the root password to use. |
+---------------------------------------------------------------+

Root password [BLANK=auto generate it]: *****
Please confirm the root password: *****

然后会提示你为OrientDB实例设置一个名称,该实例可以与运行它的云服务器的名称相同。


Output+---------------------------------------------------------------+
| WARNING: FIRST DISTRIBUTED RUN CONFIGURATION |
+---------------------------------------------------------------+
| This is the first time that the server is running as |
| distributed. Please type the name you want to assign to the |
| current server node. |
| |
| To avoid this message set the environment variable or JVM |
| setting ORIENTDB_NODE_NAME to the server node name to use. |
+---------------------------------------------------------------+

Node name [BLANK=auto generate it]: node-name

脚本运行完毕后,你将看到如下所示的一行:


Output2017-06-01 02:24:00:717 INFO OrientDB Server is active v2.2.20 (build 76ab59e72943d0ba196188ed100c882be4315139). [OServer]

此时,你可以使用CTRL+C终止进程,现在安装了OrrutDB,我们需要修改几个配置文件,让它作为一个集群运行。

步骤2-配置OrientDB以在分布式模式下运行

要安装OrientDB以作为集群中的节点,需要修改它config目录中的三个文件,它们是:

hazelcast.xml :此文件中定义的参数使节点自动发现,default-distributed-db-config.json :这个文件仅用于分布式环境中,用于定义每个数据库的节点的行为,orientdb-server-config.xml :这是在分布式或独立模式下需要修改的主要OrientDB配置文件,

我们将修改这个步骤中的每个文件,从hazelcast.xml开始。

修改hazelcast.xml文件

hazelcast.xml中最重要的设置是每个节点用来加入集群的机制,在本节中我们将考虑的两种机制是IP组播和TCP/IP-cluster ,

要开始,打开文件进行编辑:


sudo nano /opt/orientdb/config/hazelcast.xml

/opt/orientdb/config/hazelcast.xml

. . .
 <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>

你将对该文件执行的操作是禁用IP多播,添加启用TCP/IP-cluster的条目,并指定群集成员,

修改完文件后,最终版本将如下所示:

/opt/orientdb/config/hazelcast.xml

. . .
 <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>

完成编辑后保存并关闭文件,接下来是我们列表中的第二个文件。

修改default-distributed-db-config.json文件

hazelcast.xml一样,我们将只做一些修改,/opt/orientdb/config/default-distributed-db-config.json 在此文件中,你指定每个服务器在集群中必须扮演的角色(主或副本)。

打开以进行编辑。


sudo nano /opt/orientdb/config/default-distributed-db-config.json

文件的相关部分显示在下面的代码块中:

/opt/orientdb/config/default-distributed-db-config.json

{
"autoDeploy": true,
"readQuorum": 1,
"writeQuorum":"majority",
"executionMode":"undefined",
"readYourWrites": true,
"newNodeStrategy":"static",
"servers": {
"*":"master"
 },
 . . . 
}

修改文件后,它应该如下所示:

/opt/orientdb/config/default-distributed-db-config.json

{
 "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"
 },

 ...

}

完成后保存并关闭文件,我们现在将配置列表上的最后一个文件。

修改orientdb-server-config.xml文件

/opt/orientdb/config/orientdb-server-config.xml 是一个参数,用于启用或禁用使用OrientDB中的Hazelcast in-memory data grid进行群集,你在步骤1中为OrientDB实例(或让脚本自动生成)提供的名称可以在此文件中修改。

打开以进行编辑。


sudo nano /opt/orientdb/config/orientdb-server-config.xml

文件的相关部分如下所示,它指向文件的顶部,请注意,NodeName参数的值是你在步骤1:中指定,

/opt/orientdb/config/orientdb-server-config.xml

. . .
<handler class="com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin">
 <parameters>
 <parameter value="${distributed}" 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>
. . .

若要启用群集,请将已启用的参数更改为true ,编辑后,最终版本将如下所示:

/opt/orientdb/config/orientdb-server-config.xml

. . .
<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>
. . .

编辑完文件后,保存并关闭它。

在启动和测试集群之前,唯一剩下的事情就是允许OrientDB的流量通过防火墙。

步骤3-允许OrientDB流量通过防火墙

如果现在尝试启动群集,则OrientDB的通信将被防火墙阻止,让我们添加规则以允许通过以下端口通信:

2424,用于二进制通信 2434,用于交换群集通信

打开端口24242480


sudo ufw allow 2424
sudo ufw allow 2434


sudo ufw allow 2480

接下来,重启UFW 。


sudo systemctl restart ufw

OrientDB已经从必备项中设置为Systemd服务,因此,现在完成了其余配置,我们可以启动集群。

步骤4-启动,并且测试OrientDB集群

在每个服务器上,确保启用服务,以便在启动时启动该服务。


sudo systemctl enable orientdb

现在你可以启动所有三个服务器,第一个服务器启动(即,第一个加入群集的节点成为协调服务器,它是启动分布式操作的位置,如果你希望特定服务器拥有该角色,首先启动该角色。


sudo systemctl start orientdb

检查进程状态以验证它们是否正确启动。


sudo systemctl status orientdb

你将看到如下所示的输出:


Output● orientdb.service - OrientDB Server
 Loaded: loaded (/etc/systemd/system/orientdb.service; enabled; vendor preset: enabled)
 Active: active (running) since Thu 2017-06-01 02:45:53 UTC; 7s ago

潜在的错误源包括没有足够的RAM,没有安装Java JRE或修改后的JSON文件验证失败,如果对步骤2中的文件进行了更改,请记住重新启动OrientDB 。

一旦进程正常运行,让我们测试集群是否正常工作,在三个节点中,过滤与群集相关的系统日志条目过滤器:


sudo tail -f /var/log/syslog | grep -i dserver

使用该命令,将看到类似于下面的输出的输出,表明集群的所有成员都是联机的,


Output-------------------+------+------------------------------------+-----+---------+-------------------+
|Name |Status|Databases |Conns|StartedOn|Binary |
-------------------+------+------------------------------------+-----+---------+-------------------+
|orientdb-replica-1|ONLINE|GratefulDeadConcerts=ONLINE (MASTER)|4 |01:26:00 |111.111.111.111
|orientdb-master-2 |ONLINE|GratefulDeadConcerts=ONLINE (MASTER)|4 |01:25:13 |222.222.222.222
|orientdb-master-1*|ONLINE|GratefulDeadConcerts=ONLINE (MASTER)|6 |01:24:46 |333.333.333.333

你可以按CTRL C立即停止此输出。

要验证跨集群的新数据复制,需要在一台服务器上生成一些数据,然后查看它是否被复制到其他服务器上,使用以下命令之一在主服务器上启动控制台:


cd /opt/orientdb/bin
sudo ./console.sh

在启动控制台时,最后一个命令应该给出以下输出,将提示改为orientdb>


OutputOrientDB console v.2.2.17 (build UNKNOWN@r98dbf8a2b8d43e4af09f1b12fa7ae9dfdbd23f26; 2017-02-02 07:01:26+0000) www.orientdb.com
Type 'help' to display all the supported commands.
Installing extensions for GREMLIN language v.2.6.0

orientdb> 

现在连接到OrientDB服务器实例,命令只使用root用户帐户连接到服务器上运行的OrientDB实例,而不连接数据库,密码是你在步骤3中创建的


connect remote:localhost root root-password

接下来,让我们创建一个叫 CallMeMaybe


create database remote:localhost/CallMeMaybe root root-password plocal

如果成功创建数据库,你将连接到它,并且你的提示应更改为匹配。

注意:如果你得到一个表示"Permission denied"或类似的错误,请检查/opt/orientdb/databases目录上的权限,从控制台创建数据库的帐户应该对该文件夹有读写权限,

现在 CallMeMaybe 仍然是一个空的数据库,只要有一些测试数据,让我们向它添加一个类:


create class Artist

然后将一条记录插入其中:


insert into Artist (id, name, age) values (01,'sammy', 35)

检查新数据库现在是否保存你刚插入的记录:


select id, age, name from Artist

如果一切正常,输出应该类似于:


Output+----+----+----+------+
|# |id |age |name |
+----+----+----+------+
|0 |1 |35 |sammy |
+----+----+----+------+

1 item(s) found. Query executed in 0.216 sec(s).

你现在可以退出控制台。


exit

验证过程的最后一步是登录到集群中的不同节点,并尝试查询新数据库以查看数据是否已成功传播。


ssh sammy@another_orientdb_server_ip

像以前一样启动控制台。


cd /opt/orientdb/bin
sudo ./console.sh

以管理员身份连接数据库,这是新OrientDB数据库的默认用户和密码。


connect remote:localhost/CallMeMaybe admin admin

执行与之前相同的查询。


select id, age, name from Artist 

输出应该与前一个服务器的输出相同,因为你正在跨服务器集群执行查询,你现在可以退出控制台。


exit

这确认你的3个节点集群正常工作。

结束语

你已经建立了一个由三个节点组成的OrientDB集群,这些节点服务于不同的角色(主节点或副本节点),通过这样的设置,更改节点的数量很容易。

有关OrientDB管理的官方文档可在项目文档网站上获得,有关Hazelcast的更多信息,请访问Hazelcast文档



文章标签:Ubuntu  集群  orientdb  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语