Настройка просмотра магазина на другом хосте - PullRequest
0 голосов
/ 15 марта 2012

У меня есть интернет-магазин Magento 1.4 с несколькими магазинами, каждый магазин - это отдельный язык.В целях SEO мой клиент хотел запустить представление немецкого магазина на другом (немецком) хосте.

Для этого я:

  • клонировал весь код на второй (немецкий) сервер.
  • изменил index.php на немецком сервере, чтобы запустить представление правильного хранилища
  • настроить cronjob для синхронизации папки / media каждый час
  • разрешить использование немецкого магазинасоединение с основной базой данных (общая база данных)

Казалось бы, все работает нормально, но разные клиенты сообщают о наличии внутренних ошибок сервера, и иногда при первом посещении отображается искаженный (двоичный) текст.После одной или двух перезагрузок все снова работает.

Я пытался кое-что исправить:

  • отключил gzip на обоих серверах
  • установил memcache, пусть немецкое хранилище подключается к главному хранилищу

Кажется, ничего не работает.Так что мне было интересно, Есть ли официальный / 'правильный' способ поделиться одним интернет-магазином между несколькими хостами, используя версию сообщества.И если есть, что я могу делать не так?

1 Ответ

1 голос
/ 16 марта 2012

Ваша проблема ...

Насколько "отдалены" два сервера?

Если довольно далеко, даже с 100 МбитСоединение / 1Gbit, задержка будет искажать ваше соединение MySQL, и очень вероятно, что эта задержка является причиной ваших странных проблем.Это также повлияет, почти на гибель, на любые преимущества Memcache (если вы используете удаленный экземпляр Memcache).Во всяком случае, у вас должен быть запущен экземпляр Memcache на каждом сервере.

У вас есть туннель MySQL через SSH (Xinetd / постоянный туннель SSH и т. Д.)?

безопасность отличная, но сжатие добавит накладных расходов.Также имейте в виду, что использование Xinetd добавит дополнительную задержку для открытия / закрытия соединения.

Если оно не туннелировано - вы подвергаете свой магазин и своих клиентов риску, отправляя конфиденциальные текстовые данные.

Лучшее и самое простое решение

Ну, мой первоначальный совет - не запускать магазин на двух разных хостах.Но вместо этого найдите хост, который может предоставить вам IP в двух разных подсетях, представленных в одном и том же центре обработки данных (я предполагаю, что проблема вашего клиента - геолокация IP).Тогда вы можете сохранить 1 кодовую базу.

Если два разных диапазона IP-адресов не найдены, я бы просто сказал вашему клиенту следить за этим, даже если Google скажет, что местоположение IP-адреса не имеет отношения к SERP.

http://www.youtube.com/watch?v=keIzr3eWK8I&noredirect=1

Более сложное решение

Запуск распределенного хранилища, где серверы имеют глобальное разнообразие, приведет к множеству проблем (а именно к скорости), если вы используете один удаленный сервер базы данных.

Желательно, чтобы ваш сервер баз данных находился на том же сайте, что и веб-сервер, обслуживающий ваш основной рынок;затем установите второй веб-сервер на вторичном рынке.

Затем на дополнительном веб-сервере настройте подчиненный экземпляр MySQL и попросите Magento выполнить все его чтения локально (с подчиненного сервера) и выполнить запись на удаленный сервер.сервер.Вы будете вызывать задержку при записи, и у ведомых обновлений будет то же самое - но это наиболее удовлетворительное решение (если вы настаиваете на подходе к нему сложным образом).

Использование экземпляра Varnish перед обоими сетямиСерверы помогут устранить любые проблемы с производительностью и предоставят конечным пользователям всесторонний приятный опыт.

Это тип развертывания, который мы будем использовать при обращении к магазину Enterprise Magento, который нацелен на несколько глобальных рынков и настаивает на использованииодно представление хранилища администрирования (а не множество «фидерных» хранилищ в одной системе ERP).

...