You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data Cassandra连接AWS Keyspace时报NoHostAvailableException异常

问题排查与解决方案

1. 优先检查驱动版本兼容性

你报错中出现的com.datastax.driver.core.exceptions.NoHostAvailableException属于Datastax Java Driver 3.x的类,但你提供的application.conf是Driver 4.x的配置格式,3.x驱动完全不会识别该配置文件,导致你写的SSL、认证、负载均衡策略全部不生效,这是最常见的根因。
如果你的Spring Data Cassandra版本默认依赖3.x驱动,直接删除无效的application.conf,统一在application.properties中完成配置即可。如果要使用4.x驱动,需要手动排除Spring Data依赖中的3.x驱动,单独引入4.x版本的驱动包。

2. 修正3.x驱动的必要配置

你当前的application.properties缺少几个必填项:

  • 强制开启SSL:AWS Keyspaces只允许SSL连接,3.x驱动默认不会开启SSL,需要显式配置
  • 修正集群名称:AWS Keyspaces的集群名称是固定值,不是自定义名称,必须填Amazon Keyspaces for Apache Cassandra
  • 明确指定本地数据中心:必须和你使用的AWS区域完全匹配

修正后的application.properties示例:

spring.data.cassandra.contact-points=cassandra.us-east-2.amazonaws.com
spring.data.cassandra.port=9142
spring.data.cassandra.cluster-name=Amazon Keyspaces for Apache Cassandra
spring.data.cassandra.username=<你的AWS访问密钥ID>
spring.data.cassandra.password=<你的AWS秘密访问密钥>
spring.data.cassandra.ssl=true
spring.data.cassandra.local-datacenter=us-east-2

3. 验证truststore有效性

执行以下命令验证你生成的JKS信任库是否正确导入了AWS根证书,密码是否匹配:

keytool -list -v -keystore /home/centos/keyspaces/cassandra_truststore.jks

如果证书不存在或密码错误,重新生成信任库:

keytool -importcert -alias AmazonKeyspaces -file /home/centos/keyspaces/sf-class2-root.crt -keystore cassandra_truststore.jks -storepass <你设置的信任库密码>

4. 验证权限与网络配置

  • 确认你使用的AWS访问密钥对所属的IAM用户,至少拥有AmazonKeyspacesReadOnlyAccess或对应Keyspace的操作权限
  • 确认你实例所在的安全组出站规则放开了9142端口的TCP访问,没有网络ACL拦截
  • 确认你填写的区域和服务端点匹配,不要填错区域

内容的提问来源于stack exchange,提问作者Abhinab Kanrar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 02:51:04