OpsCenter 默认本机客户端连接和负载分配?

OpsCenter default native client connection and load distribution?

如果我们在具有 2 个 DC 的 OpsCenter 集群(主要和次要)中有 8 个节点。我们有近 30 个节点连接到这个 OpsCenter,通过 datastax 代理进行监控。我的问题是所有 30 个节点将建立几乎相等的连接和负载共享(将指标数据写入 OpsCenter 集群)?还是会与主要 OpsCenter 集群建立更高的连接并降低到待机状态?任何参考文件。提前致谢。

cluster_name.conf 文件的 storage_cassandra 部分,特别是 seed_hosts、local_dc_pref 和 used_hosts_per_remote_dc,控制 opscenterd 如何连接到存储集群.就 opscenterd 进程本身而言,记录的行为是正确的。但是,代理的行为是不同的。

Opscenterd 将 storage_cassandra seed_hosts 的值传递给相关集群的代理,这是每个代理将用于初始联系点的值,除非被 hosts 中的设置覆盖代理的本地 address.yaml。 local_dc_pref 和 used_hosts_per_remote_dc 设置不会传递给代理并且对代理的行为没有影响。

代理使用具有令牌感知的defaultLoadBalancingPolicy of the Java Driver, which is DCAwareRoundRobinPolicy。本地 DC 未显式传递给驱动程序,因此它会将本地 DC 视为它成功连接到的第一个主机的 DC。这意味着每个代理将连接到存储集群的一个 DC 或另一个。

TL;DR:代理将连接到代理能够联系的第一个活动节点的本地 DC。不可能让一个代理连接到多个 DC。代理尝试连接到哪个节点由 cluster_name.conf 中配置的 storage_cassandra seed_hosts 决定,或者如果指定,则由代理本地 address.yaml 中配置的主机决定。因此,如果您希望一些代理连接到存储集群的一个 DC,而其他代理连接到存储的另一个 DC,您将需要覆盖代理 address.yaml 中的主机,并确保指定的第一个主机属于您希望该代理连接到的 DC。

请注意,如果未使用单独的存储集群,则代理仅连接到它正在监视的本地节点。