0

我有一个 3 节点系统,在该系统上我托管了一个具有 3 个数据库服务器的基本 ArangoDB 集群。我正在使用 Python-arango 库,它表示要连接到集群,我们需要向 ArangoClient 类提供端口为 8529 的 IP 列表。我的 Python 代码在不同的 pod 中运行。

使用 Arangosh,我可以使用 localhost:8529 配置访问协调器 pod。但是,在 Arangosh 上,我一次只能访问一个协调器 pod。由于 Arango 安排是一个集群,我想以循环方式一次连接到所有三个协调器 pod。现在根据MongoDB的 Kubernetes 文档,我可以将 <pod_name.service_name> 的列表提供给 MongoClient 并且它会连接起来。我正在尝试与 Arango 协调器 pod 类似的东西,但这似乎不起作用。Arango 文档中的示例仅指向编写“localhost-1”、“localhost-2”等。

总而言之,手头的问题是我不知道如何识别 Arango 协调器 pod 的 IP。我尝试使用协调器的内部 IP,尝试使用http://pod_name.8529,并尝试使用 Web UI 中显示的协调器的端点(以 ssl 开头,但我已将 ssl 替换为http),但没有成功。

将不胜感激在这方面的任何帮助。如果需要一些额外的信息,请告诉我。自从一个星期以来,我一直被这个问题困扰。

4

1 回答 1

0

如果你遵循这个:https ://www.arangodb.com/2018/12/deploying-arangodb-3-4-on-kubernetes/

有 YAML 配置文件正在创建多个 POD。您的应用程序应如何与 ArragoDB 连接使用Kubernetes service.

因此,您的应用程序将连接到 Kubernetes 服务,默认情况下,kubernets 服务会管理 RoundRobin 负载平衡。

在示例中,您可以看到它正在创建三个服务

my-arangodb-cluster          ClusterIP      10.11.247.191   <none>           8529/TCP         46m
my-arangodb-cluster-ea       LoadBalancer   10.11.241.253   35.239.220.180   8529:31194/TCP   46m
my-arangodb-cluster-int      ClusterIP      None            <none>           8529/TCP         46m

服务my-arangodb-cluster-ea公开。虽然my-arangodb-cluster可以使用应用程序在内部访问服务。

您的流程将类似于

Application > Arango service (Round robin) > Arango Pods   
于 2021-06-11T14:06:37.457 回答