Solrの設定ファイルをレプリケーションして、本番稼働中のリリース手順を簡単にする

More than 3 years have passed since last update.

本番稼働中のSolrのスキーマを変更する手順書を作りながら、「向き先変えたりとかいろいろ面倒だなぁ」ってグチったところ、「それ、レプリケーションできるみたいよ」という話を聞いたので試してみました。


構成

サーバ構成としてはだいたいこんな感じです。

[master]----[slave1] <---[AP1][AP2]

+---[slave2] <---[AP3]

Solrは4.10.3でスレーブが2台。

APは3台あって、AP1とAP2がslave1を参照。AP3がslave2を参照している状態。

レプリケーションしてくれるならマスターのスキーマ変更して再起動して、スレーブ向いてるAPをマスターに向けてスレーブの設定変更して再起動して・・・という面倒な手順を踏まなくてよくなります。


マスター側の設定

マスター側の設定は以下のようにしました。


solrconfig.xml

<requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" >

<lst name="master">
<str name="replicateAfter">commit</str>
<str name="replicateAfter">startup</str>
<str name="replicateAfter">optimize</str>
<str name="confFiles">schema.xml,data-config.xml</str>
</lst>
</requestHandler>

これでSolr再起動。


スレーブ側の設定

スレーブ側の設定は特にいじってません。


レプリケーションされることを確認

マスター側のschema.xmlとdata-config.xmlにフィールドを追加して、Solr再起動。

そしてフルインポートをかけたところ無事にスレーブ側のschema.xmlとdata-config.xmlにも設定が反映され、インデックスも無事に作られました。

ああ、これで面倒な手順を踏むことなく設定が変えられる!!知ってよかった!!