Azure托管Cassandra集群无公网IP,不同VM上的Java程序如何连接?
Azure 托管 Apache Cassandra 集群与 Java 程序 VM 的连通方案
网络配置要求
Azure Managed Instance for Apache Cassandra 无公网IP为默认设计,仅允许同VNet或对等VNet内的资源访问,你需要先完成网络对齐:
- 若Java程序所在VM与Cassandra集群部署在同一区域的同一VNet,无需额外网络配置,可直接通信。
- 若两者属于同一区域不同VNet、或跨区域部署,需要先配置VNet对等连接,确保两端VNet地址段无冲突,且对等连接开启双向流量通行权限。
通信使用的IP地址
直接使用集群节点分配的私有IP即可,你可以在集群配置页的节点列表中查到3个节点的全部私有IP,建议Java驱动配置时填写所有节点的私有IP,避免单节点故障导致连接失败。
Java 驱动配置注意事项
- 集群默认开放9042端口用于CQL通信,你需要分别检查Java VM所属子网、Cassandra集群所属子网的NSG规则,放开9042端口的入站和出站流量。
- 若你开启了集群TLS加密(默认开启),驱动配置中需要增加TLS相关参数,参考配置示例如下:
import com.datastax.oss.driver.api.core.CqlSession; import java.net.InetSocketAddress; import javax.net.ssl.SSLContext; public class CassandraConnectTest { public static void main(String[] args) throws Exception { CqlSession session = CqlSession.builder() // 替换为你的三个节点私有IP .addContactPoint(new InetSocketAddress("10.x.x.1", 9042)) .addContactPoint(new InetSocketAddress("10.x.x.2", 9042)) .addContactPoint(new InetSocketAddress("10.x.x.3", 9042)) // 替换为集群实际的数据中心名称,可在集群概览页查询 .withLocalDatacenter("China East 2") // 替换为你创建集群时设置的管理员账号密码 .withAuthCredentials("cassandra", "your_password") // 开启TLS适配 .withSslContext(SSLContext.getDefault()) .build(); System.out.println("连接成功,集群版本:" + session.getContext().getMetadata().getCassandraVersion()); session.close(); } }
集群配置界面参考

内容的提问来源于stack exchange,提问作者Sumeet Kumar Yadav
相关产品推荐
相关产品推荐

