我有一个cassandra集群在aws上的kubernetes中运行(使用孵化器helm图表)。当我用负载均衡器公开节点时,datastax无法以它想要的方式直接连接到节点,因为它试图使用kubernetes网络内部的ip。但它仍然可以通过负载均衡器成功地读写。这是不建议,但是,所以我正在寻找一个适当的解决办法。
有没有办法让datastax与此设置正确连接?是否需要更改 cassandra.yaml
集装箱里面(恶心)?
我有一个cassandra集群在aws上的kubernetes中运行(使用孵化器helm图表)。当我用负载均衡器公开节点时,datastax无法以它想要的方式直接连接到节点,因为它试图使用kubernetes网络内部的ip。但它仍然可以通过负载均衡器成功地读写。这是不建议,但是,所以我正在寻找一个适当的解决办法。
有没有办法让datastax与此设置正确连接?是否需要更改 cassandra.yaml
集装箱里面(恶心)?
3条答案
按热度按时间31moq8wy1#
您可以创建一个kubernetes服务来公开部署或statefulset中的pod。服务可以是
NodePort
或者LoadBalancer
端口,以便您可以从外部访问。您还必须添加
Selector
在您的服务和部署/状态集上,以便您的服务可以附加正确的Endpoints
laawzig22#
一种选择是在驱动程序处使用地址转换器:
https://docs.datastax.com/en/developer/java-driver/3.5/manual/address_resolution/
但是请注意,您将失去驱动程序端的功能,如令牌感知负载平衡等。
最好的方法是提供从应用程序到所有c*节点的直接连接,这样它就可以建立到每个节点的连接。
6l7fqoea3#
首先。不能将loadbalancer用于此目的。
将服务设置为:
节点端口将在kubernetes集群之外可用。节点端口必须在30000-32767之间。
从datastax驱动程序,连接到k8s\u node\u ip:nodeport(不是pod ip)。