【问题标题】:Many apps server sharing memcached servers许多应用服务器共享 memcached 服务器
【发布时间】:2017-04-05 09:37:13
【问题描述】:

我在 Centos 上有 6 个应用服务器 (PHP) 我想在每个上安装一个 memcached 来共享会话。

但是我在使用 2 台服务器进行测试时遇到了第一个问题。 Memcached 只能在本地正常工作(这不是防火墙问题):

服务器 1 在 centos 上使用 PHP 和 memcached 作为服务器 2

在服务器 1 上:

memcached-tool Server1:11211

工作正常,但是:

memcached-tool Server2:11211

失败(无法连接到 Server2:11211)

在服务器 2 上

memcached-tool Server2:11211 

工作正常,但是

memcached-tool Server1:11211

失败(无法连接到 Server1:11211)

在 /etc/sysconfig/memchached 我尝试了该选项

-l 0.0.0.0

确保监听每个 IP 但同样的错误。

telnet Server 11211 给出与 memcached-tool 命令相同的结果

尽管有 php-memcached 库和 session.save_handler = 内存缓存 在 php.ini 中

我尝试了 session.save_path

to test Server1 with memcached on Server1 => success
to test Server2 with memcached on Server1 => fails  
to test Server2 with memcached on Server2 => success
to test Server1 with memcached on Server2 => fails

感谢您的帮助。 贝努瓦

【问题讨论】:

  • 我说先检查你的防火墙
  • 已经检查过了,不是防火墙问题,服务器在同一个VLAN :-(
  • 直到你可以证明你可以在任何端口上从一台机器连接到另一台机器,并在所需端口(telnet、nc)上从一台机器连接到另一台机器,它仍然闻起来像寻址或网络问题。如果你有,那很公平,但你的回复细节很少。听起来您假设它们可以相互访问,仅仅是因为它们在同一个 C 级上,也许它们是,也许它们不是。就像我说的,还不清楚。
  • 11211 上的 telnet 命令给出(来自 Server1):telnet Server2 11211 telnet: connect to address Server2: No route to host 例如端口 9000 已关闭并且 telnet 9000 上的命令给出(来自 Server1)telnet Server2 9000 telnet:连接到地址 Server2:连接被拒绝

标签: php session centos memcached


【解决方案1】:

我终于找到了解决办法。

这是防火墙问题,但不是网络防火墙。

Red Hat / Centos 有一个名为 firewalld 的系统防火墙

所以你必须在防火墙中添加 11211 端口:

firewall-cmd --add-port=11211/tcp --permanent 
firewall-cmd --reload

【讨论】:

  • 不要这样做!您刚刚将 memcached 开放到 Internet,这会使您的缓存数据暴露在外。
  • 我们背后有真正的防火墙 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 2016-02-21
相关资源
最近更新 更多