Я пытаюсь создать кластер 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.