前書き
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クラスターを構築しようとしているため、クラスター内に配置するサーバーの数を決定し、それぞれを構成する必要があります。 同一または類似の仕様を持つことが推奨されますが、必須ではありません。
このチュートリアルを完了するには、次のものが必要です。
-
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 [この初期セットアップガイド]を使用して構成された少なくとも2つのUbuntu 14.04サーバー。
-
各サーバーには、https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-14-04に従ってCassandraをインストールする必要もあります。 [この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 +`ディレクトリにあります。