#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