在AWS上以分布式模式运行OrientDB不起作用

安伯

我在AWS上设置了3个OrientDB(2.2.7)节点。它们以分布式模式运行。

每当我通过端口2424连接到服务器时,连接都会在pyorient中锁定

我知道与以下问题有关的有关在分布式模式下运行OrientDB的一些问题:在Orientdb中以分布式模式创建数据库

为了避免出现任何问题,我正在运行文档建议的永久实例。

根据hazelcast EC2白皮书的建议,我还将EC2实例配置为“ c3.4xlarge”实例。Amazon_EC2_Deployment_Guide_v0.3_web.pdf

我已经将hazelcast.xml配置为使用tcp-ip和aws发现策略,并且都提供了相同的结果。可以看到服务器之间通过hazelcast相互连接,发现工作正常。

我为用户附加了以下策略。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stm7747196888759",
        "Action": [
            "ec2:DescribeInstances"
        ],
        "Effect": "Allow",
        "Resource": "*"
    }
]
}

每个都具有如下配置的hazelcast.xml

<?xml version="1.0" encoding="UTF-8"?>
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.7.xsd"
       xmlns="http://www.hazelcast.com/schema/config"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <group>
            <name>orientdb</name>
            <password>xxxxxxxxx</password>
    </group>
    <properties>
            <property name="hazelcast.local.localAddress">{{LOCAL_IP}}</property>
            <property name="hazelcast.icmp.enabled">true</property>
    </properties>
    <network>
            <public-address>{{PUBLIC_IP}}</public-address>
            <port auto-increment="true">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>57.xx.xx.165</member>
                            <member>57.xx.xx.236</member>
                            <member>57.xx.xx.133</member>
                    </tcp-ip>
                    <aws enabled="false">
                            <access-key>xxxx</access-key>
                            <secret-key>xxxx</secret-key>
                            <host-header>ec2.amazonaws.com</host-header>
                            <region>eu-west-1</region>
                    </aws>
            </join>
            <interfaces enabled="false">
                    <interface>{{LOCAL_IP}}</interface>
            </interfaces>
    </network>
    <executor-service>
            <pool-size>16</pool-size>
    </executor-service>
</hazelcast>

从hazelcast.xml中可以看出,我还尝试了将hazelcast升级到3.7版。我使用哪种版本的hazelcast都没关系,结果是相同的。

一旦连接到服务器,连接就会锁定。服务器仍然可以在端口2480上正常工作。您仍然可以在浏览器中使用前端,但是无法通过pyorient打开连接。

我们有一个大型数据库,每个月收集大约250万个顶点数据,大约有500万条边。对于我们而言,以分布式模式运行至关重要,因为单个服务器将无法扩展到该容量以外。就目前而言,OrientDB似乎具有可以作为分布式数据库运行的功能,但是该功能似乎不起作用。

我们正在运行docker,但切换到二进制文件以升级到hazelcast 3.7。

有没有人能够使OrientDB在分布式环境中投入生产,我们还缺少什么?

安伯

对于Hazelcast或AWS,这似乎不是问题。我的设置有2个问题。第一个问题与OrientDB有关,而不是刷新从default-distributed-db-config.json中的设置替换我的distributed-config.json。结果是,曾经连接到我的数据库的每个节点都被附加到该文件,而我的default-distributed-db-config.json设置都没有反映在该配置中。

我添加了一个启动脚本,以在每次服务器启动时删除该distributed-config.json,以刷新节点列表并更新我的设置。

第二个问题与Pyorient有关。Pyorient的一个错误是在分布式模式下它无法解析从OrientDB返回的消息这将导致连接进入无限循环。

当前在pyorient上有一个开发分支,用于实现缺少的二进制序列化程序(OrientSerialization.Binary)。我还有另一个分支,其中已合并了一些修复程序。

通过以下方式安装:

pip install https://github.com/anber500/pyorient/tarball/17f5e42e83859a661c6483f7fa812226194694dd#egg=pyorient

设置序列化器,如下所示:

client = pyorient.OrientDB("localhost", 2424, serialization_type=pyorient.OrientSerialization.Binary)

您还将需要pyorient_native的更新版本。第一个发行版存在内存泄漏,因此请使用master分支中的版本:

pip install https://github.com/nikulukani/pyorient_native/tarball/master#egg=pyorient_native

这在分布式模式下的AWS上完美运行,并且比CSV序列化器快得多。

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

分布式Elixir示例不起作用

关于在分布式模式下在hadoop上运行的hbase

在分布式系统上编译并运行

Jmeter-$ {__ P(var)}在远程(分布式)测试期间不起作用

Docker-Swarm,分布式环境下多标签部署时不起作用的问题

带有链接的iOS临时分布式应用程序不起作用

在 Google Cloud ML 上以分布式模式运行 tensorflow 代码

AWS上的架构:在动态节点上运行分布式算法

分布式通知在Catalina中不再起作用

HADOOP 上的 HBASE 分布式模式卡住了

具有多个任务的分布式官方Mongodb Kafka源连接器不起作用

在分布式模式下将orientdb从2.1.15升级到2.2.28

用于日志分析的 Map Reduce 作业不在 Hadoop 2.7.3 伪分布式模式下运行

Windows上的分布式编译

最小化的 macOS 应用程序 + 分布式通知中心(macOS 上的后台模式)

如何在分布式环境上运行nutch服务器

在独立模式和分布式模式下运行单个kafka s3接收器连接器

AWS上的Kubernetes Autoscaler不起作用

在Windows Server 2016 / AWS上运行的Springboot Web服务器不起作用

在ubuntu中以伪分布式模式设置Hadoop

如何在分布式模式下本地启动钻头?

如何使用JVisualVM以伪分布式模式监视Hadoop?

无法以分布式模式运行Kafka Connect-尝试创建/查找主题“ connect-offsets”时出错

分布式缓存

分布式认证

分布式配置

分布式计算

Dask分布式不运行python脚本

使用dask分布式并行运行shell命令