Luceneは、反転の原理を使用してJava言語で記述されたテキスト検索ライブラリです。
Solrは、Luceneをベースにしたテキスト検索アプリケーションサービスです。 Solrの展開方法には、スタンドアロン、マルチマシンMaster-Slaver、およびCloudが含まれます。
SolrCloudは、SolrとZookeeperに基づく分散検索ソリューションです。インデックスがどんどん大きくなると、1つのシステムでディスクの需要に対応できなくなり、クエリ速度が遅くなりますが、現時点では分散インデックスが必要です。分散インデックスでは、元の大きなインデックスが複数の小さなインデックスに分割されます。Solrは、これらの小さなインデックスによって返された結果をマージして、クライアントに返すことができます。
SolrCloudにはいくつかの機能があります。
一元化された構成情報は、一元化された構成にZKを使用します。起動時に、Solr関連の構成ファイルをZookeeperにアップロードするように指定できます。これは、複数のマシンで共有できます。 ZKのこれらの構成はローカルにキャッシュされなくなり、SolrはZKの構成情報を直接読み取ります。すべてのマシンは、構成ファイルの変更を認識できます。さらに、Solrのタスクの一部は、メディアとしてZKを介してリリースされます。目的は耐障害性です。タスクを受信したが、タスクの実行中にクラッシュしたマシンは、再起動後、またはクラスターが候補を選択したときに、未完了のタスクを再度実行できます。
自動フォールトトレランス SolrCloudはインデックスをシャードし、シャードごとに複数のレプリケーションを作成します。各レプリケーションは外部サービスを提供できます。レプリケーションの失敗は、インデックスサービスに影響を与えません。さらに強力なのは、障害が発生したマシンでインデックスレプリケーションを自動的に再構築し、他のマシンで使用できることです。
ほぼリアルタイムの検索即時プッシュレプリケーション(スロープッシュもサポート)。新しく追加されたインデックスは、数秒で取得できます。
自動的に [負荷分散](https://cloud.tencent.com/product/clb?from=10680)クエリの圧力を分散するためにクエリを実行するときに、複数のレプリケーションにインデックスを付けるSolrCloudを複数のマシンに分散できます。クエリの負荷が高い場合は、マシンを拡張してレプリケーションを追加することで速度を落とすことができます。
自動的に分散されたインデックスとインデックスシャードは、ドキュメントを任意のノードに送信し、正しいノードに転送されます。
トランザクションログは、ドキュメントがディスクにインデックス付けされていない場合でも、更新が失われないことを保証します。
言及する価値のあるその他の機能は次のとおりです。
**インデックスはHDFS **に保存されます。インデックスのサイズは通常Gから数十Gの間で、数百のGがあります。このような関数は実用的ではない場合があります。ただし、インデックスを作成するデータが数億ある場合は、それを検討することもできます。この機能の最大のメリットは、以下の「MRによる一括インデックス作成」との併用にあると思います。
**MR **を使用してバッチでインデックスを作成するこの機能を使用しても、インデックスの作成が遅いことを心配していますか?
**強力なRESTfulAPI **一般に、考えられるすべての管理機能は、このAPIを介して呼び出すことができます。いくつかの保守および管理スクリプトを作成する方がはるかに便利です。
優れた管理インターフェース主な情報は一目でわかります。SolrCloudの展開と配布をグラフィカルに確認できます。もちろん、不可欠なデバッグ機能があります。
クラスタークラスター:1つのユニットとして論理的に管理されるSolrノードのグループで、クラスター全体が同じスキーマとSolrConfigのセットを使用します
ノードノード:Solrを実行しているJVMインスタンス
コレクション:SolrCloudクラスター内の論理的に完全なインデックス。多くの場合、1つ以上のシャードに分割されます。これらのシャードは同じ構成セットを使用します。シャードの数が1を超える場合、インデックス付けスキームは分散インデックスです。
コア:Solrコア。1つのSolrには1つ以上のSolrCoreが含まれます。各Solrコアは独立してインデックス作成およびクエリ機能を提供できます。Solrコアは、管理の柔軟性を高め、リソースを共有するために提案されています。
SolrCloudで使用される構成はZookeeperにあり、従来のSolrCore構成ファイルはディスクの構成ディレクトリにあります。
構成セット:SolrCoreがサービスを提供するために必要な構成ファイルのセット。各構成セットには名前があります。 solrconfig.xmlとschema.xmlを含める必要があります。初回に加えて、これら2つのファイルの構成内容によっては、他のファイルを含める必要がある場合があります。
構成セットはZookeeperに保存され、upconfigコマンドを使用して再アップロードまたは更新できます。Solrの起動パラメーターbootstrap_confdirを使用して初期化または更新できます。
シャード:コレクションの論理的なシャード。各シャードは1つ以上のレプリカに分割され、リーダーは選挙によって決定されます。
レプリカ:シャードのコピー。各レプリカはSolrのコアに存在します。
リーダー:選挙に勝ったシャードレプリカ。各シャードには複数のレプリカがあります。リーダーを決定するには、これらのレプリカを選択する必要があります。選挙はいつでも行うことができます。インデックス操作を実行すると、SolrCloudはこのシャードに対応するリーダーにインデックス操作要求を送信し、リーダーはそれらをすべてのシャードレプリカに配布します。
[ Apache SolrCloudリファレンスガイド](http://lucene.apache.org/solr/guide/6_6/solrcloud.html)
http://lucene.apache.org/solr/guide/6_6/solrcloud.html
[ Apache Solrドキュメント](https://cwiki.apache.org/confluence/display/solr/)
https://cwiki.apache.org/confluence/display/solr/
[ Solrパラメータ設定](https://cwiki.apache.org/confluence/display/solr/Format+of+solr.xml)
https://cwiki.apache.org/confluence/display/solr/Format+of+solr.xml
[ Solr制御スクリプトリファレンス](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=50234737)
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=50234737
VMwareバージョン番号:12.0.0
CentOSバージョン:CentOS 7.3.1611
Solrバージョン:solr-6.6.0
ZooKeeperバージョン:ZooKeeper-3.4.9.tar.gz特定のリファレンス["CentOs7.3 Build ZooKeeper-3.4.9 Cluster Cluster Service"](https://segmentfault.com/a/1190000010807875)
https://segmentfault.com/a/1190000010807875
JDK環境:jdk-8u144-linux-x64.tar.gz特定のリファレンス["CentOs7.3 install JDK1.8"](https://segmentfault.com/a/1190000010716919)
https://segmentfault.com/a/1190000010716919
ファイアウォールをオフにする
$ systemctl stop firewalld.service
Solr 6(およびSolrJクライアントライブラリ)のJavaサポートの最小バージョンはJava8になりました。
$ cd /opt/
$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/6.6.0/solr-6.6.0.tgz
$ tar -zxf solr-6.6.0.tgz
$ cd solr-6.6.0
クラスタ内の各マシンは、次の手順に従って構成および起動する必要があります
まず、solrインストールディレクトリのビンに移動し、solr.in.shファイルを編集します
SOLR_HOST
を検索し、コメントを外して、独自のIPに設定します
SOLR_TIMEZONE
を検索し、コメントを外して、 UTC + 8
に設定します
node1のsolr.in.shを次の構成に変更します
特にSolrCloudモードで実行している場合は、ZooKeeperに登録するときにノードのアドレスが決定されるため、Solrサーバーのホスト名を設定することをお勧めします。ipの使用はお勧めしません。
SOLR_HOST="node1"
SOLR_TIMEZONE="UTC+8"
**1. 編集したSolrファイルとnode1の構成を scp -r
を介してクラスターnode2、node3にコピーします
$ for a in{2..3};do scp -r /opt/solr-6.6.0/ node$a:/opt/solr-6.6.0; done
2. 次に、node2、node3の solr.in.sh
の SOLR_HOST
をマシンのIPに変更します
フォーマット SOLR_HOST =" ip "
$ vi /opt/solr-6.6.0/bin/solr.in.sh
$ for a in{1..3};do ssh node$a "source /etc/profile; /opt/zookeeper-3.4.9/bin/zkServer.sh start"; done
どのマシンでも、SolrCloudクラスターを起動し、ZooKeeperクラスターに関連付けます
$ for a in{1..3};do ssh node$a "source /etc/profile; /opt/solr-6.6.0/bin/solr start -cloud -z node1:2181,node2:2181,node3:2181 -p 8983 -force"; done
どのマシンでも
$ /opt/solr-6.6.0/bin/solr create_collection -c test_collection -shards 2-replicationFactor 3-force
- c
コレクションの名前を指定します
- shards
はシャードの数を指定します。これは-sと省略でき、インデックスデータはこれらのシャードに分散されます。
- ReplicationFactor
各シャードのコピー数、および各シャードは少なくとも1つの物理コピーで構成されます
応答
Connecting to ZooKeeper at node3:2181...
INFO -2017-08-2411:57:30.581; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at node3:2181 ready
Uploading /opt/solr-6.6.0/server/solr/configsets/data_driven_schema_configs/conf for config test_collection to ZooKeeper at node3:2181
Creating newcollection'test_collection' using command:
http://192.168.252.121:8983/solr/admin/collections?action=CREATE&name=test_collection&numShards=2&replicationFactor=3&maxShardsPerNode=2&collection.configName=test_collection
{" responseHeader":{"status":0,"QTime":11306},"success":{"192.168.252.123:8983_solr":{"responseHeader":{"status":0,"QTime":9746},"core":"test_collection_shard1_replica2"},"192.168.252.122:8983_solr":{"responseHeader":{"status":0,"QTime":9857},"core":"test_collection_shard1_replica3"},"192.168.252.121:8983_solr":{"responseHeader":{"status":0,"QTime":9899},"core":"test_collection_shard2_replica1"}}}
SolrCloudステータスチャート
あなたは2つの破片と3つのSolrのコピーを見ることができます
SolrCloudのステータスがわからない場合
$ /opt/solr-6.6.0/bin/solr status
応答
Found 1 Solr nodes:
Solr process 2926 running on port 8983{"solr_home":"/opt/solr-6.6.0/server/solr","version":"6.6.0 5c7a7b65d2aa7ce5ec96458315c661a18b320241 - ishan - 2017-05-30 07:32:53","startTime":"2017-08-24T08:32:16.683Z","uptime":"0 days, 0 hours, 34 minutes, 51 seconds","memory":"63.8 MB (%13) of 490.7 MB","cloud":{"ZooKeeper":"node1:2181,node2:2181,node3:2181","liveNodes":"3","collections":"1"}}
/opt/solr-6.6.0/bin/solr create_collection -c www_ymq_io_collection -shards 2 -replicationFactor 3 -force
任意のマシンで、コマンド ./solr delete-cを実行します<collection>
チェックします
/opt/solr-6.6.0/server/solr/test_collection_shard1_replica2``/opt/solr-6.6.0/server/solr/test_collection_shard2_replica2
ディレクトリを他のコレクションで使用するかどうかを設定します。そうでない場合、ディレクトリはSolrCloudクラスターから削除されます
$ /opt/solr-6.6.0/bin/solr delete-c test_collection
Connecting to ZooKeeper at node1:2181,node2:2181,node3:2181
INFO -2017-08-2417:56:53.679; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at node1:2181,node2:2181,node3:2181 ready
Deleting collection 'test_collection' using command:
http://node3:8983/solr/admin/collections?action=DELETE&name=test_collection
{" responseHeader":{"status":0,"QTime":924},"success":{"node1:8983_solr":{"responseHeader":{"status":0,"QTime":69}},"node3:8983_solr":{"responseHeader":{"status":0,"QTime":86}},"node2:8983_solr":{"responseHeader":{"status":0,"QTime":91}}}}
どのマシンでも、SolrCloudクラスターを停止します
SolrCloudモードでSolrを停止するには、 -all
を使用できます
$ for a in{1..3};do ssh node$a "source /etc/profile; /opt/solr-6.6.0/bin/solr stop -all "; done
または
$ for a in{1..3};do ssh node$a "source /etc/profile; /opt/solr-6.6.0/bin/solr stop -cloud -z node1:2181, -z node2:2181, -z node3:2181 -p 8983 -force"; done
healthcheck
コマンドは、コピー数、現在の実行ステータス、正常かどうか、各コピーの実行時間、メモリとアドレス(クラスター内のコピーの場所)など、コレクション内の各コピーに関する基本情報を収集します。
$ /opt/solr-6.6.0/bin/solr healthcheck -c test_collection -z node1:2181,node2:2181,node3:2181-p 8983-force
応答
INFO -2017-08-2416:34:26.906; org.apache.solr.client.solrj.impl.ZkClientClusterStateProvider; Cluster at node1:2181,node2:2181,node3:2181 ready
{" collection":"test_collection","status":"healthy","numDocs":0,"numShards":2,"shards":[{"shard":"shard1","status":"healthy","replicas":[{"name":"core_node3","url":"http://node1:8983/solr/test_collection_shard1_replica1/","numDocs":0,"status":"active","uptime":"0 days, 0 hours, 2 minutes, 10 seconds","memory":"58.6 MB (%12) of 490.7 MB","leader":true},{"name":"core_node5","url":"http://node2:8983/solr/test_collection_shard1_replica3/","numDocs":0,"status":"active","uptime":"0 days, 0 hours, 1 minutes, 58 seconds","memory":"50.2 MB (%10.2) of 490.7 MB"},{"name":"core_node6","url":"http://node3:8983/solr/test_collection_shard1_replica2/","numDocs":0,"status":"active","uptime":"0 days, 0 hours, 1 minutes, 46 seconds","memory":"56.3 MB (%11.5) of 490.7 MB"}]},{"shard":"shard2","status":"healthy","replicas":[{"name":"core_node1","url":"http://node1:8983/solr/test_collection_shard2_replica1/","numDocs":0,"status":"active","uptime":"0 days, 0 hours, 2 minutes, 10 seconds","memory":"58.6 MB (%12) of 490.7 MB","leader":true},{"name":"core_node2","url":"http://node3:8983/solr/test_collection_shard2_replica2/","numDocs":0,"status":"active","uptime":"0 days, 0 hours, 1 minutes, 46 seconds","memory":"58.8 MB (%12) of 490.7 MB"},{"name":"core_node4","url":"http://node2:8983/solr/test_collection_shard2_replica3/","numDocs":0,"status":"active","uptime":"0 days, 0 hours, 1 minutes, 58 seconds","memory":"51.9 MB (%10.6) of 490.7 MB"}]}]}
構成ファイルをZooKeeperクラスターにアップロード
使用可能なパラメーター(すべてのパラメーターが必要です)
- n<name>
ZooKeeperで設定された構成名は、管理インターフェイスから表示できます。メニューの[クラウド]をクリックして、[ツリー/構成]、[構成リスト]を選択します。
- d<configset dir>
構成はアップロードパスに設定されます。パスには「conf」ディレクトリが必要です。このディレクトリには、solrconfig.xmlなどが含まれています。絶対パスを提供するのが最善です
- z<zkHost>
Zookeeper IPポート、複数のzkは"、 "で区切られます
SolrCloudは、Zookeeperクラスターを使用して、構成ファイルの変更が各ノードに時間内に同期されるようにし、構成ファイルをZookeeperクラスターにアップロードできるようにします。
$ /opt/solr-6.6.0/bin/solr zk upconfig -z node1:2181,node2:2181,node3:2181-n mynewconfig -d /opt/solr-6.6.0/server/solr/configsets/basic_configs/
応答
Connecting to ZooKeeper at node1:2181,node2:2181,node3:2181...
Uploading /opt/solr-6.6.0/server/solr/configsets/basic_configs/conf for config mynewconfig to ZooKeeper at node1:2181,node2:2181,node3:2181
ZooKeeperクラスターにアップロードされたsolr構成を削除します
rm
削除 -r
再帰的に削除
$ /opt/solr-6.6.0/bin/solr zk rm -r /configs/mynewconfig -z node1:2181,node2:2181,node3:2181
応答
Connecting to ZooKeeper at node1:2181,node2:2181,node3:2181...
Removing Zookeeper node /configs/mynewconfig from ZooKeeper at node1:2181,node2:2181,node3:2181 recurse:true
Recommended Posts