我们在AWS上托管Cassandra 2.0.2群集。我们最近开始从普通驱动器升级到SSD驱动器,通过引导新节点和退役旧节点。它运行得相当好,除了两个节点永远停止退役。现在,在新的6个节点运行后,我们注意到一些旧的工具,使用phpcassa停止工作。安全组没有任何改变,所有端口TCP / UDP都是打开的,telnet可以通过9160连接,cqlsh可以“使用”一个集群,选择数据,然而,'描述集群'失败,在cli中,'show keyspaces'也失败了 - 失败,我的意思是永远不会退出提示,也不会返回任何结果。查询在新节点中运行良好,但即使是等待退役的旧节点也无法执行。生产系统,也使用phpcassa,执行正常的数据请求 - 它工作正常。
所有cassandras都具有相同的配置,相同的版本,以及安装它们的相同包。由于种子节点更改,最近重新启动了所有节点。
版本:
连接### ####。compute-1.amazonaws.com:9160。 [cqlsh 4.1.0 | Cassandra 2.0.2 | CQL规范3.1.1 |节俭协议19.38.0]
我的想法已经用完了。任何提示都将不胜感激。
经过一些随机调查,这里有更详细的描述。
如果我cassandra-cli到任何机器,并且“显示键空间”,它就可以工作。
如果我将cassandra-cli连接到远程计算机并执行“显示键空间”,它将无限期挂起。
如果我cqlsh到远程cassandra,并做一个描述键空间,它会挂起。 ctrl + c,重复相同的查询,立即响应。
如果我cqlsh到本地cassandra,并做一个描述键空间,它就可以工作。
如果我cqlsh到本地cassandra,并从Keyspace限制x执行select *,它将返回一定数量的数据。我能够以760的限制返回数据,761会失败。
如果我全部保持一致,并选择相同,它就会挂起。
如果我进行跟踪,不同的机器会返回数据,但有时source_elapsed为“null”
不要忘记,经过多次尝试后,查询群集的应用程序有时会获得结果。
进一步播放引入了两个节点的失败引导失败,一个挂在引导程序上4天,最终失败,可能是由于滚动重启,另一个在2天后失败。修复不起作用,并引入“Stream failed”错误,以及“Thread Thread [StorageServiceShutdownHook,5,main] java.lang.NullPointerException”中的“Exception”。此外,执行修复后,开始获取“读取无效帧大小为0.您是否在客户端使用tframedtransport?”,所以..
将hsha的rpc_server_type切换为同步。所有问题都没了。我们和hsha一起工作了好几个月。
如果有人也偶然发现: http://planetcassandra.org/blog/post/hsha-thrift-server-corruption-cassandra-2-0-2-5/
答案 0 :(得分:3)
在cassandra.yaml
:
将rpc_server_type
从hsha
切换为sync
。