编程方式修改cassandra.yaml

时间:2017-05-02 23:45:22

标签: cassandra

我们正在运行时创建一个cassandra集群,“cluster-name”等信息和“种子”的IP地址仅在运行时可用。是否有cassandra.yaml的java包装器,它允许cassandra.yaml的setter和getter并将其保存到磁盘?我知道我自己总能创建一个包装器,但想知道是否已经有一个可用的。

1 个答案:

答案 0 :(得分:1)

  

是否有cassandra.yaml的java包装器允许cassandra.yaml的setter和getter并将其保存到磁盘?

不是我知道的。虽然,这对于OpenSource项目来说是个好主意!

我过去曾采用过几种不同的方法。一个是Chef和consul-template的组合。从本质上讲,您的cassandra.yaml包含可变占位符,当您的部署配方运行时,它们由默认属性(Chef)和特定于群集的设置(consul-template)组合填充。

我还使用sed(对于我们的一些非Chef环境)使用Bash脚本完成了此操作。这是我编写的用于将DataStax Enterprise安装迁移到Apache Cassandra(开源)安装的脚本的摘录:

#!/bin/bash

cp /etc/dse/cassandra/cassandra.yaml /etc/cassandra/conf

#set GossipingPropertyFileSnitch in cassandra.yaml
sed -i 's/endpoint_snitch: com.datastax.bdp.snitch.DseDelegateSnitch/endpoint_snitch: GossipingPropertyFileSnitch/' /etc/cassandra/conf/cassandra.yaml

#set truststore location
sed -i 's/truststore: \/etc\/dse\/cassandra\//truststore: \/etc\/cassandra\/conf\//g' /etc/cassandra/conf/cassandra.yaml

#set keystore location
sed -i 's/keystore: \/etc\/dse\/cassandra\//keystore: \/etc\/cassandra\/conf\//g' /etc/cassandra/conf/cassandra.yaml

基本上,在这里,您正在为特定的yaml属性设置进行正则表达式替换。具体来说,我需要更新snitch以及keystore / truststore的位置。它并不漂亮,但它确实有效。