SolrCloudの分散冗長構成

概要

Solrサーバーを複数台使って分散冗長構成を組んだ時のメモです。
SolrCloudという機能でこの構成を組むことが出来ました。

環境

バージョン関係
OS CentOS 7.1.1503
Solr 5.2.1
Zookeeper 3.4.6


Solrサーバー
solr01.example.com
solr02.example.com

この2台で分散冗長構成を組みます。

Zookeeperサーバー
zk01.example.com
zk02.example.com
zk03.example.com

Zookeeperサーバーは事前に構築済と想定します。

設定

デーモンの起動オプション

/usr/lib/systemd/system/solr.service
デーモンの起動オプションはこのファイルで設定します。
基本デフォルトのままで大丈夫です。

ExecStart=/var/lib/solr/bin/solr start -noprompt -c -h ${SOLR_HOSTNAME} -p ${SOLR_PORT} -z ${SOLR_ZK_STRING} -m ${SOLR_MEMORY} -a "${SOLR_JVM_OPTS}"


Zookeeperサーバー指定

/etc/sysconfig/solr
SolrCloudで使うZookeeperサーバーを指定してください。
Solrサーバー全台でこの設定を行います。

SOLR_ZK_STRING="127.0.0.1:2181"

SOLR_ZK_STRING="zk01.example.com:2181,zk02.example.com:2181,zk03.example.com:2181"


デーモン起動

設定は以上です。デーモンを起動してください。

systemctl start solr


Solr管理画面

http://solr01.example.com:8139
http://solr02.example.com:8139
で管理画面にアクセスが出来ます。


SolrCloudモードで起動すると管理画面に『Cloud』というメニューが出てきます。

Solr通常モード

f:id:tsunokawa:20150916154111p:plain

SolrCloudモード

f:id:tsunokawa:20150916154141p:plain


コレクション作成

コレクションを作成します。
今回の例ではシャードやレプリカ数は以下を指定しています。

コレクション名 sample
シャード数 3
レプリカ数 2


コレクション作成のコマンド

※このコマンドはSolrサーバーの内いずれか1台で実行すればOKです。

/var/lib/solr/bin/solr create -c sample -shards 3 -replicationFactor 2


表示例

[root@solr01 solr]# /var/lib/solr/bin/solr create -c sample -shards 3 -replicationFactor 2
Connecting to ZooKeeper at zk01.example.com:2181,zk02.example.com:2181,zk03.example.com:2181
Re-using existing configuration directory sample

Creating new collection 'sample' using command:
http://solr01.example.com:8983/solr/admin/collections?action=CREATE&name=sample&numShards=3&replicationFactor=2&maxShardsPerNode=3&collection.configName=sample

{
  "responseHeader":{
    "status":0,
    "QTime":4632},
  "success":{"":{
      "responseHeader":{
        "status":0,
        "QTime":4409},
      "core":"sample_shard3_replica1"}}}

[root@solr01 solr]#


solr01で
/var/lib/solr/server/solr/以下に

sample_shard1_replica2
sample_shard2_replica2
sample_shard3_replica2

上記ディレクトリが作成されます。

solr02では
/var/lib/solr/server/solr/以下に

sample_shard1_replica1
sample_shard2_replica1
sample_shard3_replica1

上記ディレクトリが作成されます。


Solr管理画面にコレクションの情報が表示されます。
f:id:tsunokawa:20150916154327p:plain



Zookeeperサーバー

Zookeeperサーバーで値がどう入ってくるのか確認したメモです。

solrサーバー起動前
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]


solrサーバー起動後
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper, clusterstate.json, aliases.json, live_nodes, overseer, overseer_elect, collections]
[zk: localhost:2181(CONNECTED) 3]


コレクション作成後
[zk: localhost:2181(CONNECTED) 3] ls /
[configs, zookeeper, clusterstate.json, aliases.json, live_nodes, overseer, overseer_elect, collections]
[zk: localhost:2181(CONNECTED) 4]