有人使用过 Memcached 和 IPv6 吗?您能提供一些配置技巧、问题,或者提到您遇到的任何稳定性问题吗?
答案1
memcached 确实支持 IPv6。您可以在启动时使用-l
参数指定它。与默认安装相比,IPv4 和 IPv6 的行为如何?让我们看一个 Debian 会话,我们在其中安装 memcached、监听默认端口,并启动两个 memcached 守护进程,一个绑定到 v6 IP,一个绑定到 v4 IP。
Linux 主机名 3.0.4-linode38 #1 SMP 星期四 2011 年 9 月 22 日 14:59:08 EDT i686 Debian GNU/Linux 系统附带的程序是免费软件; 每个计划的具体分配条款在 /usr/share/doc/*/copyright 中的单个文件。 Debian GNU/Linux 绝对不提供任何保证, 适用法律允许。 root @主机名:〜#apt-get install memcached 设置 memcached (1.4.5-1) ... 启动memcached:memcached。 root @主机名:〜#apt-get install libmemcached-tools libmemcached-dev 设置 libmemcached-tools (0.40-1) ... root@主机名:~# memccapable ascii 退出 [通过] ascii 版本 [pass] ascii 详细程度 [失败] 54 项测试中有 1 项失败
我们可以用它memccapable
来检查它memcached
确实正在运行。
root@主机名:~# memcached -d -P /tmp/mcd.pid -v -l 2600:3c03::dead:beef:feeb:daed -u nobody -p 10001 -U 10001 root@主机名:~# memcached -d -P /tmp/mcd2.pid -v -l 10.0.1.2 -u nobody -p 10002 -U 10002
我们刚刚在端口上启动了 IPv6 memcached 10001
,在端口上启动了 IPv4 memcached10002
root @主机名:〜#memcstat --servers = 127.0.0.1:11211,127.0.0.1:10001,127.0.0.1:10002 服务器:127.0.0.1(11211) 进程号:2131 正常运行时间:689 时间:1325757557 版本:1.4.5 服务器:127.0.0.1(10001) 进程ID:0 正常运行时间: 0 时间:0 版本: 服务器:127.0.0.1(10002) 进程ID:0 正常运行时间: 0 时间:0 版本:
memcstat
允许我们一次检查多个主机的状态。我们看到 memcached 未绑定到 localhost 端口10001
或10002
,这是有道理的,因为我们明确指定了我们的 IP。现在让我们检查每个端口上 memcached 服务器的 IPv4 地址。
root @主机名:〜#memcstat --servers = 10.0.1.2:11211,10.0.1.2:10001,10.0.1.2:10002 服务器:10.0.1.2 (11211) 进程ID:0 正常运行时间: 0 时间:0 版本: 服务器:10.0.1.2 (10001) 进程ID:0 正常运行时间: 0 时间:0 版本: 服务器:10.0.1.2(10002) 进程号:2699 正常运行时间:89 时间:1325757596 版本:1.4.5
我们发现 IPv6 memcached 无法从 IPv4 地址访问。memcstat(从 Debian 6.0.3 开始)无法在命令行上获取 IPv6 地址,因此我们将执行三个单独的 memccapable。
root@主机名:~# memccapable -h 2600:3c03::dead:beef:feeb:daed -p 11211 ascii 退出 [通过] ascii 版本 [pass] ascii 详细程度 [失败] 54 项测试中有 1 项失败 root@主机名:~# memccapable -h 2600:3c03::dead:beef:feeb:daed -p 10001 ascii 退出 [通过] ascii 版本 [pass] ascii 详细程度 [失败] 54 项测试中有 1 项失败 root@主机名:~# memccapable -h 2600:3c03::dead:beef:feeb:daed -p 10002 连接套接字失败:连接被拒绝 无法连接到:连接被拒绝 root@主机名:~#
这很有趣。memcached 的默认安装绑定到 localhost 和 IPv6 地址,但不绑定到我们的 IPv4 地址。这可能是特定于服务器/托管环境的。值得注意的是,我们在 IPv4 地址上明确定义的端口 10002 无法通过指定我们的 IPv6 地址使用,而我们的端口 10001 实例可以使用。
是的,memcached做支持 IPv6。您还可以在 /etc/memcached.conf 文件中指定这些选项。请注意该文件中的警告,建议仅在防火墙的接口上进行监听。如果您的 IPv6 接口是公共/可访问的,则可能会暴露敏感的缓存项目。
答案2
memcached 1.2.5 及更高版本应该有 IPv6 支持。
我不能保证它的功能,因为我个人不使用 memcached,但在他们的错误追踪器没有显示任何严重损坏的东西,所以我不得不假设它至少在初步近似上是可行的:)