
저는 현재 한 쌍의 클러스터된 Apache 웹 서버에서 실행되는 Magento Enterprise 1.12 설치 작업을 하고 있습니다. 내 웹 서버는 모두 마스터-마스터 MySQL 구성으로 클러스터링된 별도의 서버에 있는 자체 데이터베이스에서 가져옵니다.
내 문제는 Solr 3.6.1을 그림에 도입하려고 하는데 이를 내 클러스터에 올바르게 추가하는 방법을 다소 확신할 수 없다는 것입니다. 하나의 Solr 인스턴스(아마도 다른 서버에)를 설정하고 두 사이트를 모두 가리킬 수 있어야 합니까, 아니면 두 서버 모두에 대해 독립 실행형 Solr 인스턴스가 필요합니까? 어떤 방식으로든 두 개의 Solr 인스턴스를 함께 구성해야 합니까? 충분한 정보를 제공하지 못했다면 사과드립니다.
답변1
서버 중 하나에 solr을 설정하고 Magento 관리 구성에서 Solr Server Hostname
이 서버 주소로 구성해야 합니다(별도의 도메인 이름이 없으면 거기에 IP 주소를 입력하세요). Mysql 복제가 있으므로 둘 다 동일한 구성을 사용합니다. .
두 번째 서버 내에서 호스트 이름과 포트(예: 8080)에 액세스할 수 있는지 확인하세요.
답변2
Slayer가 기본적인 답변을 제공했습니다. Solr run은 Java 앱이며 getty와 같은 Java 웹 서버에서 실행됩니다. 이제 Apache가 포트 80에서 실행된다고 가정하면 두 웹 서버가 모두 해당 solr 서버와 통신할 수 있도록(127.0.0.1이 아닌 magento 구성의 실제 IP 주소를 사용하여) 네트워크 외부의 누구도 통신할 수 없도록 네트워크를 구성해야 합니다.
또한 작동하지 않는 문제가 발생했기 때문에 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를 통해 쉘에서 전체 텍스트 인덱서를 실행하면 제대로 작동하지 않습니다. 이벤트가 시작되지 않습니다. 따라서 UI에서 실행하십시오. 하지만 가지고 있는 제품 수에 따라 작업이 4시간 이상 걸리기 때문에 문제가 됩니다. 빠른 수정은 전체 텍스트 인덱서 기능에 대한 PHP 시간 초과를 조정하는 것입니다. 분명히 아파치 시간 제한은 짧아야 하기 때문입니다. 계속해서 짧아질 수 있지만 PHP 시간 초과가 길면 아파치가 데드 페이지를 표시하더라도 계속 실행되어야 합니다.
또한 최신 magento는 전체 텍스트 인덱서 코드를 트랜잭션으로 래핑합니다. 결과적으로 사이트에서 실행 및 검색하는 동안 Catalogsearch_query 테이블에 "대기 잠금 시간 초과"가 반환됩니다. 우리는 그것을 포장하는 거래를 제거했고 괜찮았습니다.