現(xiàn)象
- 阿里云Ubuntu服務(wù)器
- 剛剛安裝完MongoDb
需要配置MongoDB外網(wǎng)的IP,進行了如下的操作:
- 在
/etc/mongodb.conf進行配置:
bind_ip = 127.0.0.1,XXX.XXX.XXX.XXX(阿里云分配的服務(wù)器外網(wǎng)IP)
- 重啟MongoDB的服務(wù):
systemctl restart mongodb
- 檢查MongoDB服務(wù)狀態(tài):
systemctl status mongodb
得到如下結(jié)果:
● 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>code=exited, status=48。
- 查看MongoDB日志:
vim /var/log/mongodb/mongodb.log
可得如下錯誤日志:
ERROR: listen(): bind() failed errno:99 Cannot assign requested address for socket: XXX.XXX.XXX.XXX:27017
解決方案
- 配置時使用阿里云分配的內(nèi)網(wǎng)IP,而不是外網(wǎng)的IP。
- 或者使用
ip addr查看服務(wù)器具體的IP,使用這個IP進行配置。
出現(xiàn)Cannot assign requested address for socket: XXX.XXX.XXX.XXX:27017這種錯誤,一般是端口配置出錯(如:端口被占用、端口沒有開放)或者IP出錯(如:所配置的IP并不是本機的IP)。在查看了防火墻等配置后,排除前者,那就是IP導(dǎo)致的問題了。
原因
在阿里云服務(wù)器管理控制臺看到的外網(wǎng)IP并不是服務(wù)器真實的IP。
很可能是,外網(wǎng)IP的請求、數(shù)據(jù)由阿里云的網(wǎng)關(guān)等代理,從內(nèi)網(wǎng)轉(zhuǎn)發(fā)到具體的服務(wù)器:
數(shù)據(jù) ==外網(wǎng)==> 阿里云代理 ==內(nèi)網(wǎng)==> 服務(wù)器