カサンドラクラスタの設定方法

カサンドラクラスタの設定方法

  • オーケストレーション
6分で読めます 更新日 Dec 6, 2018

ポイント: 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の立場、戦略、または意見を表すものではありません。

オーケストレーションの関連記事

The Briefを購読する

このオファーに登録することで、あなたはBMCのプライバシーポリシーを読み、同意したことを確認します。

ありがとう

あなたはThe Briefに登録されました
The Briefはメインフレームとエンタープライズオーケストレーション—BMC AMIとControl-M—および、両者に関するアナリストの研究、顧客の展開、イベントをカバーしています。