将memcached和beanstalk绑定到EC2实例上的外部IP

时间:2012-04-12 13:50:29

标签: amazon-ec2 memcached

我有一个正在运行的EC2服务器,它有一个弹性IP地址,很高兴运行memcached和beanstalkd分别在端口11211和11300上侦听外部IP。我拿了服务器的AMI来升级大小,当服务器重新启动时,memcached和beanstalkd都没有运行。为memcached而烦恼,因为这是init.d重启,但是beanstalkd是从命令行作为守护进程运行的。

然而,几个小时之后,我似乎无法弄清楚如何让它们重新启动和运行。

对于memcached,配置文件显示为:

# Default connection port is 11211
-p 11211

# Specify which IP address to listen on. The default is to listen on all IP addresses
-l <EXTERNAL IP ADDRESS>

当我尝试从命令行以root身份运行memcached时:

memcached -d -m 1024 -u root -l <EXTERNAL IP ADDRESS> -v -p 11211

我明白了:

bind(): Cannot assign requested address
failed to listen on TCP port 11211: Cannot assign requested address

然而,当我查看netstat时,没有任何东西已经绑定到该端口:

netstat -ant | grep LIST
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN

如果我grep the processlist,就没有其他的memcached在运行。

Iptables报告如下:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:11300 state ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp spt:11211 state ESTABLISHED 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

EC2实例使用与原始服务器相同的安全组,因此所需的端口已打开。

最后,或许提示ifconfig IP地址与弹性IP地址不同。如果我尝试监听inet添加:Bcast:memcached服务运行并绑定但是我似乎无法通过弹性IP访问memcached。

我必须做一些愚蠢而且显而易见的事情。谢谢你的帮助。

1 个答案:

答案 0 :(得分:7)

绑定到应该公开的0.0.0.0。