前書き

Apache Cassandraは、スケーラブルなオープンソースデータベースシステムであり、マルチノードセットアップで優れたパフォーマンスを実現します。

以前は、https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-14-04 [実行方法単一ノードのCassandraクラスター]。 このチュートリアルでは、Cassandraをインストールして使用し、Ubuntu 14.04でマルチノードクラスターを実行する方法を学習します。

前提条件

マルチノードCassandraクラスターを構築しようとしているため、クラスター内に配置するサーバーの数を決定し、それぞれを構成する必要があります。 同一または類似の仕様を持つことが推奨されますが、必須ではありません。

このチュートリアルを完了するには、次のものが必要です。

手順1-デフォルトデータの削除

Cassandraクラスター内のサーバーは、_nodes_と呼ばれます。 各サーバーに現在あるのは、単一ノードのCassandraクラスターです。 このステップでは、マルチノードCassandraクラスターとして機能するようにノードをセットアップします。

この手順および後続の手順のすべてのコマンドは、クラスター内の各ノードで繰り返す必要があるため、クラスター内のノードと同じ数のターミナルを開いてください。

各ノードで最初に実行するコマンドは、Cassandraデーモンを停止します。

sudo service cassandra stop

それが完了したら、デフォルトのデータセットを削除します。

sudo rm -rf /var/lib/cassandra/data/system/*

ステップ2-クラスターの構成

Cassandraの設定ファイルは `+ / etc / cassandra `ディレクトリにあります。 その設定ファイル、 ` cassandra.yaml +`には多くのディレクティブが含まれており、非常によくコメントされています。 この手順では、クラスターをセットアップするためにそのファイルを変更します。

マルチノードCassandraクラスターをセットアップするには、以下のディレクティブのみを変更する必要があります。

  • + cluster_name +:これはクラスターの名前です。

  • + -seeds +:これは、クラスター内の各ノードのIPアドレスのコンマ区切りリストです。

  • + listen_address +:これは、クラスター内の他のノードがこのノードに接続するために使用するIPアドレスです。 デフォルトは* localhost *であり、ノードのIPアドレスに変更する必要があります。

  • + rpc_address +:これは、リモートプロシージャコールのIPアドレスです。 デフォルトは* localhost *です。 サーバーのホスト名が適切に構成されている場合は、そのままにします。 それ以外の場合は、サーバーのIPアドレスまたはループバックアドレス( + 127.0.0.1 +)に変更します。

  • + endpoint_snitch +:スニッチの名前。これは、Cassandraにネットワークの外観を伝えるものです。 デフォルトは* SimpleSnitch で、1つのデータセンター内のネットワークに使用されます。 私たちの場合、これを GossipingPropertyFileSnitch *に変更します。これは、実稼働セットアップに適しています。

  • + auto_bootstrap +:このディレクティブは設定ファイルにないため、追加して* false *に設定する必要があります。 これにより、新しいノードで適切なデータが自動的に使用されます。 既存のクラスターにノードを追加する場合はオプションですが、新しいクラスター、つまりデータのないクラスターを初期化する場合は必須です。

設定ファイルを開いて、 `+ nano +`またはお好みのテキストエディターを使用して編集します。

sudo nano /etc/cassandra/cassandra.yaml

ファイルで次のディレクティブを検索し、クラスターに合わせて以下のように変更します。 「+」を現在作業中のサーバーのIPアドレスに置き換えます。 `-seeds:+`リストはすべてのサーバーで同じである必要があり、コンマで区切られた各サーバーのIPアドレスが含まれます。

/etc/cassandra/cassandra.yaml

. . .

cluster_name: ''

. . .

seed_provider:
 - class_name: org.apache.cassandra.locator.SimpleSeedProvider
   parameters:
        - seeds: ",,..."

. . .

listen_address:

. . .

rpc_address:

. . .

endpoint_snitch:

. . .

ファイルの最後に、次の行を貼り付けて、 `+ auto_bootstrap +`ディレクティブを追加します。

/etc/cassandra/cassandra.yaml

ファイルの変更が終了したら、保存して閉じます。 クラスターに含めるすべてのサーバーに対してこの手順を繰り返します。

手順3-ファイアウォールの構成

この時点で、クラスターは構成されていますが、ノードは通信していません。 このステップでは、Cassandraトラフィックを許可するようにファイアウォールを構成します。

最初に、それぞれでCassandraデーモンを再起動します。

sudo service cassandra start

クラスターのステータスを確認すると、ローカルノードのみがリストされていることがわかります。これは、他のノードと通信できないためです。

sudo nodetool status

出力

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

通信を許可するには、ノードごとに次のネットワークポートを開く必要があります。

  • + 7000 +、これはコマンドとデータのTCPポートです。

  • + 9042 +。これは、ネイティブトランスポートサーバーのTCPポートです。 Cassandraコマンドラインユーティリティである「+ cqlsh +」は、このポートを介してクラスターに接続します。

ファイアウォールルールを変更するには、IPv4のルールファイルを開きます。

sudo nano /etc/iptables/rules.v4

INPUTチェーン内の次の行をコピーして貼り付けます。これにより、前述のポートでトラフィックが許可されます。 ファイアウォールチュートリアルの「+ rules.v4 」ファイルを使用している場合は、「#このポイントに到達したものを拒否する」コメントの直前に次の行を挿入できます。

「+ -s 」で指定されるIPアドレスは、クラスター内の別のノードのIPアドレスである必要があります。 IPアドレスが「+111.111.111.111」と「222.222.222.222」の2つのノードがある場合、「+ 111.111.111.111+」マシンのルールはIPアドレス「222.222.222.222」を使用する必要があります。

新しいファイアウォールルール

-A INPUT -p tcp -s  -m multiport --dports 7000,9042 -m state --state NEW,ESTABLISHED -j ACCEPT

ルールを追加したら、ファイルを保存して閉じ、IPTablesを再起動します。

sudo service iptables-persistent restart

手順4-クラスターステータスの確認

これで、ノードをマルチノードクラスターにするために必要なすべての手順が完了しました。 ステータスを確認することで、全員が通信していることを確認できます。

sudo nodetool status

出力

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1
UN  192.168.1.6  139.04 KB  256          ?       54b16af1-ad0a-4288-b34e-cacab39caeec  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

設定したすべてのノードが表示されたら、マルチノードCassandraクラスターのセットアップは正常に完了しています。

Cassandraコマンドラインクライアントである `+ cqlsh +`を使用してクラスターに接続できるかどうかも確認できます。 このコマンドには、クラスター内の任意のノードのIPアドレスを指定できることに注意してください。

cqlsh  9042

接続が表示されます。

出力

Connected to My DO Cluster at 192.168.1.6:9042.
[cqlsh 5.0.1 | Cassandra 2.2.3 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh>

その後、CQLターミナルを終了できます。

exit

結論

おめでとうございます。 これで、Ubuntu 14.04で実行されているマルチノードCassandraクラスターができました。 Cassandraの詳細については、http://wiki.apache.org/cassandra/GettingStarted [プロジェクトのウェブサイト]をご覧ください。 クラスターのトラブルシューティングを行う必要がある場合、最初に手がかりを探す場所はログファイルです。ログファイルは `+ / var / log / cassandra +`ディレクトリにあります。