Назад | Перейти на главную страницу

Как правильно реализовать Apache Solr в кластерной среде Magento?

В настоящее время я работаю с установкой Magento Enterprise 1.12, работающей на паре кластерных веб-серверов Apache. Оба моих веб-сервера используют свои собственные базы данных на отдельных серверах, которые сгруппированы в конфигурации Master-Master MySQL.

Моя проблема в том, что я пытаюсь представить Solr 3.6.1 на картинке, и я несколько не уверен, как правильно добавить его в свой кластер. Должен ли я установить один экземпляр Solr (возможно, на другом сервере) и указать на него оба сайта, или мне нужен отдельный экземпляр Solr для обоих серверов? Нужно ли мне каким-то образом настроить два экземпляра Solr вместе? Прошу прощения, если я не предоставил достаточно информации.

Вы должны настроить solr на одном из ваших серверов и в конфигурации Magento Admin настроить Solr Server Hostname в качестве адреса этого сервера (если у вас нет отдельных доменных имен, вставьте туда IP-адрес) - поскольку у вас есть репликация Mysql, они оба будут использовать одну и ту же конфигурацию.

Просто убедитесь, что имя хоста и порт (например, 8080) доступны на вашем втором сервере.

Slayer дал основной ответ. Solr run - это Java-приложение, работающее на Java-сервере, таком как getty. Теперь, предполагая, что ваш apache работает на порту 80, вы должны настроить свою сеть так, чтобы оба веб-сервера могли разговаривать с этим сервером solr (используя реальный IP-адрес в вашей конфигурации magento, а не 127.0.0.1), но никто вне сети не может.

Кроме того, я бы использовал ЭТО в качестве вашей безопасности, а не аутентификацию httpauth, потому что мы столкнулись с проблемами, когда это не сработало. В основном magento отправляет пинг во время некоторых операций без учетных данных и терпит неудачу и, таким образом, не отправляет настоящий запрос С кредитами.

ХОРОШО. Еще один важный момент - «полнотекстовая индексация».

У меня здесь длинный ответ по поводу переполнения стека 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, он не будет работать должным образом. Событие не запускается. Так что запустите его из пользовательского интерфейса. Однако это проблема, потому что операция займет более 4 часов в зависимости от количества имеющихся у вас продуктов. Быстрое решение - настроить тайм-аут php вокруг функциональности полнотекстового индексатора. Потому что, очевидно, ваши таймауты apache должны быть короткими. Они могут быть короткими, но если тайм-аут php велик, он должен продолжать работу, даже если apache покажет мертвую страницу.

Также новейшая версия Magento оборачивает код полнотекстового индексатора в транзакцию. В результате во время его работы и поиска на сайте возвращается «тайм-аут блокировки ожидания» для таблицы catalogsearch_query. Мы удалили упаковку транзакции, и все было в порядке.