3

我有一个正在运行的 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 进程列表,则没有其他 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。

我一定是在做一些对你来说愚蠢而明显的事情。谢谢你的帮助。

4

1 回答 1

7

绑定到应该公开的 0.0.0.0。

于 2012-05-19T14:46:58.733 回答