Memcached 是否支持 IPv6?

Memcached 是否支持 IPv6?

有人使用过 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 端口1000110002,这是有道理的,因为我们明确指定了我们的 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,但在他们的错误追踪器没有显示任何严重损坏的东西,所以我不得不假设它至少在初步近似上是可行的:)

相关内容