Не удается подключиться к Apache Ignite Cluster на AWS EC2 - сервер Ignite отклоняет клиентов - PullRequest
0 голосов
/ 12 мая 2019

У меня проблемы с подключением к моему кластеру Ignite.У меня есть 2 узла в AWS EC2, и я использую обнаружение на основе AWS S3.Узлы Ignites запускаются без ошибок, и я вижу, как появляются новые объекты в корзине S3 после запуска Ignite.В группах AWS Securuty я открыл все порты TCP, так что ожидается, что любой может подключиться к кластеру.

Но я получаю исключение org.apache.ignite.client.ClientConnectionException: Ignite cluster is unavailable, когда пытаюсь подключиться с моего компьютера (я пытаюсь запустить простой JUnitтесты из IDE).

Я использовал следующую конфигурацию:

    <property name="addressResolver">
        <bean class="org.apache.ignite.configuration.BasicAddressResolver">
            <constructor-arg>
                <map>
                    <entry key="EC2 internal IP" value="EC2 public ip"/>
                </map>
            </constructor-arg>
        </bean>
    </property>

    <property name="discoverySpi">
        <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
            <property name="ipFinder">
                <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder">
                    <property name="awsCredentials" ref="reference to another bean with aws creds"/>
                    <property name="bucketName" value="MY_BUCKET_NAME"/>
                </bean>
            </property>
        </bean>
    </property>

Проблема здесь в том, что сервер отклоняет любые попытки подключения, потому что при запуске Ignite client (не Thin client) ясм. в журналах следующую картинку: enter image description here

Как видите, число клиентов становится равным 0, затем 1, 0 и 1 и т. д. Итак, я полагаю, что клиенты могутдостичь кластера, но почему они отклонены?

1 Ответ

2 голосов
/ 12 мая 2019

Я решил эту проблему.Кажется, есть правило: если вы используете обнаружение на основе AWS S3 в своем кластере Ignite, ваши клиентские узлы Ignite также должны использовать тот же подход.Это не было очевидно для меня.

Согласно официальной документации :

TcpDiscoverySpi spi = new TcpDiscoverySpi();

BasicAWSCredentials creds = new BasicAWSCredentials("yourAccessKey", "yourSecreteKey");

TcpDiscoveryS3IpFinder ipFinder = new TcpDiscoveryS3IpFinder();
ipFinder.setAwsCredentials(creds);
ipFinder.setBucketName("yourBucketName");
...