共有する方法PHP複数のMemcachedサーバーでのセッション の記事に従って、それを自分の環境に実装しようとしています:
_/etc/php.d/memcache.ini
_:
_# grep -v ^\; /etc/php.d/memcache.ini
extension=memcache.so
memcache.allow_failover=1
memcache.session_redundancy=2
session.save_handler=memcache
session.save_path='tcp://192.168.52.143:11211, tcp://192.168.52.142:11211'
#
_
phpinfo();
:
_# php -i | grep -E 'memcache.allow_failover|memcache.session_redundancy|session.save_handler|session.save_path'
memcache.allow_failover => 1 => 1
memcache.session_redundancy => 2 => 2
session.save_handler => memcache => memcache
session.save_path => tcp://192.168.52.142:11211, tcp://192.168.52.143:11211 => tcp://192.168.52.142:11211, tcp://192.168.52.143:11211
#
_
どちらのシステムも_RHEL6
_であり、実行中__php-5.3.3
_です。
_# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.6 (Santiago)
# rpm -q php php-pecl-memcache
php-5.3.3-40.el6_6.x86_64
php-pecl-memcache-3.0.5-4.el6.x86_64
#
_
TCP
賢明:_.142
_は_.143:11211
_に到達でき、_.143
_は_.142:11211
_に到達でき、SELinux
はPermissive
モードです。
一部のチャンクが1つのmemcached
サーバーに保存されているのを確認できますが、別のサーバーには保存できません。
私は何が間違っているのですか?
私が書いたそのDigitalOceanの記事にはmemcache.session_redundancy
があり、構成ファイルはmemcache.redundancy
を使用しています。両方が異なり、それが期待どおりに機能しない理由である可能性があります。
memcache.redundancy
のデフォルト値は1
であり、この設定では問題なく機能します。
extension=memcache.so
memcache.allow_failover=1
memcache.session_redundancy=2
session.save_handler=memcache
session.save_path = 'tcp://192.168.52.143:11211,tcp://192.168.52.142:11211'
http://php.net/manual/en/memcache.ini.php
あなたのコメント:
IPは別のサーバーでは逆ですが、構文は同じです。
ここに問題があります。session.save_path
はすべてのサーバーで正確でなければなりません。
したがって、両方のサーバーに'tcp://192.168.52.143:11211,tcp://192.168.52.142:11211'
が必要です
その記事のステップ2を読んでください。3つのサーバーはすべてまったく同じ順序です。
memcache.session_redundancy
の値はnoと等しくなければなりません。 PHPのバグ によるサーバーの+ 1。
したがって、あなたのケースではそれはでなければなりません:
memcache.session_redundancy=3