使用命令/脚本在cassandra.yaml文件中设置种子IP

时间:2016-03-07 22:02:58

标签: cassandra aws-ec2

我正在使用AWS CloudFormation创建一个3节点的Datastax Cassandra集群。在我所有节点上的ec2-user主目录中,我在文本文件(seeds.txt)中创建种子IP。正在按预期创建群集。 Node1是种子节点。但是Node2和Node3正在将它们各自的私有IP设置为种子IP。有没有人知道在node2和node3上的cassandra.yaml文件中设置种子IP的脚本/命令? 我已经尝试使用sed命令从ec2-user主目录中获取cats seeds.txt并修改cassandra.yaml文件,但它不起作用。这是我的cassandra.yaml文件的一部分,

seed_provider:
    # Addresses of hosts that are deemed contact points.
    # Cassandra nodes use this list of hosts to find each other and learn
    # the topology of the ring.  You must change this if you are running
    # multiple nodes!
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          # seeds is actually a comma-delimited list of addresses.
          # Ex: "<ip1>,<ip2>,<ip3>"
          - seeds: "1.2.3.4"

2 个答案:

答案 0 :(得分:0)

我们有类似的设置并使用了etcd和etcd-seed provider以便找出我们的种子节点。

这意味着您必须在启动期间在etcd群集中注册种子节点。我们通过调整cassandra的启动脚本来解决这个问题。

见(第62行): https://github.com/zalando/stups-cassandra/blob/master/stups-cassandra.sh

最诚挚的问候,

马尔特

答案 1 :(得分:0)

你可以看看是什么 https://github.com/riptano/ComboAMI正在为DS Cassandra AMI做准备。 简而言之,他们使用的是集中式反射器服务,所有节点都通过HTTP连接到该服务。