0

我正在运行一个 Spring Boot 应用程序并使用 Spring Boot cassandra 连接到键空间。以下是正在使用的属性:

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

spring.data.cassandra.port=9142

spring.data.cassandra.ssl=真

我将 cassandra 信任库密钥作为 vm 参数传递。在我的本地开发环境中,它运行良好,没有任何问题。

当我创建一个具有完全相同 cassandra 配置的 docker 映像并将其部署在 AWS 云中(使用 ECS)时,它每次都会失败,并出现以下异常 Invocation of init 方法失败;嵌套异常是 com.datastax.driver.core.exceptions.NoHostAvailableException:所有主机尝试查询失败(尝试:cassandra.us-east-2.amazonaws.com/3.12.23.159:9142(com.datastax.driver .core.exceptions.TransportException:cassandra.us-east-2.amazonaws.com/3.12.23.159:9142 无法连接)-

在这里,我还通过启用日志将 trustore 密钥作为 vm 参数和验证证书传递。有人可以帮我解决这个问题。

4

1 回答 1

1

使用以下容器作为如何设置容器的参考

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

对于 Java 应用程序,您可能需要使用附加信息将 pem 添加到信任库


RUN mkdir $CQLSHRC_HOME
RUN yum install -y openssl && \
    yum install -y java-1.8.0-openjdk && \
    yum install -y tar

#create jks truststore
RUN openssl x509 -outform der -in $CQLSHRC_HOME/AmazonRootCA1.pem -out temp_file.der && \
    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


于 2021-01-29T15:08:58.423 回答