【问题标题】:multi node cassandra cluster - load_balancing_policy多节点 cassandra 集群 - load_balancing_policy
【发布时间】:2020-04-12 17:33:39
【问题描述】:

您好,从我的 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:Cluster.init 使用 contact_points 调用 指定,但没有 load_balancing_policy。在下一个主要版本中, 这将引发错误;请指定负载平衡策略。 (联系点= ['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)]。最后一个错误:超时

INFO:cassandra.policies:使用数据中心“datacenter1”进行 DCAwareRoundRobinPolicy(通过主机“34.217.153.0”);如果不正确,请给构造函数指定一个local_dc,或者将接触点限制在本地集群节点 INFO:cassandra.cluster:发现新的 Cassandra 主机 INFO:cassandra.cluster:发现新的 Cassandra 主机
INFO:cassandra.cluster:Cassandra 主机 52.26.34.69 已移除

【问题讨论】:

    标签: python apache-spark cassandra cassandra-3.0


    【解决方案1】:

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

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

    【讨论】: