套件管理
與套件管理員互動
套件管理員 (CLI) 可讓您
-
新增信任的存放庫
-
列出存放庫中的套件
-
安裝所需的套件
-
將套件部署和取消部署至/從集合或叢集
-
在有可用更新時更新套件
啟用套件管理員
套件管理員預設為停用。若要啟用它,請使用 -Denable.packages=true
參數啟動所有 Solr 節點。
$ bin/solr start -c -Denable.packages=true
啟用套件管理員會產生安全方面的後果。如果未經授權的使用者取得系統的存取權,他們將擁有 ZooKeeper 的寫入權限,並可以從不受信任的來源安裝套件。在啟用套件管理員之前,請務必使用防火牆和設定驗證與授權來保護 Solr 的安全。 |
新增信任的存放庫
存放庫是一個託管一個或多個套件的位置。通常,這是一個 Web 服務,它提供有關套件的中繼資訊、用於下載的套件構件,以及用於在安裝時驗證 jar 檔案簽名的公開金鑰。
為了將套件安裝到 Solr 中,必須新增一個託管這些套件的存放庫。
$ bin/solr package add-repo <repository-name> <repository-url>
請勿新增您不信任或無法控制的存放庫。僅新增基於 HTTPS 的存放庫,並避免基於 HTTP 的存放庫,以防範 MITM 攻擊。 |
列出和安裝套件
若要列出已安裝的套件
$ bin/solr package list-installed
若要列出可從新增的存放庫安裝的套件
$ bin/solr package list-available
要安裝套件,需將儲存庫中的構件複製到 Solr 的內部套件儲存區,並設定此套件的類別載入器以供使用。
$ bin/solr package install <package-name>[:<version>]
部署套件
一旦套件安裝完成,其中包含的插件即可在集合或叢集層級中使用。
有兩種方法可以實現:使用 CLI 的 deploy
命令或手動部署。
deploy 命令
如果套件作者聲明支援,則可以使用 CLI 的 deploy
命令部署套件。
$ bin/solr package deploy <package-name>:[version] --collections <collection1>[,<collection2>,...] [-p <param1>=<val1> -p <param2>=<val2> ...
或者
$ bin/solr package deploy <package-name>:[version] --cluster
如果套件接受設定命令的參數,則可以指定這些參數(依照套件文件所述)。
$ bin/solr package deploy <snipped...> -p <param1>=<val1> -p <param2>=<val2>
作者可能希望您透過提示來確認套件的部署。如果您將 -y
傳遞給命令,則可以跳過確認。
手動部署
也可以透過編輯組態集並重新載入集合來手動部署套件的集合層級插件。
例如,如果名為 mypackage
的套件包含一個請求處理器,我們將其添加到組態集的 solrconfig.xml
中,如下所示:
<requestHandler name="/myhandler" class="mypackage:full.path.to.MyClass"></requestHandler>
接下來,設定此集合正在使用的套件版本。如果集合名為 collection1
,套件名稱為 mypackage
,且已安裝的版本為 1.0.0
,則命令將如下所示:
curl "https://127.0.0.1:8983/api/collections/collection1/config/params" \
-H 'Content-type:application/json' -d "{set: {PKG_VERSIONS: {mypackage: '1.0.0'}}}"
若要手動安裝叢集層級插件,請參閱叢集層級請求處理器。
更新套件
為了更新套件,第一步是執行列出並安裝套件中所示的 list-available
命令,以確保更新的版本在已新增的儲存庫中可用。
接著,從儲存庫安裝新版本的套件。
$ bin/solr package install <package-name>:<version>
安裝新版本後,您可以選擇性地更新每個集合或叢集層級插件。假設舊版本的套件 mypackage
為 1.0.0
,而新版本為 2.0.0
,則命令如下:
$ bin/solr package deploy mypackage:2.0.0 --update --collections mycollection
或者
$ bin/solr package deploy mypackage:2.0.0 --update --cluster
您可以執行 list-deployed
命令來驗證此集合正在使用新添加的版本。
安全性
add-repo
步驟應僅使用啟用 HTTPS 的儲存庫 URL 執行,以防止在 Solr 擷取儲存庫的公開金鑰時遭受 MITM 攻擊。此 add-repo
步驟會註冊受信任儲存庫的公開金鑰,因此只能使用可直接寫入套件儲存區受信任儲存區的套件管理員(CLI)執行(套件儲存區中無法使用套件儲存區 API 寫入的特殊位置)。此外,保護 ZooKeeper 免受未經授權的寫入存取至關重要。
此外,請記住,一旦新增儲存庫,就可以從該儲存庫安裝**任何**套件。如果您想在生產環境中使用某些套件,最佳實踐是設定您自己的儲存庫,並將其新增到 Solr 中,而不是新增超出您管理控制範圍的通用第三方儲存庫。您可能需要使用自己的私密金鑰重新簽署來自第三方儲存庫的套件,並將它們託管在您自己的儲存庫中。