Коллеги!
Я использую php 5.3 (5.3.8) с клиентской библиотекой memcache (2.2.6) (http://pecl.php.net/package/memcache) для работы с сервером memcached. Моя цель - иметь решение для отработки отказа для механизма сессий, а именно:
- Поддержка только нативных сессий php (без пользовательских обработчиков)
- Несколько серверов memcached в пуле
Я ожидаю, что в случае, если один из memcachedсерверы не работают, php попытается использовать второй сервер в пуле [успешно подключится и станет счастливым], однако, когда первый сервер memcached в пуле не работает, я получаю следующую ошибку:
Session start failed. Original message: session_start(): Server 10.0.10.111 (tcp 11211) failed with: Connection refused (111)
в то время как соответствующие настройки php:
session.save_handler memcache
session.save_path tcp://10.0.10.111:11211?persistent=1&weight=1&timeout=1&retry_interval=10, tcp://10.0.10.110:11211?persistent=1&weight=1&timeout=1&retry_interval=10
и настройки memcache (хотя я думаю, что это близко к стандартному):
Directive Local Value
memcache.allow_failover 1
memcache.chunk_size 8192
memcache.default_port 11211
memcache.default_timeout_ms 1000
memcache.hash_function crc32
memcache.hash_strategy standard
memcache.max_failover_attempts 20
Memcached все еще работает на втором сервере и отличнодоступ с веб-сервера:
telnet 10.0.10.110 11211
Trying 10.0.10.110...
Connected to 10.0.10.110 (10.0.10.110).
Escape character is '^]'.
get aaa
END
quit
Connection closed by foreign host.
Другими словами, вместо последовательного запроса всех перечисленных серверов происходит сбой после неудачной попытки подключения первого сервера.в очереди.Наконец, я понимаю, что доступны версии клиентской библиотеки 3.0.x, однако она не выглядит для меня слишком надежной, поскольку она все еще находится в бета-версии.
Посоветуйте, пожалуйста, как мне получить желаемое поведение со стандартным PHP, клиентской библиотекой и сервером.
Большое спасибо!
Best, Eugene