intra-mart Accel Platform / Cassandra管理者ガイド

«  Cassandra の起動、停止方法   ::   コンテンツ   ::   Cassandra の運用  »

Cassandra のクラスタ構築

ここでは Cassandra のクラスタ構築方法を紹介します。

クラスタの構成

Cassandraは、1台のみでの運用も可能ですが、大量のメッセージを扱う場合での負荷分散や冗長化を実現するため、
クラスタ構成を構築することが可能です。
Cassandra の一貫性保証 での通り、IMBoxでは、一貫性の保証を「Quorum((ノード数+1)/2の数分の一貫性を保証)」を
採用しているため、クラスタのノード数は、 3台以上 にすることを強く推奨します。

コラム

本書では、例として、以下の構成にて説明します。

1台目のノード(シードノード): 192.168.0.1
2台目のノード: 192.168.0.2
3台目のノード: 192.168.0.3

ノードの追加

  • replication-factorとhostの変更

    replication-factorとは、クラスタ内部で、データを何個のレプリカを持つかという設定です。
    標準の1のままだと、該当のノードを持っているノードがダウンした場合にデータが参照できなくなりますので、2以上の数値を設定してください。
  • 設定方法
IM-Juggling にて、conf/cassandra-config.xmlを開き、<replication-factor>を任意の数値に変更し、
hosts/host の設定を「127.0.0.1:9160」から Cassandra の稼働しているサーバの
IPアドレスとポート番号に変更してWARファイルを作成しデプロイしてください。
../../_images/replication-factor.png

コラム

テナント環境セットアップをすでに実行して、IMBox環境を構築している場合は、以下の手順を行なってください。
# [Cassandraインストール先]/bin/cassandra-cli.sh(または、cassandra-cli.bat)

でcassandra-cliを実行。

[default@unknown] connect 127.0.0.1/9160;

にて、 Cassandra に接続。

[default@unknown] use default;

にて、IMBoxのKeyspaceを指定。

[default@default] update keyspace default with strategy_options={replication_factor:2};

で、replication_factorを変更。

Waiting for schema agreement...
... schemas agree across the cluster

と表示されれば、成功。

[default@default] exit;

でcassandra-cliを終了し、 Cassandra を再起動してください。再起動後、

# /usr/local/cassandra/bin/nodetool repair
(windowsの場合:C:/ > C:/apache-cassandra-1.1.4/bin/nodetool repair

を実行してください。

  • シードノードを指定します。
各ノードの<[Cassandraインストール先]/conf/cassandra.yaml>ファイルをエディタで開き、
「seeds」プロパティに1台目のノード(192.168.0.1)をシードノードとして指定します。
seed_provider:
    # Addresses of hosts that are deemed contact points.
    # Cassandra nodes use this list of hosts to find each other and learn
    # the topology of the ring.  You must change this if you are running
    # multiple nodes!
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          # seeds is actually a comma-delimited list of addresses.
          # Ex: "<ip1>,<ip2>,<ip3>"
          - seeds: "192.168.0.1"

各ノードで設定を行ったのち、 Cassandra を起動します。

以下のコマンドを実行し、以下のように各ノードが表示されることを確認できれば完了です。

# /usr/local/cassandra/bin/nodetool ring (windowsの場合:C:/ > C:/apache-cassandra-1.1.4/bin/nodetool ring)
Starting NodeTool
Address         DC          Rack        Status State   Load            Effective-Ownership Token
134073324684581098149220982299151052417
192.168.0.1  datacenter1 rack1       Up     Normal  117.33 KB       77.43% 72029913264419379591431889264009303469
192.168.0.2  datacenter1 rack1       Up     Normal  225.3 KB        86.11% 110436698385580468589163673403640885580
192.168.0.3  datacenter1 rack1       Up     Normal  213.4 KB        36.47% 134073324684581098149220982299151052417

コラム

Cassandra では、デフォルトで以下のポートを利用して他の Cassandra と通信を行いますので、 Linuxの場合、iptablesやSElinux、Windowsの場合、ファイアーウォールの設定を必要に応じて設定変更してください。

コラム

「シードノード」とは?

Cassandra クラスタ上で中心(ハブ)のように機能し、新規にクラスタに参加したノードは、 シードノードから、他のノードの状態情報を取得したり、クラスタ全体の情報を取得します。 シードノードがなくても、動作自体には問題ありませんので、シードノード自体が単一障害点にはなりませんが、 クラスタ内のノードの状態の変化の検出に時間がかかるようになります。

ノードの削除

  • クラスタから、任意のノードを削除する。

削除したいノードで、decommissionを実行します。

# /usr/local/cassandra/bin/nodetool -h [削除したいノードのIPアドレス] decommission
(windowsの場合:C:/ > C:/apache-cassandra-1.1.4/bin/nodetool -h [削除したいノードのIPアドレス] decommission)

※削除するノードのデータを他のノードに転送しますので、しばらく時間がかかります。

«  Cassandra の起動、停止方法   ::   コンテンツ   ::   Cassandra の運用  »