2017-05-02 3 views
3

런타임시 cassandra 클러스터를 만들고 "클러스터 이름"및 "시드"의 IP 주소는 런타임에만 사용할 수 있습니다. cassandra.yaml에 대한 setter 및 getter를 허용하고 디스크에 저장하는 cassandra.yaml의 Java 래퍼가 있습니까? 나는 래퍼를 항상 만들 수 있지만 이미 사용할 수 있는지 알고 싶었습니다.cassandra.yaml을 프로그래밍 방식으로 수정하는 방법

답변

1

cassandra.yaml에 대한 setter 및 getter를 허용하고 디스크에 저장하는 cassandra.yaml 용 Java 래퍼가 있습니까?

아니요. OpenSource 프로젝트에 대해서는 좋은 생각입니다.

나는 이것을 몇 가지 방법으로 과거에 해왔다. 하나는 요리사와 consul-template의 조합입니다. 본질적으로, 귀하의 cassandra.yaml은 배치 레서피가 실행될 때 기본 속성 (Chef)과 클러스터 특정 설정 (영사 - 템플리트)의 조합으로 채워지는 가변 자리 표시자를 포함합니다.

sed (Chef가 아닌 몇 가지 환경의 경우)을 사용하는 Bash 스크립트로이 작업을 수행했습니다. 이것은 내가 아파치 카산드라 (오픈 소스)에 DataStax Enterprise 설치를 마이그레이션 쓴 스크립트에서 발췌 설치할 수 있습니다 : 기본적으로 여기

#!/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 속성 설정에 대한 정규식 - 대체합니다. 특히, 스니치와 키 스토어/트러스트 스토어의 위치를 ​​업데이트해야했습니다. 그것은 예쁘지 않지만 작동합니다.

+0

감사합니다 아론, 내가 오늘 어떻게하고 있는지에 가깝습니다. __TRUST_STORE__와 같은 자리 표시자를 사용하여 더미 cassandra.yaml을 만든 다음 런타임에이 자리 표시자를 실제 값으로 대체합니다. 그것은 단지 추악 해 보이고 오류가 발생하기 쉽습니다. 나는 이것을위한 오픈 소스 자바 프로젝트를 만드는 것에 대한 당신의 생각을 좋아한다. 내가 없으면 해줄거야. – Apoorv

관련 문제