阿里云服务器 MongoDB 踩坑:无法配置外网IP

现象

  • 阿里云Ubuntu服务器
  • 刚刚安装完MongoDb

需要配置MongoDB外网的IP,进行了如下的操作:

  1. /etc/mongodb.conf进行配置:
bind_ip = 127.0.0.1,XXX.XXX.XXX.XXX(阿里云分配的服务器外网IP)
  1. 重启MongoDB的服务:
systemctl restart mongodb
  1. 检查MongoDB服务状态:
systemctl status mongodb

得到如下结果:

● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2020-01-20 20:55:39 CST; 49s ago
Docs: man:mongod(1)
Process: 599 ExecStart=/usr/bin/mongod --config /etc/mongodb.conf (code=exited, status=48)
Main PID: 599 (code=exited, status=48)

启动失败:code=exited, status=48

  1. 查看MongoDB日志:
vim /var/log/mongodb/mongodb.log

可得如下错误日志:

ERROR: listen(): bind() failed errno:99 Cannot assign requested address for socket: XXX.XXX.XXX.XXX:27017

解决方案

  • 配置时使用阿里云分配的内网IP,而不是外网的IP。
  • 或者使用ip addr查看服务器具体的IP,使用这个IP进行配置。

出现Cannot assign requested address for socket: XXX.XXX.XXX.XXX:27017这种错误,一般是端口配置出错(如:端口被占用、端口没有开放)或者IP出错(如:所配置的IP并不是本机的IP)。在查看了防火墙等配置后,排除前者,那就是IP导致的问题了。

原因

在阿里云服务器管理控制台看到的外网IP并不是服务器真实的IP。

很可能是,外网IP的请求、数据由阿里云的网关等代理,从内网转发到具体的服务器:
数据 ==外网==> 阿里云代理 ==内网==> 服务器

你可能感兴趣的:(阿里云服务器 MongoDB 踩坑:无法配置外网IP)