首页 > 解决方案 > 多节点 cassandra 集群 - load_balancing_policy

问题描述

嗨有一些问题从我的 python 连接器连接我的 cassandra

Connotor.py 包含以下代码

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
from cassandra import ReadTimeout
import os

class CassandraConnection():

    def getConnection():
        auth_provider = PlainTextAuthProvider(username ='admin', password='Dog2019')
        cluster=Cluster(['a5ad8e558c23e9a524-1196365.us-west-2.elb.amazonaws.com'], auth_provider=auth_provider)

        session = cluster.connect()
        session.set_keyspace('tonnage')
        cluster.connect()

        return session

在运行我的 python 代码时出现此错误

警告:

cassandra.cluster:集群。init调用时指定了 contact_points,但没有 load_balancing_policy。在下一个主要版本中,这将引发错误;请指定负载平衡策略。(contact_points = ['a5ad8e558c23e9a524-1196365.us-west-2.elb.amazonaws.com'],lbp = 无)

警告:

cassandra.pool:尝试重新连接到 100.100.0.3 时出错,安排在 4.0 秒内重试:[Errno None] 尝试连接到 [('100.100.0.3', 9042)]。最后一个错误:超时

警告:

cassandra.pool:尝试重新连接到 100.100.0.2 时出错,计划在 128.0 秒内重试:[Errno None] 尝试连接到 [('100.100.0.2', 9042)]。最后一个错误:超时

警告:

cassandra.pool:尝试重新连接到 100.100.0.2 时出错,计划在 4.0 秒内重试:[Errno None] 尝试连接到 [('100.100.0.2', 9042)]。最后一个错误:超时

信息:cassandra.policies:使用数据中心“datacenter1”进行 DCAwareRoundRobinPolicy(通过主机“34.217.153.0”);如果不正确,请在构造函数中指定 local_dc,或将联系点限制为本地集群节点 INFO:cassandra.cluster:New Cassandra host found INFO:cassandra.cluster:New Cassandra
host found INFO:cassandra.cluster:Cassandra host 52.26.34.69移除

标签: pythonapache-sparkcassandracassandra-3.0

解决方案


此错误的最可能原因如下(我不能 100% 确定,因为我们需要有关您的设置的更多信息) - 您将负载均衡器作为联系点,此名称被解析为属于的多个 IP 地址到不同 Cassandra 数据中心的 Cassandra 节点。通常这不是推荐的设置 - 您需要改为指向节点。您仍然可以使用不同数据中心中节点的 IP 地址,但在这种情况下,您需要将local_dc参数传递给Cluster构造函数(如上一条消息中所述)。

在消息中看到的另一个问题是,一些节点正在宣布私有 AWS 地址,而不是使用公共 IP 地址进行广播(如此处所述)。


推荐阅读