Cassandra节点出现在不同的数据中心

时间:2016-01-26 09:52:22

标签: cassandra yaml nosql

我在Cassandra中有三个节点出现问题,每个节点都在一台计算机上,因为我正在尝试建立我的第一个Cassandra结构。我已经在Datastax文档中设置了所有内容,并且我在每台机器的不同cassandra.yaml中具有相同的配置(更改相对的ips)。在配置所有内容之后,每台计算机都将其视为DN,每台计算机(localhost)显示为UN,不同之处在于.101计算机中我可以看到两个不同的数据中心,而在其他计算机中只能看到一个数据中心出现。

所以当我输入

时,我的192.168.1.101机器
sudo nodetool status

我得到了这个输出:

Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens       Owns    Host ID                               Rack
DN  192.168.1.200  ?          256          ?       968d5d1e-a113-40ce-9521-e392a927ea5e  r1
DN  192.168.1.102  ?          256          ?       fc5c2dbe-8834-4040-9e77-c3d8199b6767  r1
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens       Owns    Host ID                               Rack
UN  127.0.0.1      446.13 KB  256          ?       6d28d540-2b44-4522-8612-b5f70a3d7d52  rack1

当我输入" nodetool status"在另外两台机器中,我得到了这个输出:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens       Owns    Host ID                               Rack
DN  192.168.1.200  ?          256          ?       968d5d1e-a113-40ce-9521-e392a927ea5e  rack1
UN  127.0.0.1      506,04 KB  256          ?       fc5c2dbe-8834-4040-9e77-c3d8199b6767  rack1
DN  192.168.1.101  ?          256          ?       6d28d540-2b44-4522-8612-b5f70a3d7d52  rack1

在OpsCenter中,我只能看到我的192.168.1.101机器:

OpsCenter displaying only one node

...这让我觉得这台机器和其他机器的yaml文件中有些奇怪的东西,但我已经多次检查过,而且其他计算机的配置似乎相同。 Enpoint_snitch设置为" GossipingPropertyFileSnitch"。

有关如何解决所有其他节点显示为Down Normal的原因以及为什么我将获得两个数据中心的任何提示都会受到高度关注。这让我发疯了!

感谢阅读。

2 个答案:

答案 0 :(得分:0)

  

有关如何解决所有其他节点显示为Down Normal的原因以及为什么我将获得两个数据中心的任何提示都会受到高度关注。这让我发疯了!

在每台计算机上,编辑 $ CASSANDRA_HOME / conf / cassandra-rackdc.properties 文件进行设置:

ko.bindingHandlers.formatDate = {
    update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        var value = valueAccessor();
        var newValueAccessor = ko.unwrap(value);
        var dt = new Date(newValueAccessor);
        if (newValueAccessor != null)
            $(element).text(dt.toLocaleDateString());
    }
};

nodetool status 表示您为2个节点(DC1而不是dc1)设置了错误的DC名称。它是区分大小写

答案 1 :(得分:0)

看起来有些安装的节点已经死了,所以我删除了每个节点中不是本地机器的节点,即:

nodetool removenode 968d5d1e-a113-40ce-9521-e392a927ea5e
nodetool removenode fc5c2dbe-8834-4040-9e77-c3d8199b6767

之后,当我执行nodetools status

时,我得到了正确的输出
[machine1]~$ sudo nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns    Host ID                               Rack
UN  127.0.0.1  286.93 KB  256          ?       6d28d540-2b44-4522-8612-b5f70a3d7d52  rack1


[machine2]~$ sudo nodetool status
Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns    Host ID                               Rack
UN  127.0.0.1  268.45 KB  256          ?       fc5c2dbe-8834-4040-9e77-c3d8199b6767  rack1

确保参数cluster_name,seeds,listen_address和rpc_address是正确的。

cluster_name: 'Test Cluster'
seeds: "192.168.1.101, 192.168.1.102"
listen_address: 192.168.1.101
rpc_address: 192.168.1.101

将listen_address和rpc_address更改为相应cassandra.yaml文件中每台计算机的相应ip。

之后我得到了正确的输出(我现在只使用2台机器用于节点):

Datacenter: dc1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.1.101  309.13 KB  256          51.6%             6d28d540-2b44-4522-8612-b5f70a3d7d52  rack1
UN  192.168.1.102  257.15 KB  256          48.4%             fc5c2dbe-8834-4040-9e77-c3d8199b6767  rack1