我有一个正在运行的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。
我必须做一些愚蠢而且显而易见的事情。谢谢你的帮助。
答案 0 :(得分:7)
绑定到应该公开的0.0.0.0。