前提・実現したいこと
PHPのWebアプリケーションを作成しています。
memcachedのサーバーを2台用意してデータを各サーバーに分散して書き込みを行う際に、
片方のサーバーがダウンなどで接続できない場合に自動でもう片方のサーバーに切り替えて書き込みを行うようにしたいです。
発生している問題・エラーメッセージ
ダウンしたサーバーに書き込みをしていた場合、
同じキーで書き込みをした場合にMemcached::getResultCodeで以下のコードが返ってきて書き込み、読み込み不能になります。
書き込みをしていたサーバーがダウンした時に、もう一台のサーバーに自動で切り替えて書き込み、読み込みができる方法はないでしょうか?
MEMCACHED_HOST_LOOKUP_FAILURE MEMCACHED_SERVER_MARKED_DEAD
該当のソースコード
php
1// 接続サーバー 2$servers = [ 3 ['test001-server', 50011], 4 ['test002-server', 50011], 5]; 6 7$memcached = new Memcached('connection-pool'); 8// memcachedオプション 9$memcached->setOption(Memcached::OPT_CONNECT_TIMEOUT, 50); 10$memcached->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT); 11$memcached->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); 12$memcached->setOption(Memcached::OPT_SERVER_FAILURE_LIMIT, 1); 13$memcached->setOption(Memcached::OPT_REMOVE_FAILED_SERVERS, true); 14$memcached->setOption(Memcached::OPT_RETRY_TIMEOUT, 1); 15 16 if (count($memcached->getServerList()) === 0) { 17 $memcached->addServers($servers); 18 } 19// 値をsetまたはget 20// ここでsetしていたサーバーがダウンした場合に書き込み不能となる 21$memcached->set('key01', 'value01', 3600); 22 23
試したこと
以下のFor a proper FailOver mechanism:を参考に実装
http://php.net/manual/ja/memcached.addservers.php
memcached->setOptionのパラメータを変えて試したりしましたが、
改善はしませんでした。
補足情報(FW/ツールのバージョンなど)
・apache 2.4.6
・PHP 7.2.15
・memcached 1.4.15
・PHP memcached拡張モジュール 3.1.3
・libmemcached 1.0.18
ご教授のほどよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/14 02:47