如何在叢集 Magento 環境中正確實作 Apache Solr?

如何在叢集 Magento 環境中正確實作 Apache Solr?

我目前正在使用在一對叢集 Apache Web 伺服器上執行的 Magento Enterprise 1.12 安裝。我的兩個 Web 伺服器都從獨立伺服器上各自的資料庫中提取數據,這些伺服器以主-主 MySQL 配置進行叢集。

我的問題是,我試圖將 Solr 3.6.1 引入圖片中,但我有點不確定如何將其正確添加到我的叢集中。我是否應該能夠設定一個 Solr 實例(可能在另一台伺服器上)並將兩個網站都指向它,或者我需要為兩台伺服器提供一個獨立的 Solr 實例?我是否需要以某種方式將兩個 Solr 實例配置在一起?如果我沒有提供足夠的信息,我深表歉意。

答案1

您應該在其中一台伺服器上設定 solr,並在 Magento 管理配置中配置Solr Server Hostname為該伺服器位址(如果您沒有單獨的域名,請在此處插入IP 位址)-因為您有Mysql 複製,所以它們都將使用相同的配置。

只需確保主機名稱和連接埠(如 8080)可從第二台伺服器內存取即可。

答案2

Slayer給了基本的答案。 Solr run 是一個 java 應用程序,運行在像 getty 這樣的 java web 伺服器中。現在假設你的apache 在連接埠80 上運行,你應該配置你的網絡,以便兩個Web 伺服器都可以與該solr 伺服器通訊(使用你的magento 配置中的真實IP 位址,顯然不是127.0.0.1),但網路以外的任何人都不能。

此外,我會使用它作為您的安全性,而不是 httpauth 身份驗證,因為我們遇到了它不起作用的問題。基本上,magento 在某些沒有憑證的操作期間發送 ping 並失敗,因此不會發送帶有憑證的真實查詢。

好的。另一個重要的一點是「全文索引」。

我在這裡有一個關於堆疊溢出的長答案https://stackoverflow.com/questions/11667728/magento-1-12-and-solr-3-6-no-proper-results-and-no-spell-suggestions/12984270#12984270但我會盡量簡短。

如果您透過 php shell/indexer.php --reindex-all Catalogsearch_fulltext 從 shell 執行全文索引器,它將無法正常運作。事件不會被觸發。因此從 UI 運行它。但這是一個問題,因為操作將需要 4 個多小時,具體取決於您擁有的產品數量。快速修復是圍繞全文索引器功能調整 php 逾時。因為顯然你的 apache 逾時應該很短。它們可以繼續很短,但如果 php 逾時很長,即使 apache 將顯示死頁,它也應該繼續運行。

此外,最新的 magento 將全文索引器程式碼包裝在事務中。因此,當它運行時,網站上的搜尋會在catalogsearch_query 表上傳回「等待鎖定逾時」。我們刪除了包裝它的交易,一切都很好。

相關內容