Solrクラスターのアップグレード
このページでは、サービスインストールスクリプトを使用してインストールされた既存のSolrクラスターをアップグレードする方法について説明します。
このページで概説する手順では、デフォルトのサービス名solr を使用することを前提としています。別のサービス名またはSolrインストールディレクトリを使用する場合は、以下に記載されているパスとコマンドの一部を適宜変更する必要があります。 |
アップグレードの計画
アップグレードプロセスを開始する前に準備する必要がある事項のチェックリストを以下に示します。
-
Solrアップグレードノートを確認して、新しいバージョンのSolrでの動作変更がインストールに影響を与えるかどうかを判断してください。
-
レプリケーションを使用していない場合(つまり、
replicationFactor
が1未満のコレクション)、各コレクションのバックアップを作成する必要があります。すべてのコレクションがレプリケーションを使用している場合は、各ノードを個別にアップグレードおよび検証するため、技術的にはバックアップを作成する必要はありません。 -
SolrCloudで現在OverseerリーダプロセスをホストしているSolrノードを特定します。このノードは最後にアップグレードする必要があります。Overseerを特定するには、OverseerステータスAPIを使用します。
-
可能な場合は、システムメンテナンスウィンドウ中にアップグレードを実行することを計画してください。クラスターのローリング再起動(各ノードを1つずつ)を実行しますが、システムの使用率が最小限のときにアップグレードを実行することをお勧めします。
-
クラスターが現在正常であり、すべてのレプリカがアクティブであることを確認します。劣化しているクラスターではアップグレードを実行しないでください。
-
新しいSolr JARファイルに対して、すべてのカスタムサーバー側コンポーネントを再構築してテストします。
-
Solrコントロールスクリプトで使用される次の変数の値を決定します。
-
ZK_HOST
: 現在のSolrCloudノードがZooKeeperに接続するために使用するZooKeeper接続文字列。この値は、クラスター内のすべてのノードで同じになります。 -
SOLR_HOST
: 各SolrノードがSolrCloudクラスターに参加するときにZooKeeperに登録するために使用したホスト名。この値は、新しいSolrプロセスを開始するときにhost Javaシステムプロパティを設定するために使用されます。 -
SOLR_PORT
: 各Solrノードがリッスンしているポート(例:8983)。 -
SOLR_HOME
: 各SolrノードのSolrホームディレクトリへの絶対パス。この値は、solr.solr.home
システムプロパティを使用して新しいSolrプロセスに渡されます。参照:solr.xmlの設定。Solr 5.x以降のインストールからアップグレードする場合は、これらの値は通常、
/var/solr/solr.in.sh
または/etc/default/solr.in.sh
のいずれかにあります。
-
これでクラスターをアップグレードする準備が整いました。本番環境で実行する前に、テストクラスターまたはステージングクラスターでこのプロセスを検証してください。
アップグレードプロセス
推奨するアプローチは、Solrの各ノードを一つずつアップグレードすることです。言い換えれば、ノードを停止し、Solrの新しいバージョンにアップグレードし、次のノードに進む前に再起動する必要があります。これは、短期間の間、クラスター内で「旧Solr」と「新Solr」のノードが混在して実行されることを意味します。また、新しいSolrノードが、ノード上の各コレクションでLuceneインデックスファイルを管理している既存のSolrホームディレクトリを指すことを想定しています。これは、アップグレードを実行するためにインデックスファイルを移動する必要がないことを意味します。
ステップ 1: Solr を停止する
まず、アップグレードするSolrノードを停止します。ノードを停止した後、レプリケーションを使用している場合(つまり、replicationFactor
が1未満のコレクション)、ダウンしたノードでホストされていたすべてのリーダーが他のレプリカに正常に移行したことを確認します。これは、Solr Admin UIのCloud Screensにアクセスすることで確認できます。レプリケーションを使用していない場合、ダウンしたノードでシャードがホストされているコレクションは一時的にオフラインになります。
ステップ 2: Solr をサービスとしてインストールする
Solrを本番環境に導入するに記載されているLinuxでのSolrをサービスとしてインストールする手順に従ってください。インストーラースクリプトによるSolrの自動起動を避けるために、-n
パラメータを使用します。アップグレードプロセスを完了するには、次のステップで/etc/default/solr.in.sh
インクルードファイルを更新する必要があります。
既存のSolrインストールで |
ステップ 3: 環境変数オーバーライドを設定する
テキストエディタで/etc/default/solr.in.sh
を開き、次の変数が正しく設定されていることを確認するか、必要に応じてインクルードファイルの末尾に追加します。
ZK_HOST=
SOLR_HOST=
SOLR_PORT=
SOLR_HOME=
Solrプロセスを所有する予定のユーザーが、SOLR_HOME
ディレクトリの所有者であることを確認してください。たとえば、Solrを「solr」ユーザーとして実行し、SOLR_HOME
が/var/solr/data
である場合、sudo chown -R solr: /var/solr/data
を実行します。
ステップ 4: Solr を起動する
sudo service solr start
を実行して、アップグレードされたSolrノードを起動する準備ができました。アップグレードされたインスタンスは、古いSolrノードで使用していた同じSOLR_HOME
、SOLR_PORT
、およびSOLR_HOST
設定を使用しているため、既存のクラスターに参加します。したがって、新しいサーバーは実行中のクラスターにとって古いノードのように見えます。起動中にエラーが発生した場合、/var/solr/logs/solr.log
を確認してください。
ステップ 5: ヘルスチェックを実行する
クラスター内の次のノードをアップグレードする前に、アップグレードしたノードでホストされているすべてのコレクションに対してSolrのヘルスチェックコマンドを実行する必要があります。たとえば、新しくアップグレードしたノードがMyDocumentsコレクションのレプリカをホストしている場合は、次のコマンドを実行できます(ZK_HOST
をZooKeeper接続文字列に置き換えてください)。
/opt/solr/bin/solr healthcheck -c MyDocuments -z ZK_HOST
コレクションのレプリカに関する問題が報告されていないか確認してください。
最後に、クラスター内のすべてのノードに対してステップ1〜5を繰り返します。