cassandra集群配置

这里以两台机器AB示例,它们的IP分别为192.168.20.1192.168.20.2

        A的配置如下:

        cluster_name'FirstCluster'

        seeds: "192.168.20.1,192.168.20.2"

        listen_address: 192.168.20.1

        rpc_address: 0.0.0.0

        B的配置如下:

        cluster_name'FirstCluster'

        seeds: "192.168.20.2,192.168.20.1"

        listen_address: 192.168.20.2

        rpc_address: 0.0.0.0

        其实ABseeds配置没必要都一样,只要有其中一个配置了对方的IP,保证他们可以互相通信就可以了。因此若我们想再加入一台节点C,则我们只需要在Cseeds里加上ABIP就可以了,ABseeds不需要变。但官网推荐seeds都配置成一样的,因为这样会更健壮。假如C只写了AIP,那么若A断了,则BC也断了。因此可以的话,尽量将集群里所有节点的seeds配置成一样的。

192.168.20.1执行,若能看到两个节点ip,说明配置成功

[root@localhost ~]# apache-cassandra-1.2.1/bin/nodetool -host192.168.20.1 ring

集群里,数据会自动分布到对应的节点上,但我们可能想数据存储多个副本,那么可以设置replication_factor属性。replication_factor表示一个数据存放多少个副本,以前该属性可以在配置文件里修改,但最新的cassandra取消了这个做法,你需要启动客户端来修改。进入bin,打开客户端cassandra-cli

        connect localhost/9160;

        use DEMO;

        update keyspace DEMO with placement_strategy =  'org.apache.cassandra.locator.SimpleStrategy' and    strategy_options={replication_factor:3};

        这条语句,首先将placement_strategy从默认的NetworkTopologyStrategy修改为SimpleStrategy,然后我们才能设置replication_factor属性。

        修改完成后,数据将会自动存储多个副本在不同的节点上,第一个数据副本存储在最适合的token节点上,第二个副本的节点选择将按照第一个的token递增。

        但这个同步并不是立刻完成的,若你想立刻看它们散布副本,可以对所有节点使用repair命令。

        nodetool.bat -h <ip> repair

        此时再使用ring命令,就会发现节点的Load应该都增多了。

若集群里有新节点加入,则它们会分掉一部分的token范围,但原来已经分配好的数据却可能不会随着新token而重新分布(这里说的是集群自动分配token,如果你使用了move命令手动重新分配了token,则数据也会随之重新分布)。若你想让它们重新分布,则在加入新节点后,使用repair命令,它们会自动去索引自己的数据。而此时老节点上又存在一些不属于自己的数据,我们可以使用cleanup命令来清除冗余数据:

nodetool.bat -h <ip> cleanup

注意,你最好确认新机器可以正常工作后再使用这个命令。


你可能感兴趣的:(cassandra集群配置)