Мы используем Zend Cache с memcached-сервером, указывающим на кластер AWS ElastiCache с двумя узлами кеша. Наша настройка кеша выглядит так:
$frontend = array(
'lifetime' => (60*60*48),
'automatic_serialization' => true,
'cache_id_prefix' => $prefix
);
$backend = array(
'servers' => array(
array( 'host' => $node1 ),
array( 'host' => $node2 )
)
);
$cache = Zend_Cache::factory('Output', 'memecached', $frontend, $backend);
Мы не замечали никаких проблем с кешем в прошлом при использовании одного сервера EC2 для записи и чтения из кеша.
Однако недавно мы представили второй сервер EC2, и внезапно мы видим проблемы при записи в кеш с одного сервера и чтения из другого. Оба сервера управляются одной и той же учетной записью AWS, и ни один из серверов не имеет проблем с записью или чтением из кеша отдельно. Такая же конфигурация кэша используется для обоих.
Сервер A выполняет $cache->save('hello', 'message');
Последующие вызовы $cache->load('message');
с сервера A возвращают ожидаемый результат привет.
Однако, когда сервер B выполняет $cache->load('message');
, мы получаем false.
Насколько я понимаю ElastiCache, сервер, делающий запрос на чтение, не должен иметь никакого отношения к возвращаемому кешу. Может ли кто-нибудь пролить свет на это?