Wir erstellen zur Laufzeit einen Cassandra-Cluster und Informationen wie "clustername" und IP-Adressen von "seeds" stehen nur zur Laufzeit zur Verfügung. Gibt es einen Java-Wrapper für cassandra.yaml, der Setter und Getter für cassandra.yaml erlaubt und auf Festplatte speichert? Ich verstehe, dass ich selbst immer einen Wrapper erstellen kann, aber wissen wollte, ob es schon einen gibt.Programmatische Modifikationsweise cassandra.yaml
Antwort
Gibt es einen Java-Wrapper für cassandra.yaml, der Setter und Getter für cassandra.yaml erlaubt und auf Festplatte speichert?
Nicht dass ich mir dessen bewusst bin. Obwohl das eine gute Idee für ein OpenSource-Projekt ist!
Ich habe dies in der Vergangenheit ein paar verschiedene Möglichkeiten getan. Einer ist mit einer Kombination von Chef und consul-template. Im Wesentlichen enthält Ihre cassandra.yaml variable Platzhalter, die bei der Ausführung Ihres Bereitstellungsrezepts mit einer Kombination aus Standardattributen (Chef) und clusterspezifischen Einstellungen (Konsul-Vorlage) gefüllt werden.
Ich habe dies auch mit einem Bash-Skript mit sed
(für einige unserer Nicht-Chef-Umgebungen) getan. Dies ist ein Auszug aus einem Skript, das ich eine DataStax Enterprise-Installation auf einem Apache Cassandra (Open Source) zu migrieren, schrieb installieren:
#!/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
Im Wesentlichen hier, Sie tun eine Regex-Ersatz für bestimmte yaml Eigenschaftseinstellungen. Insbesondere musste ich den Snitch und die Speicherorte des Keystore/Truststore aktualisieren. Es ist nicht schön, aber es funktioniert.
- 1. Programmatische Datenbindung
- 2. Programmatische Filterung RadGridView
- 3. JQuery Multiselect programmatische Auswahl
- 4. Programmatische Interaktion mit gdbserver
- 5. WPF - Programmatische auf einem
- 6. Programmatische Gradientenstopps mit Javascript
- 7. DotNetOpenID Programmatische Anmeldung
- 8. Programmatische Änderung der Bildschirmauflösung?
- 9. Was ist der Unterschied zwischen broadcast_address und broadcast_rpc_address in cassandra.yaml?
- 10. Hibernate Search programmatische API HTMLStripCharFilterFactory
- 11. ActionScript 3: Glatte programmatische Animation
- 12. WPF Programmatische Bindung Zwei Wege
- 13. Programmatische Steuerung der Python-Optimierung?
- 14. Programmatische Verwendung von Spring Security
- 15. programmatische screenshot falsche nächste Nachbarin
- 16. Formularressourcen für programmatische Zeichenfolgen verwenden?
- 17. Programmatische SLI- und CrossFireX-Erkennung
- 18. Programmatische Nicht-Tail-Rekursion Beseitigung
- 19. programmatische Klick in Android WebView
- 20. Office 365 API programmatische Authentifizierung
- 21. Programmatische Änderung der WinXP-Sprache
- 22. Programmatische Änderung der Hystrix Eigenschaften
- 23. programmatische WPF-Bindung schlägt fehl
- 24. Hibernate programmatische Konfiguration nicht funktioniert
- 25. Flex: Gibt es eine schmerzfreie programmatische Datenbindung?
- 26. Programmatische Möglichkeit, bestimmte Websites vorübergehend zu blockieren?
- 27. Programmatische Überprüfung der Zertifikatskette mit OpenSSL API
- 28. Programmatische Korrektur der Kameraneigung in einem Positioniersystem
- 29. programmatische Anmeldung mit dem .net-Mitgliedschaftsanbieter
- 30. Programmatische Anmeldung bei Google Data API
Dank Aaron, das ist nah dran, wie ich es heute mache. Ich habe einen Dummy cassandra.yaml mit Platzhaltern wie __TRUST_STORE__ erstellt und dann zur Laufzeit diese Platzhalter durch reale Werte ersetzt. Es sieht nur hässlich aus und ist anfällig für Fehler. Ich mag deine Idee, dafür ein Open-Source-Java-Projekt zu erstellen. Ich werde es tun, wenn es keins gibt. – Apoorv