Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Apache Cassandra Grundkurs

Ein erster Cluster

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ein Cassandra-Cluster ist leicht zu initialisieren. In diesem Video sehen Sie, wie Sie mit Hilfe des Virtualisierungs-Tools Docker mehrere Nodes und damit Ihren ersten Cassandra-Cluster auf Ihrem Rechner starten.
12:38

Transkript

Mit Cassandra lässt sich leicht ein Cluster aufsetzen. Damit ich einfach und schnell mehrere Cassandra Nodes auf einer Maschine Sehen sie in diesem Video, wie ein Cluster konfiguriert werden kann. starten kann, nehme ich die Docker Toolbox zu Hilfe. Docker ist ein Tool zur Virtualisierung von Applikationen, das sie auf Linux nativ nutzen können. Sofern Sie MacOS oder Windows verwenden, könnne sie die Docker Toolbox verwenden, die im Hintergrund eine Linux VM per Virtual Box hochfährt. In dieser VM werden wir Cassandra Instanzen, verpackt in isolierte Docker Container starten. Dazu müssen sie zunächst die Docker Toolbox herunterladen und installieren Dazu gehen Sie einfach auf "docker.com/products/docker-toolbox". Ein Klick auf "Download", in meinem Fall für Windows und schon können Sie hier das aktuellste Release der Docker Toolbox herunterladen. Nachdem Sie die Docker Toolbox installiert haben und Virtual Box gleich dazu, starten Sie einmal Virtual Box und passen den Arbeitsspeicher der neu installierten Maschine an. Wir sehen hier bei der Maschine Defaults sind 1024 MB zugewiesen, und das ist etwas zu wenig für mehr als 2 Cassandra-Instanzen. Wir gehen hier in die Systemeinstellungen und schrauben einmal hoch auf 4 GB. OK. Jetzt können wir Virtual Box wieder schließen und das Docker Quickstart Terminal ausführen. Und unsere Linux VM mit vorinstallierten Docker ist fertig geladen. Jetzt wollen wir einmal die erste Instanz Cassandra ausführen. Das machen wir mit dem Befehl: "docker run". Wir benennen den Container einmal "node1". Das Image, das wir starten möchten, nennt sich "cassandra". Und einmal ausführen. Beim allerersten Start kann es auch einige Minuten dauern, da das Cassandra-Image erst einmal heruntergeladen werden muss. "docker ps" ist der Befehl, um zu sehen, welche Container gerade laufen. Und wir sehen, es läuft ein Container mit dem Image "cassandra", seit einer halben Minute knapp, mit dem Namen "node1". Cassandra bringt eine Applikation namens "Nodetool" mit, um den Zustand eines Clusters zu betrachten. Das können wir ausführen mit "docker exec -ti" "node1" "nodetool status" Und wir sehen, wir haben momentan ein "Datacenter: datacenter1" Mit insgesamt einer Node. Diese Node befindet sich im Zustand UN, also einmal "up". U für "up" und N für "normal", mit der lokalen Adresse 172.17.0.2, insgesamt 256 Tokens. Das sind also 256 Virtual Nodes. Und von der Token-Range, gehört 100% dieser Node. Außerdem befindet sich die Node im Rack1. Was passiert, wenn wir eine weitere Node hinzufügen? Dazu nehmen wir den Befehl von vorhin, "docker run", diesmal aber mit "node2". Und wir müssen jetzt eine Umgebungsvariable hinzufügen, diese nennt sich "CASSANDRA_SEEDS". Die setzen wir auf die IP des gerade erstellten Containers. Und einmal ausführen. Sehen wir, was das "nodetool status" uns dazu sagt. Noch nichts. Noch einmal aktualisieren. Und wir sehen, die zweite Node ist tatsächlich auch schon in das Cluster gejoined. Momentan mit dem Zustand UJ. U für "up" und J für "joining", also noch noch komplett fertig gejoined. Probieren wir noch einmal "nodetool status". Und wir sehen immer noch "joining". Und die Node ist auch im Cluster fertig angekommen. Auch mit 256 Virtual Nodes. Und auch noch 100%. Jetzt können wir mal in die CQL-Shell von einer Node gehen. "docker exec - ti. node 1 cqlsh". Und uns die Keyspaces anzeigen lassen. Und wir sehen, momentan haben wir nur die System-Keyspaces. Deshalb erstellen wir einen Keyspace. "test WITH replication". Und da nehmen wir jetzt mal die "simple strategy". Und den "replication factor: 1" Wir wollen also alle Daten nur einfach vorhanden haben. Jetzt gehen wir wieder raus aus der Shell. Und wir führen noch einmal den Status durch Und wir sehen, dadurch, dass die Daten nur einmal vorhanden sein sollen, dass sich die Spalte "owns" geändert hat. Jede Node beherbergt nun ungefähr die Hälfte aller Daten. Was passiert, wenn wir jetzt eine weitere Node hinzufügen? Also nochmal der "docker run"-Befehl. Die Seeds bleiben gleich. Nämlich unsere Node1. Und wir ändern aber den Namen auf "node3". Und wir können wieder den Status abfragen. Die Node ist gerade noch nicht angekommen. Noch einmal der Status. Und "node3" ist gerade im Zustand "joining". Sehen wir noch einmal, was passiert. node3 ist immer noch "joining". Und noch ein Versuch. UN node 3 ist angekommen. up" and "normal". Und tatsächlich wurden die Token-Ranges jetzt auf alle 3 Nodes aufgeteilt. Jede Node enthält ungefähr ein Drittel der Daten. Was passiert, wenn wir jetzt den "replication factor" von 1 auf 2 erhöhen Dazu gehen wir noch einmal in die Shell Jetzt können wir den gerade erstellten Keyspace ändern. Mit "ALTER KEYSPACE test" Wir bleiben bei der "SimpleStrategy", ändern jetzt aber den "replication factor" auf zwei. Noch mal raus aus der Shell. Und was sagt "nodetool status"?. Ja, dadurch, dass jedes Datum einmal repliziert wird, also, doppelt vorhanden ist, haben wir jetzt eine Gesamtkapazität im Cluster von 200% Dementsprechend enthält jede Node etwa zwei Drittel der Gesamtdaten. Jetzt löschen wir nochmal alle 3 Nodes und konfigurieren sie neu. Mit datacenter von racks. Dazu "docker rm -f node1 node2 node 3" Alle Nodes sind gelöscht. Jetzt erstellen wir die erste Node neu. "docker run --name = node1 - d" Jetzt eine neue Umgebungsvariable. Die nennt sich "CASSANDRA_DC=DC1" Das ist unser erstes Datacenter. Eine weitere neue Umgebungsvariable. "CASSANDRA_RACK=RAC1" Wir sind also im ersten Rack, im ersten Datacenter Dazu müssen wir noch die Endpoint-Snitch ändern. "CASSANDRA_ENDPOINT_SNITCH= gossipingPropertyFileSnitch" und ein kleiner Schreibfehler. Und das Image heißt "cassandra". Prüfen wir einmal, ob der Container läuft. Ja, er läuft. Und was sagt "nodetool status" dazu? Wunderbar, node1 ist up and normal Und wir sehen auch, das Datacenter wurde aktualisiert auf DC1 Und das Rack wurde auch aktualisiert auf RAC1 Jetzt lassen wir mal die zweite Node das Cluster joinen Dazu können wir wieder den "docker run"-Befehl verwenden, diesmal aber mit node2 Wir sind immer noch im Datacenter 1. Diesmal nehmen wir RAC2 ENDPOINT_SNITCH ist gleich geblieben Zusätzlich müssen wir aber wieder CASSANDRA_SEEDS angeben Und das ist wieder die IP 172.17.0.2 Sehen wir mal, ob der Container läuft. Er läuft. Und "nodetool status" sagt, node2 ist immer noch "joining" Wir sehen aber schon, dass auch hier das RAC2 richtig angenommen wurde. Was sagt "nodetool status"? Up and normal, wunderbar. Jetzt wollen wir noch eine dritte Node aufsetzen. Dazu also noch mal der "docker run"-Befehl mit node3. Diesmal wollen wir aber ein zweites Datacenter aufmachen. Mit einem ersten Rack. ENDPOINT_SNITCH darf wieder gleich bleiben. CASSANDRA_SEEDS ist auch gleich geblieben. Also, einmal ausführen Sehen wir uns doch mal kurz die Logs dieses neuen Containers an. Das wäre node3 Und wir sehen, dass schon Kommunikation mit den anderen Nodes stattgefunden hat. Node Nummer 3 ist "part of the cluster". Token-Ranges wurden ausgetauscht, "bootstrap completed" Perfekt, einmal "STRG+C" Und wir können noch einmal mit "nodetool status" nachsehen. Und wir sehen, die Liste wurde noch mal deutlich länger. Wir haben jetzt nämlich unser Datacenter DC2 dazu bekommen, das unsere neue Node, hier mit der End-IP Adresse 4 beinhaltet Jetzt können wir noch mal in die Shell der ersten Node gehen, und uns die Keyspaces ansehen. Momentan noch nichts drin. Wir erstellen einen neuen Keyspace. Und diesmal benutzen wir aber die "NetworkTopologyStrategy". Und an dieser Stelle können wir für jedes Datacenter einen eigenen "replication factor" angeben. Für das DC1 nehmen wir mal die 2, wir haben ohnehin zwei Nodes. Und für das DC2 wählen wir die 1. Alles klar. Jetzt noch mal einen Blick auf "nodetool Status" und wir sehen, jede Node enthält 100% der Daten, weil auf jede Node repliziert wird. In diesem Video haben sie gesehen, wie man mit Hilfe von Docker, schnell ein kleines Cassandra-Cluster aufsetzen kann. Sie wissen nun, dass eine neue Node, nur eine Seed-Ndte, als Parameter bekommen muss, um einen Cluster zu joinen. Sie haben erfahren, dass man mit der "NetworkToplogyStrategy" den Replikationsfaktor pro Datacenter setzen kann, und dass das Nodetool beispielsweise Auskunft über den Zustand der Node zum Cluster geben kann.

Apache Cassandra Grundkurs

Lernen Sie, wie Sie Apache Cassandra als hoch verfügbare und skalierbare Datenbank einsetzen können.

2 Std. 11 min (26 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.02.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!