Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GCP上VPN上的Cassandra DC间同步_Cassandra_Kubernetes_Google Cloud Platform - Fatal编程技术网

GCP上VPN上的Cassandra DC间同步

GCP上VPN上的Cassandra DC间同步,cassandra,kubernetes,google-cloud-platform,Cassandra,Kubernetes,Google Cloud Platform,我在公司网络172.16.0.0/16和GCP 10.164.0.0/24之间有一个VPN 在GCP上,有一个cassandra集群运行着3个实例。这些实例获得动态的本地ip地址-例如10.4.7.4、10.4.6.5、10.4.3.4 我的问题:从公司网络我无法访问10.4x地址,因为隧道仅适用于10.164.0.0/24 我尝试在10.164.0.100上设置一个LB服务,后面是cassandra节点。这不起作用:当我将ip地址配置为本地集群上的种子节点时,它会从10.4.x ip地址中的一

我在公司网络172.16.0.0/16和GCP 10.164.0.0/24之间有一个VPN

在GCP上,有一个cassandra集群运行着3个实例。这些实例获得动态的本地ip地址-例如10.4.7.4、10.4.6.5、10.4.3.4

我的问题:从公司网络我无法访问10.4x地址,因为隧道仅适用于10.164.0.0/24

我尝试在10.164.0.100上设置一个LB服务,后面是cassandra节点。这不起作用:当我将ip地址配置为本地集群上的种子节点时,它会从10.4.x ip地址中的一个获得回复,而该地址在其种子列表中没有


我需要在这种情况下如何设置DC间同步的建议。

K8s分配给POD的IP地址和无法从集群外部访问的服务。一些CNI可以在集群内地址和外部网络之间创建连接,但我认为这在您的情况下不是一个好主意

您需要使用with NodePort或LoadBalancer类型公开您的Cassandra。这是另一个与Kubernetes Github相同的解决方案

如果您将添加类型为NodePort的服务,那么您的Cassandra将在所有Kubernetes节点上的选定端口上可用


如果您选择LoadBalancer,Kubernetes将为您创建云负载均衡器,它将成为Cassandra的入口点。因为您的VPC有一个VPN,我想您需要一个。

我已经创建了一个内部负载均衡器-但正如我提到的那样,这没有帮助:只要我在我的公司数据中心上配置LB的IP地址,就会建立连接并代理到底层种子。该种子使用自己的IP地址进行应答-这使得cassandra集群之间的握手失败,因为种子的内部IP地址不在种子列表中(它只包含LB IP地址)。可能的工作方式是:我可以为我的实例设置排他虚拟机,而不是在kubernetes内部运行cassandra。交叉检查表明,我可以从kubernetes中的一个POD内部访问集群中的一个VM实例。因为虚拟机可以在我想要的范围内分配静态内部IP,所以应该可以工作。缺点:cassandra实例将不再由kubernetes管理,没有自动重启等功能,您可以这样做。问题是-Cassandra宣布它绑定的地址,但实际上这不是一个外部地址,可以从外部获得。它不是一个云本地应用程序,不支持带有平衡器等的方案。您可以尝试对Cassandra pods使用主机网络模式和端口绑定1:1,然后它将向客户端公布可能有帮助的节点地址。