Исключение NoHostAvailableException в пространстве ключей Amazon

#spring #spring-boot #docker #cassandra #amazon-keyspaces

#весна #spring-загрузка #docker #кассандра #amazon-keyspaces

Вопрос:

Я запускаю приложение Spring Boot и использую Spring boot cassandra для подключения к keyspace. Ниже приведены используемые свойства:

spring.data.cassandra.contact-points=cassandra.us-east-2.amazonaws.com

spring.data.cassandra.port=9142

spring.data.cassandra.ssl=true

Я передаю ключ доверенного хранилища cassandra в качестве аргумента виртуальной машины. Из моей локальной среды разработки он отлично работает без каких-либо проблем.

Когда я создал образ docker с точно такой же конфигурацией cassandra и развернул его в облаке AWS (с использованием ECS), он каждый раз завершается с ошибкой при следующем вызове исключения метода инициализации; вложенным исключением является com.datastax.driver.core.exceptions.Исключение NoHostAvailableException: все хосты, которые пытались выполнить запрос, завершились неудачно (пытались: cassandra.us-east-2.amazonaws.com/3.12.23.159:9142 (com.datastax.driver.core.исключения.Исключение TransportException: cassandra.us-east-2.amazonaws.com/3.12.23.159:9142 Не удается подключиться)-

Здесь также я передаю ключ trustore в качестве аргумента виртуальной машины и проверенный сертификат, а также включаю журнал. Может кто-нибудь, пожалуйста, помогите мне с этой проблемой.

Ответ №1:

Используйте следующий контейнер в качестве ссылки на то, как настроить контейнер

https://github.com/aws-samples/amazon-keyspaces-toolkit

Для приложений Java вам может потребоваться добавить pem в truststore с дополнительной информацией

 
RUN mkdir $CQLSHRC_HOME
RUN yum install -y openssl amp;amp; 
    yum install -y java-1.8.0-openjdk amp;amp; 
    yum install -y tar

#create jks truststore
RUN openssl x509 -outform der -in $CQLSHRC_HOME/AmazonRootCA1.pem -out temp_file.der amp;amp; 
    keytool -import -alias new-cassandra -keystore $CQLSHRC_HOME/cassandra_truststore.jks -file temp_file.der -storepass amazon -noprompt

ENV javax.net.ssl.trustStore=$CQLSHRC_HOME/cassandra_truststore.jks
ENV javax.net.ssl.trustStorePassword=amazon