マルチコア (Multi core) ってすっげー便利で実は簡単


マルチコアは一つの Solr で複数のインデックスをコントロールするための技術です。
インデックス毎にそれらをハンドリングする SolrCore(以下コア) と呼ばれるインスタンスを並行して実行することでそれを実現しています。

マルチコアはバージョン1.3 から導入された技術なのですが、バージョン1.2のリリースから1.3のリリースまで1年以上かかったのはこのマルチコアを実装するためだったといわれています。


こう書くとなんだか難しそうですが使うのはとても簡単で、そしてとても便利な機能です。


マルチコアを用いると、一つの Solr に複数のサービス向けのインデックスを相乗りさせることができます。ボクはリリース直後のまだトラフィックの少ないサービスを相乗りさせています。
こうすることで、個別に Solr を建てるよりセットアップの手間も、コンピュータリソースも節約することができます。エンジニアにも会社のコストにも優しいですね。

今はファッション系サービス、旅行系サービス、ITエンジニア向けサービスなど全く関係のない独立したサービスを一つのSolrの上で動かしています。


マルチコアで気をつけないといけないのは、メモリ空間等のコンピュータリソースは共有されているので、どれかのサービスのトラフィックが増えてきたりすると、相乗りしている他のサービスにも影響が出てしまうことです。

トラフィックが増えたサービスには独立した Solr を用意して、晴れてマルチコアからは卒業させてあげましょう。


あと、マルチコアは開発途中の複数のバージョンのインデックスを使い分けたりするときにも便利です。インデックスバージョン0.1用Solr、インデックスバージョン0.2用Solrなんて感じです。


さて、前置き長くなっちゃいましたが Solr のインストールがすんでいるとマルチコアのセットアップはとても簡単です。Solrのインストールがまだな方は、こちらを参考にしてください。


[おさらい][Solr][インストール] Linux で root 権限なしでも Solr を Tomcatの上で動かす1つのやりかた


以下、Solr が $HOME/local/apache-solr-nightly にインストールされていることを前提にマルチコアのセットアップについて記述します。インストール先が異なる場合には適宜読み替えてください。

solr.xml の作成

マルチコアの設定にはまず Solr のインストールディレクトリに solr.xml を作ります。
下の記述例をみてもらうとわかると思うのですが、ぶっちゃけコア毎に「core name」、「instanceDir」を定義するだけです。
これらはその名の通りで、URLで指定するコアの名前とコアのインスタンスの置かれるディレクトリパスを指定しています。


この例では、core0, core1, core2 の3つのコアを定義していて、それぞれのインスタンスディレクトリは、Solr のインストールディレクトリ直下のcore0, core1, core2としています。

$ export SOLR_HOME=$HOME/local/apache-solr-nightly
$ cd $SOLR_HOME
$ vi solr.xml <- 作成する
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
  <cores adminPath="/admin/cores">
    <core name="core0" instanceDir="core0" />
    <core name="core1" instanceDir="core1" />
    <core name="core2" instanceDir="core2" />
  </cores>
</solr>

インスタンスディレクトリの作成

次に各コア毎にインスタンスディレクトリを作ります。インスタンスディレクトリを作るというのは、コア毎に異なる設定をするための solrconfig.xml や schema.xml が置かれている conf ディレクトリを個別に用意するのとほぼ同意です。
既存の conf ディレクトリをコピーして修正するといいでしょう。

$ export SOLR_HOME=$HOME/local/apache-solr-nightly
$ cd $SOLR_HOME
$ mkdir core0
$ cp -r conf core0
$ cd core0/conf
$ vi solrconfig.xml <- 適宜修正
$ vi schema.xml <- 適宜修正
core1〜2も同様に繰り返す。


設定は以上で終わりなので、ここでTomcat 等のサーブレットコンテナを起動しなおします。

各コアへのアクセス方法

以下、ホスト名localhost、ポート番号8080の場合の動作確認例です。環境に応じて適宜読み替えてください。


コアの切り替えはURLで行います。
通常 Solr Admin ページのURLは http://localhost:8080/solr/admin/ですが、マルチコアを導入していた場合には solr の後に solr.xml で定義したコア名(core name)を追加したものになります。

 http://localhost:8080/solr/core0/admin/


アップデート用のリクエストハンドラ等のURLも同様にコア名を追加したものになります。

 http://localhost:8080/solr/core0/update


これでマルチコア化完了です。


ではでは


参考URL : http://wiki.apache.org/solr/CoreAdmin
参考URL : http://wiki.apache.org/solr/MultipleIndexes


なんか尻すぼみだ...。前半飛ばしすぎたな。


今日は気張って高級レストランでデート。カードはテーブル払いで堂々と出せるアメリカン・エキスプレス・ゴールド・カード。カードもファッションアイテムだね。

アメリカン・エキスプレス