如何解决AWS Keyspace 的 Spring Data Cassandra 连接问题
我有一个简单的基于 crud 的应用程序,其中 Apache Cassandra 用作默认数据库。我已将 Spring Data Cassandra 用于 Cassandra 连接。
现在,我正在尝试使用 Cassandra java 驱动程序很好支持的 AWS Keyspace。我已按照 this doc 进行配置。
但是,每当我启动应用程序时,我总是遇到以下异常。
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query Failed (tried: cassandra.us-east-2.amazonaws.com/<ip>:9142 (com.datastax.driver.core.exceptions.OperationTimedOutException: [cassandra.us-east-2.amazonaws.com/<ip>:9142] Operation timed out))
我在 application.properties 中添加了以下道具:
spring.data.cassandra.contact-points=cassandra.us-east-2.amazonaws.com
spring.data.cassandra.port=9142
spring.data.cassandra.cluster-name=<name>
spring.data.cassandra.username=<username>
spring.data.cassandra.password=<password>
我还尝试通过添加道具来使用 application.conf:
datastax-java-driver {
basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"]
advanced.auth-provider{
class = PlainTextAuthProvider
username = "<username>"
password = "<password>"
}
basic.load-balancing-policy {
local-datacenter = "us-east-2"
}
advanced.ssl-engine-factory {
class = DefaultSslEngineFactory
truststore-path = "/home/centos/keyspaces/cassandra_truststore.jks"
truststore-password = "<password>"
}
}
但结果还是一样。请注意,trustStore 配置也被添加为 jvm 参数:
javax.net.ssl.trustStore=/home/centos/keyspaces/cassandra_truststore.jks
javax.net.ssl.trustStorePassword=<password>
奇怪的是,从同一台机器上我可以 telnet 到这个 Keyspace 主机端口,甚至可以使用以下命令直接连接到该实例:
conda activate python2
export SSL_CERTFILE="/home/centos/keyspaces/sf-class2-root.crt"
cqlsh cassandra.us-east-2.amazonaws.com 9142 -u <username> -p <password> --ssl
解决方法
很抱歉您很难连接。您发布的错误让我觉得连接不正确。
这是一个 github 页面,其中包含有关如何使用 Spring Data for Cassandra 连接到 Amazon Keypspaces 的代码示例:https://github.com/aws-samples/amazon-keyspaces-spring-app-example/blob/main/src/main/java/com/aws/mcs/springsample/KeyspacesSpringApplication.java
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。