如何在集群中拥有类似的cassandra.yaml?

dgsult0t  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(345)

我想要配置一个cassandra集群,并且我想要cassandra.yaml配置文件在节点之间是相同的。问题是每个节点上的listen\u地址必须不同。由于这是一个yaml文件,是否可以包含另一个yaml文件?因此,主cassandra.yaml是相同的,只是listen\u address.yaml在集群中不同。
我不确定yaml语法,但我知道它可以包含文件-cassandra会使用它吗?
[剪]。。。
请听地址:!包括listen\u address.yaml。。。
以上这些对我不起作用。Cassandra有可能吗?

vybvopom

vybvopom1#

对于alex来说,您会发现使用实际的部署框架要容易得多。
在实现我们的之前,我使用一个简单的bash脚本进行部署。本质上,相同的yaml(和其他配置文件)被分发到每个节点(通过scp)。我预先编辑了文件,为需要更改的属性设置了常量:


# cassandra.yaml

listen_address: INTERNALIP
broadcast_address: EXTERNALIP
rpc_address: INTERNALIP
broadcast_rpc_address: EXTERNALIP

# cassandra-rackdc.properties

dc=DATACENTER
rack=AZONE

然后我运行bash脚本,用一个 sed -基于正则表达式,如下所示:

INTERNALTP=$1
EXTERNALIP=$2
DATACENTER=$3
AZONE=$4

# set listen_address to internal IP

sed -i "s/INTERNALIP/$INTERNALIP/g" $CASSANDRA_HOME/conf/cassandra.yaml

# set broadcast_rpc_address to external IP

sed -i "s/EXTERNALIP/$EXTERNALIP/g" $CASSANDRA_HOME/conf/cassandra.yaml

# set AZONE and DATACENTER in rackdc properties

sed -i "s/DATACENTER/$DATACENTER/" $CASSANDRA_HOME/conf/cassandra-rackdc.properties
sed -i "s/AZONE/$AZONE/" $CASSANDRA_HOME/conf/cassandra-rackdc.properties
wz1wpwve

wz1wpwve2#

直接在yaml文件中包含include是不可能的,但是没有什么可以阻止您使用ansible/puppet/chef或任何其他框架来处理的模板 cassandra.yaml 文件,并替换变量以生成 cassandra.yaml .

相关问题