ポイント: 2台のマシンでカサンドラクラスタを設定するための手順で、ファイアウォールの設定とcassandra.yamlの設定について説明します。このガイドでは、サービスの開始、ノードのステータスの確認、データ複製のためのキースペースやテーブルの作成手順を詳述します。
- ファイアウォールポートを開く: 7000、7001、7199、9042、9160、9142。
- シードノードとリスンアドレスのためにcassandra.yamlを編集します。
ここでは、カサンドラクラスタの設定方法を示します。172.31.47.43と172.31.46.15の2台のマシンを使用します。まず、両方のマシンでこれらのファイアウォールポートを開きます:
7000
7001
7199
9042
9160
9142
次に、このドキュメントに従ってカサンドラをインストールし、その基本的な概念に慣れてください。各ノードにカサンドラをインストールすることを確認してください。
クラスター設定の構成
カサンドラクラスタには中央のマスターはありません。代わりに、各ノードが他のノードを認識し、一緒に作業します。まず、両方のマシンで/etc/cassandra/cassandra.yamlを編集し、以下のテーブルに示す値を設定します。まだクラスター名は変更しないでください。後で変更します。
-
- seeds—1台のマシンのIPアドレスをシードとして設定します。すべてのマシンがシードである必要はありません。シードは、カサンドラノードがカサンドラの起動時に他のノードを見つけるために使用するノードです。
- listen_address—カサンドラが実行されるためのIPアドレス。
- endpoint_snitch—これはデータをルーティングし、レプリカを送信する場所を決定するために使用されます。以下のデフォルトを使用します。いくつかの他のものがあります。他のものはラックを意識しており、別のノードと同じ物理ストレージラックにレプリカを置かないようにします。それを行った場合、ラック全体が失敗するとデータが失われる可能性があります。Amazon EC2向けに設計されたもの(Ec2Snitch)もあり、データをAmazonゾーンに分散できます。
| マシン 172.31.46.15 の設定 | マシン 172.31.47.43 の設定 |
endpoint_snitch: SimpleSnitch - seeds: "seeds: 172.31.47.43" listen_address: 172.31.46.15 |
endpoint_snitch: SimpleSnitch - seeds: "seeds: 172.31.47.43" listen_address: 172.31.47.43 |
次に、両方のマシンで実行します:
sudo service cassandra start
その後、発見が機能するまで数秒待ち、両方のマシンで実行します:
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 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
エラーメッセージが表示された場合は、/var/log/cassandra/system.logを確認してください。さて、デフォルトからクラスター名を変更しましょう。cqlshを実行し、以下のSQLを貼り付けます。カサンドラはこのシステム変更をクラスタ全体に複製しないため、両方のマシンでこれを実行する必要があります。
UPDATE system.local SET cluster_name = 'Walker Cluster' where key='local';
今、/etc/cassandra/cassandra.yamlを編集し、クラスター名を任意の名前に変更します。両方のマシンで同じであるべきです:
cluster_name: 'Walker Cluster'
次に:
sudo service cassandra restart
このチェックを再度実行します:
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
さて、これらの指示に従って、いくつかのデータを作成しましょう。一方のノードに入力されたデータが別のノードに複製されるのを確認します。これらのSQLコマンドをcsqlに貼り付けます:
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');
次に、反対のマシンにログインして、データがそこにコピーされていることを確認します:
select * from Library.book;
isbn | copy | title
------+------+-------
5678 | 1 | Koran
5678 | 2 | Koran
1234 | 1 | Bible
1234 | 2 | Bible
1234 | 3 | Bible
カサンドラガイド
これらの投稿は私自身の意見であり、必ずしもBMCの立場、戦略、または意見を表すものではありません。