Плагин Hazelcast Kubernetes не определен - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь создать кластер OrientDB (версия 3.0.10), используя Kubernetes. OrientDB использует Hazelcast (версия 3.10.4) в своем распределенном режиме, поэтому я хочу настроить плагин KubernetesHazelcast. Я использовал этот репозиторий в качестве примера. Я создал все необходимые файлы конфигурации, я определил зависимость hazelcast Kubernetes (версия 1.3.1) в файле build.sbt для моего проекта, и эта зависимость появилась в classpath Тем не менее, журналы на каждом модуле показывают это сообщение об ошибке:

com.orientechnologies.orient.server.distributed.ODistributedStartupException: Error on starting distributed plugin
Caused by: com.hazelcast.config.properties.ValidationException: There is no discovery strategy factory to create 'DiscoveryStrategyConfig{properties={service-dns=orientdbservice2.default.svc.cluster.local, service-dns-timeout=10}, className='com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy', discoveryStrategyFactory=null}' Is it a typo in a strategy classname? Perhaps you forgot to include implementation on a classpath?

Похоже, что зависимость Hazelcast Kubernetes настроена таким образом. Как можно исправить эту ошибку?

Вот мой конфигурационный файл hazelcast.xml:

   <properties>
        <property name="hazelcast.discovery.enabled">true</property>
    </properties>
    <network>
        <join>
            <multicast enabled="false"/>
            <tcp-ip enabled="false" />
            <discovery-strategies>
                <discovery-strategy enabled="true"
                                    class="com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy">

                    <properties>
                        <property name="service-dns">orientdbservice2.default.svc.cluster.local</property>
                        <property name="service-dns-timeout">10</property>
                    </properties>
                </discovery-strategy>
            </discovery-strategies>
        </join>
    </network>

Для создания кластера я использую StatefulSet с образом OrientDB и монтирую все файлы конфигурации как карты конфигурации. Я почти уверен, что проблема не в моих конфигурационных файлах, так как с многоадресной рассылкой вместо стратегии DNS все работает нормально. Также нет проблем с сетью в самом кластере Kubernetes.

1 Ответ

0 голосов
/ 06 ноября 2018

Прежде всего, версия OrientDB должна быть обновлена ​​до последней версии - 3.0.10 со встроенной новейшей версией Hazelcast. Кроме того, я смонтировал файл зависимостей hazelcast-kubernetes.jar прямо в папку / orientdb / lib, и он начал работать правильно. Плагин HazelcastKubernetes обнаружен, и узлы присоединяются к кластеру:

INFO  [172.17.0.3]:5701 [orientdb-test-cluster-1] [3.10.4] Kubernetes Discovery activated resolver: DnsEndpointResolver [DiscoveryService]
INFO  [172.17.0.3]:5701 [orientdb-test-cluster-1] [3.10.4] Activating Discovery SPI Joiner [Node]
INFO  [172.17.0.3]:5701 [orientdb-test-cluster-1] [3.10.4] Starting 2 partition threads and 3 generic threads (1 dedicated for priority tasks) [OperationExecutorImpl]

Members {size:3, ver:3} [
    Member [172.17.0.3]:5701 - hash
    Member [172.17.0.4]:5701 - hash
    Member [172.17.0.8]:5701 - hash
]
...