0.7より前のバージョンではストレージ設定はconf/storage-conf.xmlに記述されていましたが、0.7ではconf/cassandra.yamlに記述されます。詳しくはStorageConfigurationを参照してください。
マルチノードクラスタの作成
Cassandraパッケージに含まれている標準のstorage-conf.xmlはシングルノード環境を構築するには便利ですが、マルチノードクラスタの構築には適当ではありません。ここではマルチノードクラスタを構築するための最も簡単な手順と設定を説明します。ただし、ここで述べる方法は本番環境の構築においては必ずしも最善ではないでしょう。
最初のノードの準備
標準のstorage-conf.xmlはloopbackアドレスをlistenアドレス(ノード間通信用)及びThriftアドレス(クライアントアクセス用)に使用しています:
<ListenAddress>localhost</ListenAddress> <ThriftAddress>localhost</ThriftAddress>
listenアドレスはノード間通信に使用されるので、他のノードからアクセス可能なアドレスに変更する必要があります。
例えば、そのノードが192.168.1.1のEthernetインターフェースを持っている場合、listenアドレスを次のように変更すればいいでしょう:
<ListenAddress>192.168.1.1</ListenAddress>
Thriftインターフェースには特定のIPアドレス、あるいはワイルドカードアドレス0.0.0.0を指定できます。ワイルドカードアドレスを指定すると、cassandraは使用可能なすべてのインターフェースでクライアントからの要求を受け付けます。Thrfitアドレスを次のように指定して下さい:
<ThriftAddress>192.168.1.1</ThriftAddress>
あるいは:
<ThriftAddress>0.0.0.0</ThriftAddress>
そのホストのDNSエントリが正しければ、IPアドレスよりホスト名を使った方が安全です。同様に、seed情報もloopbackアドレスから変更する必要があります:
<Seeds> <Seed>127.0.0.1</Seed> </Seeds>
これを次のように変更:
<Seeds> <Seed>192.168.1.1</Seed> </Seeds>
これらの変更が済んだら、cassandraをリスタートしてください。netstatを使用してcassandraが正しいアドレスをlistenしていることを確認してください。
設定が正しければ次のように表示されるはです:
tcp4 0 0 192.168.1.1.7000 *.* LISTEN
cassandraが依然として127.0.0.1.7000をlistenしているなら、前のcassandraプロセスが正常にkillされなかったか、あなたが編集したstorage-conf.xmlをcassandraが参照していないかのいずれかでしょう。
残りのノードの準備
Ring内の他のノードでは最初のノードで設定したstorage-conf.xmlとほぼ同一のものを使用します。従って最初のノードで編集したstorage-conf.xmlをベースに変更を加えていくことにしましょう。最初の変更は、自動ブートストラップを有効にすることです。この設定により、ノードはRingに参加し、トークン空間における一定範囲を担当範囲にすることを試みます:
<AutoBootstrap>true</AutoBootstrap>
二つ目の変更はlistenアドレスです。listenアドレスはloopbackアドレスでもなく、また他のノードと重複してもいけません。二つ目のノードが192.168.2.34のEthernetインターフェースを持っている場合、listenアドレスを次のように設定します:
<ListenAddress>192.168.2.34</ListenAddress>
最後に、Thriftアドレスを変更し、クライアントアクセスを受け付け可能にします。最初のノードと同様に、特定のアドレス、もしくはワイルドカードを指定します:
<ThriftAddress>192.168.2.34</ThriftAddress>
または:
<ThriftAddress>0.0.0.0</ThriftAddress>
設定のSeedsセクションをそのまま残さなければいけないことに注意してください。この設定は追加するノードがブートストラップで最初のノードを参照するために必要です。これらの設定変更が済んだら、新しいノードでcassandraを起動してください。新しいノードは自動的にRingに参加し、初期トークンを自分自身に割り当て、要求待ちになります。