-
sudo ifconfig lo:1 127.0.0.2 up
とかやって、lo:1というインターフェイスを作る。必要な数だけつくる。 - conf ディレクトリをサーバの数だけ複製する。
- cassandra.yamlの data_file_directories, commit_log_directory, saved_caches_directory が重複しないように 別々のディレクトリを掘って指定する。
- cassandra.yamlの listen_address と rpc_address を127.0.0.2などに変更する。
-
cassandra.yamlのseeds にアドレスを並べる
- seeds: "127.0.0.1,127.0.0.2"
- log4j-server.properties の /var/log/cassandra となっている部分を適宜重複しないように変更する。
- cassandra-env.sh のJMX_PORTは別の値を指定する。このポートは常に0.0.0.0に対してバインドされるらしいので 複数のサーバ間が同じポートで共有することができないらしい。
-
起動時には新しく作ったconfディレクトリを環境変数で指定して起動すれば良い。
CASSANDRA_CONF=conf1 bin/cassandra
2013年5月10日金曜日
Cassandra の複数サーバを1ノードで動かす
普通この種のものは、ポートを設定ファイルで切り替えてやれば1ノードで複数サーバを動かすことができるのだけど、Cassandraではむずかしい。というのは、システムのポート番号が全てのサーバで同一であることが前提となっているらしいからだ。サーバのノード情報はゴシップでやり取りしているはずだから、一度接続出来ればポート番号を交換して共有できそうなものなのだが、その接続ができない。
yamlファイルのseedsを指定するフィールドが、IPアドレスのみを指定するようになっていて、ポート番号を指定できない。簡単に修正できれば修正してみようかと、ソースを追ってみたけど割に中の方までIpAddressだけしか持っていないので難しいと判断。
VMの中なので、ネットワークインターフェイスを増やすのは簡単なので、それで何とかしようかと思ったのだが、
ググったらもっと簡単な方法があった。
3年前の記事。
ローカルホストのloインターフェイスにaliasで別のIPアドレスをふり、それを使うという方法。
本物のネットワーク・インターフェイスを増やすと色々面倒だけどこれなら、ずっと楽だしVMじゃなくてもできる。
以下ubuntuでの方法。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿