Amazon ec2 与EC2MultipregionsNitch的Cassandra模式协议
我被我的多数据中心cassandra集群的一个问题难住了。这是一个全新的六节点集群(三个在欧盟西部,三个在美国西部2)。安全组的配置使得每个节点都可以与其他节点的外部IP通信。侦听地址定义为本地VPC IP,广播地址设置为每个节点的公共IP 一切似乎都很好:Amazon ec2 与EC2MultipregionsNitch的Cassandra模式协议,amazon-ec2,cassandra,astyanax,amazon-vpc,Amazon Ec2,Cassandra,Astyanax,Amazon Vpc,我被我的多数据中心cassandra集群的一个问题难住了。这是一个全新的六节点集群(三个在欧盟西部,三个在美国西部2)。安全组的配置使得每个节点都可以与其他节点的外部IP通信。侦听地址定义为本地VPC IP,广播地址设置为每个节点的公共IP 一切似乎都很好: Datacenter: us-west-2 ===================== Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Loa
Datacenter: us-west-2
=====================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Owns (effective) Host ID Token Rack
UN (public ip) 121.3 KB 100.0% b15c18bf-1689-4308-bbe2-d36d38f7c8ea -9103428429654321414 2b
UN (public ip) 46.57 KB 100.0% 89378b79-4228-4b44-a3e3-c6d2f3bbd368 -9174198879812166340 2b
UN (public ip) 46.58 KB 100.0% 4cbd586f-963c-4339-abaa-af313e023abe -9223053993127788404 2b
Datacenter: eu-west
===================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Owns (effective) Host ID Token Rack
UN (public ip) 46.59 KB 100.0% 2aad2d39-0099-4ae3-ae46-a1558b1b657c -9163190464402129696 1c
UN (public ip) 98.55 KB 100.0% 94748d93-cf56-4cde-8b44-f75d17b41924 -9211541808465956929 1c
UN (public ip) 84.5 KB 100.0% 3cdeba13-3026-4a1b-a8d1-63eef25049cb -9196529642979836746 1c
因此,我创建了所需的键空间
但是,当我尝试将我的thrift应用程序连接到集群时,我发现Astyanax出现以下错误:
Caused by: com.netflix.astyanax.connectionpool.exceptions.SchemaDisagreementException:
SchemaDisagreementException: [host=(internal ip):9160, latency=10002(10007),
attempts=1] Can't change schema due to pending schema agreement
我认为这是因为新的键空间没有正确地复制到其他节点,但我不知道为什么。如果我运行nodetool descripebcluster
,它会给出以下信息(请记住,我使用的是EC2MultipregionsNitch,但出于某种原因,它显示为DynamicEndpointSnitch):
在每个节点上都是一样的——它认为自己无法访问。这在技术上是正确的;在EC2 VPC中,由于NAT,节点不可能使用其公共IP与其自身通信。但是,我不确定这是否导致了我的模式不一致问题,如果是,我不确定是否有一个简单的解决方案
任何洞见,谢谢 如本文所述
你能尝试使用NTP同步时钟吗
来自AWS文件-
配置网络时间协议(NTP)
默认情况下,在Amazon Linux实例上配置网络时间协议(NTP);但是,实例需要访问Internet才能使用标准NTP配置。本节中的过程说明如何验证默认NTP配置是否正常工作。如果您的实例无法访问Internet,则需要配置NTP以查询专用网络中的其他服务器,以保持准确的时间
可能对于EC2 VPC,您需要配置NTP以使用AWS时间服务器(x.amazon.pool.NTP.org)
Cluster Information:
Name: mycluster_multiregion
Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions:
UNREACHABLE: [(public IP of this node)]
f9de7b22-1486-37c6-8487-801 [(list of other node public IPs)]