python - 多节点 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移除
解决方案
此错误的最可能原因如下(我不能 100% 确定,因为我们需要有关您的设置的更多信息) - 您将负载均衡器作为联系点,此名称被解析为属于的多个 IP 地址到不同 Cassandra 数据中心的 Cassandra 节点。通常这不是推荐的设置 - 您需要改为指向节点。您仍然可以使用不同数据中心中节点的 IP 地址,但在这种情况下,您需要将local_dc
参数传递给Cluster
构造函数(如上一条消息中所述)。
在消息中看到的另一个问题是,一些节点正在宣布私有 AWS 地址,而不是使用公共 IP 地址进行广播(如此处所述)。
推荐阅读
- laravel - 如何在控制器中获取用户角色数据并显示 laravel
- reactjs - 如何在组件之间传输数据 - 反应?
- powerbi - 按列计算持续时间
- mysql - MySQL - 插入时以前缀作为主键的自动增量
- ionic-framework - 如何在ionic 3中更改启动画面上的微调器
- python - 查找数据框的累积回报
- hibernate - Apache Phoenix 的 Spring 数据源
- java - 为项目、项目阶段和阶段模板保持状态(TO_DO、IN_PROGRESS、DONE)的最佳方式是什么
- angular - 垫旋转器未显示
- javascript - 用于 jquery 的 Play 商店应用程序详细信息