SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

実用段階に入ったNoSQLをおさらい
「Cassandra」の概要と導入手順・基本設定

  • X ポスト
  • このエントリーをはてなブックマークに追加

複数ノード構成時の設定と起動

 複数ノード構成を構築する方法を解説します。設定ファイルの変更を適切に行えば簡単に構築することができます。IPアドレス192.168.111.28から30までの3ノードで構成します。最初に起動する1ノード目は、SEEDの役割を持ちます。各ノードは、最初にRINGに参加する際にSEEDからRINGの構成情報を受領します。

図8:構築予定の複数ノード構成
図8 構築予定の複数ノード構成

ネットワーク設定

 複数台で運用する場合、ノード間で通信を行って同期を行います。そのため、いくつかのPortを他のノードから通信可能に設定する必要があります。

表9:解放するPortの内容
内容 Port
Thrift(RPC)等での接続ポート 9160
CQL用のトランスポート 9042
複数インスタンス(ノード)間で連携するためのポート 7000
複数インスタンス(ノード)間で連携するためのポート(SSL) 7001

 執筆環境では、iptablesファイルを更新して設定しました。

[root@localhost bin]# vi /etc/sysconfig/iptables

 以下の4行を追記しました。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9160 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9042 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7001 -j ACCEPT

データのクリア

 ノードとして稼働すると、データディレクトリとログディレクトリにデータが記録されています。新たにRINGに追加するノードは、イニシャル状態である必要があります。そのような場合には、以下のコマンドでクリアします。

rm -rf /var/lib/cassandra/*
rm -rf /var/log/cassandra/*

Cassandra設定

 複数台で運用するには、Cassandra設定ファイルcassandra.yamlを構成に合わせて変更する必要があります。

表10:複数ノード構成のcassandra.yamlファイル変更ポイント
項目 行数(操作) 1ノード目(SEED) 2ノード目 3ノード目
192.168.111.28 192.168.111.29 192.168.111.30
seeds 239(更新) 192.168.111.28 192.168.111.28 192.168.111.28
listen_address 330(更新) 192.168.111.28 192.168.111.29 192.168.111.30
rpc_address 366(更新) 0.0.0.0 0.0.0.0 0.0.0.0
auto_bootstrap 705(追記)   true true

 2ノード目(192.168.111.29)は、次のように設定しています。

  • 239行目(更新)
          - seeds: "192.168.111.28"
  • 330行目(更新)
listen_address: 192.168.111.29
  • 366行目(更新)
rpc_address: 0.0.0.0
  • 705行目(追加)
auto_bootstrap : true

動作確認

 SEEDに指定されている1ノード目を起動します。nodetoolコマンドで確認すると、1ノードのみ表示されます。他のノードは、RINGに参加していないので表示されません。

[root@localhost bin]# ./cassandra -p

[root@localhost bin]# ./nodetool -h localhost ring
Note: Ownership information does not include topology; for complete information, specify a keyspace

Datacenter: datacenter1
==========
Address         Rack        Status State   Load            Owns                Token

192.168.111.28  rack1       Up     Normal  14.02KB        100.00%             2588204910878942732

 2ノード目を起動します。起動コマンドとパラメータは、1ノード目と同様です。しばらく(執筆環境では30秒ぐらい)すると、RINGへの参加を完了します。nodetoolコマンドで、構成を確認します。ノード数が2台となり、いずれもUp(稼働)しています。

[root@localhost bin]# ./nodetool -h localhost ring
Note: Ownership information does not include topology; for complete information, specify a keyspace

Datacenter: datacenter1
==========
Address         Rack        Status State   Load            Owns                Token

                                                                               2588204910878942732

192.168.111.29  rack1       Up     Normal  15.53KB        44.96%              -7564491331177403445

192.168.111.28  rack1       Up     Normal  18.79KB        55.04%              2588204910878942732

 3ノード目を起動します。起動コマンドとパラメータは、1ノード目と同様です。nodetoolコマンドで、構成を確認します。しばらく(執筆環境では30秒ぐらい)すると、RINGへの参加を完了します。これで、すべてのノードがRINGに接続しました。

[root@localhost bin]# ./nodetool -h localhost ring
Note: Ownership information does not include topology; for complete information, specify a keyspace

Datacenter: datacenter1
==========
Address         Rack        Status State   Load            Owns                Token

                                                                               2588204910878942732

192.168.111.29  rack1       Up     Normal  15.53KB        44.96%              -7564491331177403445

192.168.111.30  rack1       Up     Normal  20.29KB        27.52%              -2488143210149230357

192.168.111.28  rack1       Up     Normal  23.55KB        27.52%              2588204910878942732

 RINGに接続するとお互いに状況を監視しています。killコマンドで、2および3ノード目を停止します。1ノード目からnodetoolコマンドで確認すると、2および3ノードはDown状態です。

[root@localhost bin]# ./nodetool -h localhost ring
Note: Ownership information does not include topology; for complete information, specify a keyspace

Datacenter: datacenter1
==========
Address         Rack        Status State   Load            Owns                Token

                                                                               2588204910878942732

192.168.111.29  rack1       Down   Normal  20.29KB        44.96%              -7564491331177403445

192.168.111.30  rack1       Down   Normal  20.29KB        27.52%              -2488143210149230357

192.168.111.28  rack1       Up     Normal  23.55KB        27.52%              2588204910878942732

むすび

 Cassandraは、ビックデータを活用するための高度な分散処理環境を提供します。本書でも体験いただいたとおり、インストール作業も非常にシンプルな手順で行えるようになっています。また、複数ノード構成でも設定ファイルを修正するだけで構築が可能です。ぜひ、お試しください。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

佐藤 栄一(コネクト株式会社)(サトウ エイイチ(コネクトカブシキガイシャ))

PHPによるWebシステム構築をプロダクトとサポートサービスで支援するコネクト株式会社(創業時はゼンド・ジャパン株式会社)の創立メンバー。主要事業の一つであるMySQLの技術担当(Oracle Certified Expert,MySQL 5.1 Cluster Database Administrator)。ビックデータで注目を集めるCassandraも合わせて担当する。http://www.konekto.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7548 2014/01/08 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング