Тонкий клиент Apache Ignite не подключается к AKS

#azure #kubernetes #ignite #azure-aks

Вопрос:

Я создал AKS и развернул на нем службу Apache Ignite. Когда я проверяю капсулы, я вижу, что они работают.

Состояние стручков

Кроме того, я могу получить IP-адрес балансировщика нагрузки.

IP-адрес балансировщика нагрузки AKS

Я следую официальным инструкциям Apache и пытаюсь подключить Ignite к ThinClient. Я делюсь своим кодом и кодом инструкций.

Вот мой код:

 public void ConnectIgnite()
{
    var cfg = new IgniteClientConfiguration
    {
       Endpoints = new[] { "20.101.12.***:10800" }
    };
    
    var client = Ignition.StartClient(cfg);
}
 

Но мой код становится ниже ошибок;

Система.Исключение AggregateException: «Не удалось установить соединение с тонким клиентом Ignite, для получения подробной информации изучите внутренние исключения».

Внутреннее исключение ExtendedSocketException: Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, потому что подключенный хост не ответил.

а вот код инструкции Apache;

 ClientConfiguration cfg = new ClientConfiguration().setAddresses("13.86.186.145:10800");
IgniteClient client = Ignition.startClient(cfg);

ClientCache<Integer, String> cache = client.getOrCreateCache("test_cache");

cache.put(1, "first test value");

System.out.println(cache.get(1));

client.close();
 

Кроме того, вот ссылка на официальную инструкцию

Я не понял, в чем дело? Кроме того, в инструкции говорится, что мне не нужны clientid и clientsecret, но я не хочу подключаться без какой-либо защиты, но это совершенно другая проблема.

Ответ №1:

Я нашел, что не так. Официальная страница Apache гласит: используйте приведенный ниже XML для настройки.

 <bean class="org.apache.ignite.configuration.IgniteConfiguration">

    <property name="discoverySpi">
        <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
            <property name="ipFinder">
                <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder">
                    <constructor-arg>
                        <bean class="org.apache.ignite.kubernetes.configuration.KubernetesConnectionConfiguration">
                            <property name="namespace" value="default" />
                            <property name="serviceName" value="ignite" />
                        </bean>
                    </constructor-arg>
                </bean>
            </property>
        </bean>
    </property>
</bean>
 

но,

во-первых, для этого XML необходим тег beans в верхней части XML. Кроме того, значение пространства имен и значение имени службы несовместимы с официальной страницей инструкций apache. Если вы перейдете на страницу apache для настройки;

вы должны использовать следующие значения

 <property name="namespace" value="ignite" />
<property name="serviceName" value="ignite-service" />
 

вместо

 <property name="namespace" value="default" />
<property name="serviceName" value="ignite" />
 

в конце изменений ваш XML будет выглядеть следующим образом

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder">
                        <constructor-arg>
                            <bean class="org.apache.ignite.kubernetes.configuration.KubernetesConnectionConfiguration">
                                <property name="namespace" value="ignite" />
                                <property name="serviceName" value="ignite-service" />
                            </bean>
                        </constructor-arg>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
</beans>
 

Я изменил XML-файл конфигурации и перезапустил модули с помощью команды ниже, и это сработало.

 kubectl -n service rollout restart deployment ignite-cluster
 

Ответ №2:

Попробуйте подключиться, используя 20.101.12.*** адрес извне. Кстати, что такое 13.86.186.145 , почему вы пытаетесь подключиться к нему?

Обновление: Похоже, вы просто скопировали его из документов, вам нужно заменить его своими собственными значениями.

Комментарии:

1. Кроме того, если вы просто тестируете что-то с помощью Ignite, вы можете использовать оператор GridGain, который, по моему опыту, значительно упрощает установку gridgain.com/docs/latest/installation-guide/operator/…

2. Я не подключаюсь к 13.86.186.145. Этот код является примером кода apache. Моя — наверху. Мой IP начинается с 20

3. Привет, Александр, я ответил на вопрос. Не могли бы вы проверить это и, если это правильно, пожалуйста, проголосуйте за это.

4. Привет, да, должно быть что-то простое, я думаю, вы правы.

5. Кстати, я подумал, что автор мог бы пометить его как правильный с помощью зеленой кнопки.