升級 Solr 集群
此頁面說明如何升級使用服務安裝腳本安裝的現有 Solr 集群。
此頁面上概述的步驟假設您使用預設的服務名稱 solr 。如果您使用其他服務名稱或 Solr 安裝目錄,則必須相應地修改下面提到的一些路徑和命令。 |
本參考指南的先前版本提到了 Lucene 專案提供的 IndexUpgraderTool,如果需要,可以使用它來離線升級 Solr 索引檔。有業務需求需要使用它的使用者可以像以前一樣使用此工具,但在絕大多數升級工作流程中不需要它。下面的文件假設未使用該工具。 |
規劃您的升級
以下是在開始升級過程之前需要準備的事項清單
-
檢查Solr 升級注意事項,以確定新版本的 Solr 中的任何行為變更是否會影響您的安裝。
-
如果未使用複製 (即,
replicationFactor
小於 1 的集合),則應備份每個集合。如果您的所有集合都使用複製,則實際上不需要進行備份,因為您將會單獨升級和驗證每個節點。 -
確定哪個 Solr 節點目前在 SolrCloud 中託管 Overseer 領導者程序,因為您應該最後升級此節點。要確定 Overseer,請使用 Overseer 狀態 API。
-
如果可能,請計畫在系統維護期間執行升級。您將對集群執行滾動重新啟動 (每個節點逐一重新啟動),但我們仍然建議在系統使用率最低時執行升級。
-
驗證集群目前是否狀況良好且所有副本都處於活動狀態,因為您不應在降級的集群上執行升級。
-
針對新的 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 節點指向您現有的 Solr 主目錄,其中管理著節點上每個集合的 Lucene 索引檔案。這表示您無需移動任何索引檔案即可執行升級。
步驟 1:停止 Solr
首先停止您想要升級的 Solr 節點。停止節點後,如果使用複製 (例如,replicationFactor
小於 1 的集合),請確認在已關閉節點上託管的所有領導者已成功遷移到其他複本;您可以透過造訪 Solr 管理介面中的雲端畫面來執行此操作。如果未使用複製,則任何在已關閉節點上託管分片的集合將會暫時離線。
步驟 2:將 Solr 安裝為服務
請按照 將 Solr 部署到生產環境文件中說明的方式,將 Solr 安裝為 Linux 上的服務。使用 -n
參數以避免安裝程式腳本自動啟動 Solr。您需要在下一步更新 /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