Micronaut не удается подключиться к пространствам клавиш

#cassandra #micronaut #amazon-keyspaces

Вопрос:

Я пытаюсь интегрировать свой сервис с AWS Cassandra ( Keyspaces ) со следующей конфигурацией:

     cassandra:
      default:
        advanced:
          ssl: true
          ssl-engine-factory: DefaultSslEngineFactory
          metadata:
            schema:
              enabled: false
          auth-provider:
            class: PlainTextAuthProvider
            username: "XXXXXX"
            password: "XXXXXX"
        basic:
          contact-points:
            - ${CASSANDRA_HOST:"127.0.0.1"}:${CASSANDRA_PORT:"9042"}
          load-balancing-policy:
            local-datacenter: "${CASSANDRA_DATA_CENTER}:datacenter1"
          session-keyspace: "keyspace"
 

Всякий раз, когда я запускаю службу, она не загружается со следующей ошибкой:

 Message: Could not reach any contact point, make sure you've provided valid addresses (showing first 1 nodes, use getAllErrors() for more): Node(endPoint=cassandra.eu-west-1.amazonaws.com/3.248.244.41:9142, hostId=null, hashCode=7296b27b): [com.datastax.oss.driver.api.core.DriverTimeoutException: [s0|control|id: 0x1f1c50a1, L:/172.17.0.3:54802 - R:cassandra.eu-west-1.amazonaws.com/3.248.244.41:9142] Protocol initialization request, step 1 (OPTIONS): timed out after 5000 ms]

 

В библиотеке очень мало документации cassandra-micronaut , поэтому я не уверен, что я здесь делаю неправильно.

Обновить:

Для ясности: значения наших переменных среды следующие:

    export CASSANDRA_HOST=cassandra.eu-west-1.amazonaws.com
   export CASSANDRA_PORT=9142
   export CASSANDRA_DATA_CENTER=eu-west-1
 

Обратите внимание, что даже когда я жестко закодировал значения в свой application.yml , проблема продолжалась.

Ответ №1:

Я думаю, что вам нужно настроить свои переменные в этом примере. Общий синтаксис для Apache Cassandra или Amazon Keyspaces таков host:port . Для Amazon Keyspaces порт всегда равен 9142.

Попробуйте сделать следующее:

 contact-points:
 - ${CASSANDRA_HOST}:${CASSANDRA_PORT}
 

или просто жестко закодируйте их сначала.

 contact-points:
 - cassandra.eu-west-1.amazonaws.com:9142
 

Ответ №2:

Так что это:

 contact-points:
    - ${CASSANDRA_HOST:"127.0.0.1"}:${CASSANDRA_PORT:"9042"}
 

Не совпадает с этим:

 Node(endPoint=cassandra.eu-west-1.amazonaws.com/3.248.244.41:9142,
 

Дважды проверьте, на каких IP-адресах и портах вещает Cassandra(обычно nodetool status используется), и настройте службу так, чтобы она не искала ее на 127.0.0.1.

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

1. Привет @Аарон , поскольку я использую пространства клавиш и не управляю своим собственным кластером, к которому у меня нет доступа nodetool status (насколько я знаю). Я обновил вопрос, добавив немного больше деталей