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

Лучший способ хранить сеансы с высокой доступностью / высокой производительностью в среде с несколькими серверами

У меня есть приложение (Magento) с абстрактным уровнем хранения сеанса. Я пытаюсь представить, как лучше всего хранить сеансы.

База данных mysql? Я думаю о выделенной базе данных с очень большим innodb_buffer_pool_size, так что это в основном похоже на кэш ОЗУ с резервным копированием диска. Я думаю о том, чтобы иметь отдельную БД только для сеансов и разместить другие материалы БД на отдельном сервере БД / БД.

Memcache? Это здорово, но меня немного беспокоит, что произойдет, если сервер выйдет из строя? Я бы потерял этот раздел сеансов из-за сбоя, потому что, насколько я понимаю, Memcache не распространяется. Могу я сделать это дистрибутивом? (Мне только что сказали, что я могу использовать модуль pecl memcache> = 3

tmpfs для хранения файлов в памяти? Это работает, но мне пришлось бы синхронизировать сеанс записи со всеми другими серверами, используя rsync или что-то, что определяет, когда запись происходит в этой папке. Я уверен, что для этого должно что-то существовать.

Другое решение, о котором я не думаю? Люблю идеи.

Спасибо!

Memcache? Это здорово, но меня немного беспокоит, что произойдет, если сервер выйдет из строя? Я бы потерял этот раздел сеансов из-за сбоя, потому что, насколько я понимаю, Memcache не распространяется. Могу я сделать это дистрибутивом? (Мне только что сказали, что я могу использовать модуль pecl memcache> = 3

я использую перекэшированный. Он запускается, как показано ниже:

  • на сервере 1:

    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached.pid -x <server2_ip>

  • на сервере 2:

    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached.pid -x <server1_ip>

Конфигурация расширения PHP Memcache:

extension=memcache.so
memcache.allow_failover = 1
memcache.redundancy = 1
memcache.session_redundancy=2
memcache.hash_strategy = consistent

И обработчик сеанса в php.ini:

session.save_handler = memcache
session.save_path="tcp://ip1:11211, tcp://ip2:11211"