Memcached是否支持IPv6

有没有人用过IPv6的Memcached? 你能提供任何configuration技巧,疑难杂症,或提到你有任何稳定性问题?

memcached确实支持IPv6。 您可以使用-l参数在启动时指定它。 与默认安装相比,IPv4和IPv6的行为如何? 让我们看一下Debian会话,在这个会话中,我们安装memcached,监听默认端口,并启动两个memcached守护进程,一个绑定到v6 IP,一个绑定到v4 IP。

 Linux主机名3.0.4-linode38#1 SMP Thu Sep 22 14:59:08 EDT 2011 i686

 Debian GNU / Linux系统附带的程序是自由软件;
每个程序的确切分配条件都在下面描述
 / usr / share / doc / * / copyright中的单个文件。

在某种程度上,Debian GNU / Linux自带绝对不担保
适用法律允许。

 root @ hostname:〜#apt-get install memcached

设置memcached(1.4.5-1)...
启动memcached:memcached。

 root @ hostname:〜#apt-get install libmemcached-tools libmemcached-dev

设置libmemcached-tools(0.40-1)...

 root @ hostname:〜#memccapable 
 ascii退出[pass]
 ascii版本[通过]
 ascii详细[FAIL]
 54个testing中的1个失败

我们可以使用memccapable来检查memcached确实在运行。


 root @ hostname:〜#memcached -d -P /tmp/mcd.pid -v -l 2600:3c03 :: dead:beef:feeb:daed -u nobody -p 10001 -U 10001
 root @ hostname:〜#memcached -d -P /tmp/mcd2.pid -v -l 10.0.1.2 -u nobody -p 10002 -U 10002

我们刚开始在端口10001上使用IPv6 memcached,在端口10002上使用我们的IPv4 memcached

 root @ hostname:〜#memcstat --servers = 127.0.0.1:11211,127.0.0.1:10001,127.0.0.1:10002
服务器:127.0.0.1(11211)
      pid:2131
     正常运行时间:689
     时间:1325757557
     版本:1.4.5

服务器:127.0.0.1(10001)
      pid:0
     正常运行时间:0
     时间:0
     版: 

服务器:127.0.0.1(10002)
      pid:0
     正常运行时间:0
     时间:0
     版: 

memcstat允许我们一次检查多个主机的状态。 我们看到memcached没有绑定到本地端口1000110002 ,这是10002 ,因为我们明确指定了我们的IP。 现在让我们检查我们的每个端口上的memcached服务器的IPv4地址。

 root @ hostname:〜#memcstat --servers = 10.0.1.2:11211,10.0.1.2:10001,10.0.1.2:10002
服务器:10.0.1.2(11211)
      pid:0
     正常运行时间:0
     时间:0
     版: 

服务器:10.0.1.2(10001)
      pid:0
     正常运行时间:0
     时间:0
     版: 

服务器:10.0.1.2(10002)
      pid:2699
     正常运行时间:89
     时间:1325757596
     版本:1.4.5

我们看到我们的IPv6 memcached无法从我们的IPv4地址访问。 memcstat不是(从Debian 6.0.3开始)可以在命令行上使用IPv6地址,所以我们将做三个单独的memccapable。

 root @ hostname:〜#memccapable -h 2600:3c03 :: dead:beef:feeb:daed -p 11211
 ascii退出[pass]
 ascii版本[通过]
 ascii详细[FAIL]
 54个testing中的1个失败

 root @ hostname:〜#memccapable -h 2600:3c03 :: dead:beef:feeb:daed -p 10001
 ascii退出[pass]
 ascii版本[通过]
 ascii详细[FAIL]
 54个testing中的1个失败

 root @ hostname:〜#memccapable -h 2600:3c03 :: dead:beef:feeb:daed -p 10002
无法连接套接字:连接被拒绝
无法连接到:连接被拒绝

根@主机名:〜# 

这很有趣。 memcached的默认安装绑定到本地主机和IPv6地址,而不是我们的IPv4地址。 这可能是服务器/托pipe环境特定的。 值得注意的是,通过指定我们的IPv6地址,我们在IPv4地址上明确定义的端口10002是不可用的,而我们的端口10001实例是。

所以,是的,memcached 确实支持IPv6。 您也可以在/etc/memcached.conf文件中指定这些选项。 请注意该文件中的警告,build议只在防火墙的界面上进行监听。 如果您的IPv6接口是公开/可访问的,则可能会暴露敏感caching项。

memcached 1.2.5和更高版本应该有IPv6支持。
我不能保证它的function,因为我不亲自使用memcached,但是在他们的bug跟踪器中search“IPv6”并没有显示任何exception的破坏,所以我必须假设它至less有一个近似值: )