Auf einen Blick: Anleitungen zum Einrichten eines Cassandra-Clusters auf zwei Rechnern, die Firewall-Konfigurationen und cassandra.yaml-Einstellungen abdecken. Der Leitfaden beschreibt Schritte zum Starten des Services, zur Überprüfung des Knotenstatus sowie zur Erstellung von Schlüsselflächen und Tabellen für die Datenreplikation.
- Offene Firewall-Ports: 7000, 7001, 7199, 9042, 9160, 9142.
- Bearbeiten Sie cassandra.yaml für Seed-Knoten und Listen-Adressen.
Hier zeigen wir, wie man einen Cassandra-Cluster einrichtet. Wir werden zwei Maschinen verwenden, 172.31.47.43 und 172.31.46.15. Zuerst öffnen Sie diese Firewall-Ports an beiden:
7000
7001
7199
9042
9160
9142
Folge dann diesem Dokument , um Cassandra zu installieren und dich mit den Grundkonzepten vertraut zu machen. Installiere Cassandra auf jedem Knoten.
Konfiguration der Cluster-Einstellung
Es gibt keinen zentralen Master in einem Cassandra-Cluster. Stattdessen macht man jeden einzelnen auf die anderen aufmerksam und sie arbeiten zusammen. Zuerst werden wir /etc/cassandra/cassandra.yaml auf beiden Rechnern bearbeiten und die Werte wie in der untenstehenden Tabelle gezeigt festlegen. Ändere den Clusternamen noch nicht. Das machen wir später.
-
- Seeds – setze die IP-Adresse auf einer Maschine als Seed. Es ist nicht notwendig, dass alle Rechner Seeds sind. Seeds sind Knoten, die Cassandra-Knoten verwenden, wenn du Cassandra Start startest, um andere Knoten zu finden.
- listen_address – die IP-Adresse für Cassandra.
- endpoint_snitch – dies wird verwendet, um zu bestimmen, wohin Daten geleitet und Replikate gesendet werden. Wir verwenden unten die Standardversion. Es gibt mehrere. Die anderen sind rack-aware, das heißt, sie würden eine Replik nicht auf dasselbe physische Lagerrack wie ein anderes legen. Wenn man das tut und das gesamte Rack versagt, könnten die Daten verloren gehen. Es gibt sogar eines (Ec2Snitch), das für Amazon EC2 entwickelt wurde und Daten über Amazon-Zonen verteilt werden kann.
| Maschinen 172.31.46.15 Einstellungen | Maschinen 172.31.47.43 Einstellungen |
endpoint_snitch: SimpleSnitch – Setz: "Setz: 172.31.47.43" listen_address: 172.31.46.15 |
endpoint_snitch: SimpleSnitch – Setz: "Samen: 172.31.47.43" listen_address: 172.31.47.43 |
Laufen jetzt auf beiden Geräten:
sudo service cassandra start
Dann warte ein paar Sekunden, bis die Discovery funktioniert, und führe dann auf beiden Rechnern aus:
nodetool status
Beide Knoten sollten angezeigt werden:
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.31.46.15 245.99 KiB 256 100.0% fb1d89bb-cbe2-488f-b2e7-da145bd2dde7 rack1
UN 172.31.47.43 196.01 KiB 256 100.0% 472fd4f0-9bb3-48a3-a933-9c9b07f7a9f6 rack1
Wenn du irgendeine Fehlermeldung bekommst, schau in /var/log/cassandra/system.log Jetzt ändern wir den Namen des Clusters vom Defaut. Führe cqlsh aus und füge dann das SQL unten ein. Cassandra repliziert diese Systemänderung nicht im gesamten Cluster, daher musst du es auf beiden Rechnern ausführen.
UPDATE system.local SET cluster_name = 'Walker Cluster' where key='local';
Jetzt bearbeite /etc/cassandra/cassandra.yaml und ändere den Clusternamen auf beliebig. Es sollte auf beiden Geräten gleich sein:
cluster_name: 'Walker Cluster'
Dann:
sudo service cassandra restart
Führe diese Prüfung noch einmal durch:
nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.31.46.15 312.4 KiB 256 100.0% fb1d89bb-cbe2-488f-b2e7-da145bd2dde7 rack1
UN 172.31.47.43 294.71 KiB 256 100.0% 472fd4f0-9bb3-48a3-a933-9c9b07f7a9f6 rack1
Nun folgen wir diesen Anweisungen aus unserer Einführung zu cassandra, indem wir einige Daten erstellen. Wir werden sehen, dass die auf einem Knoten eingegebenen Daten auf einen anderen repliziert werden. Fügen Sie diese SQL-Befehle in csql ein:
CREATE KEYSPACE Library
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
CREATE TABLE Library.book (
ISBN text,
copy int,
title text,
PRIMARY KEY (ISBN, copy)
);
CREATE TABLE Library.patron (
ssn int PRIMARY KEY,
checkedOut set
);
INSERT INTO Library.book (ISBN, copy, title) VALUES('1234',1, 'Bible');
INSERT INTO Library.book (ISBN, copy, title) VALUES('1234',2, 'Bible');
INSERT INTO Library.book (ISBN, copy, title) VALUES('1234',3, 'Bible');
INSERT INTO Library.book (ISBN, copy, title) VALUES('5678',1, 'Koran');
INSERT INTO Library.book (ISBN, copy, title) VALUES('5678',2, 'Koran');
Melden Sie sich dann an der gegenüberliegenden Maschine an und überprüfen, ob die Daten dorthin kopiert wurden:
select * from Library.book;
isbn | copy | title
------+------+-------
5678 | 1 | Koran
5678 | 2 | Koran
1234 | 1 | Bible
1234 | 2 | Bible
1234 | 3 | Bible
Cassandra-Führer
- Was ist Cassandra? Schlüsselmerkmale und Vorteile
- Wie man einen Cassandra-Cluster einrichtet
- Cassandra SQL Batches and Maps
- Stresstests und Leistungsabstimmung Apache Cassandra
- JSON mit Cassandra verwenden
- Konfiguration von Apache Cassandra Data Consistency
- Verwendung von Tokens zur Verteilung von Cassandra-Daten
- Partitionsschlüssel vs. zusammengesetzter Schlüssel vs. Clustering von Spalten in Cassandra
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.