我正在尝试使用以下代码从本地主机连接到 DAX:
ClientConfig daxConfig = new ClientConfig()
.withEndpoints("dax-cluster.yhdqu5.clustercfg.dax.use1.cache.amazonaws.com:8111");
AmazonDaxClient client = new ClusterDaxClient(daxConfig);
集群已启动并运行,我在公共子网中创建它并在安全组中打开端口 8111,但尽管如此,我收到以下异常:
Caused by: java.io.IOException: No endpoints available
at com.amazon.dax.client.cluster.Cluster.leaderClient(Cluster.java:560)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$3.getClient(ClusterDaxClient.java:154)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$RetryHandler.makeRequestWithRetries(ClusterDaxClient.java:632)
... 10 more
Suppressed: java.io.IOException: No endpoints available
... 13 more
Suppressed: java.io.IOException: No endpoints available
... 13 more
StackOverflow 上的其他答案表明这可能是由错误配置的安全组引起的,为了测试它,我在同一个 VPC/子网中启动了一个实例并使用了同一个安全组,我能够通过 ssh 连接到这个主机(第 22 和第8111-st 端口在安全组中打开)。所以应该还有其他一些与 DAX 相关的原因。
我机器上的防火墙已关闭。
但是,如果我 ssh 到 EC2 中的一台机器,那么我可以连接到 DAX 集群:
[ec2-user@ip-10-0-0-44 ~]$ nc -z dax-cluster.yhdqu5.clustercfg.dax.use1.cache.amazonaws.com 8111
Connection to dax-cluster.yhdqu5.clustercfg.dax.use1.cache.amazonaws.com 8111 port [tcp/*] succeeded!