业务情景
两台服务器, 一台阿里云 ECS 云服务器 (专用网络), 另一台是阿里云数据库 MongoDB, 处于安全考虑 MongoDB 是不运行外网连接的, 那接下来就看怎么实现公网访问
看到上面红色的网络类型描述, 有些人可能已经看出问题所在了, 小小的提示: 问题出现在开放端口上!
专用网络和经典网络的大致区别可以用一句话讲明白: 专用网络更安全, 需要设置和配置的东西比较多, 适合精通网络的高手; 经典网络使用更方便, 适合更适合小白用户, 使用起来更简单方便, 不用繁杂的配置;
思路分析
既然无法直接使用公网 (俗称的外网都是一个意思), 那就使用端口转发的形式, 把可以访问的一台服务器的公网 ip 和端口转到 MongoDB 的服务器即可, 接下来我们使用 rinetd 的方式实现端口转发
具体步骤
rinetd 的安装方式有两种, 如果是 Ubuntu 系统, 可用 apt-get install rinetd -y 安装.
下面重点介绍源码安装
1 安装 rinetd
分别执行下面命令:
- wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd
- sed -i 's/65536/65535/g' rinetd.c
- mkdir /usr/man&&make&&make install
2 配置端口映射
打开文件 / etc/rinetd.conf, 配置内容:
0.0.0.0 3717 MongoDB 的链接地址 3717
logfile /var/log/rinetd.log
0.0.0.0 表示本机的所有 ip.
如图:
3 启动 / 关闭 rinetd
启动: rinetd
关闭: killall rinetd
4 查看运行情况
- netstat -tanulp|grep rinetd
- tcp 0 0 0.0.0.0:3717 0.0.0.0:* LISTEN 4270/rinetd
如上内容, 显示是运行正常的
遇到的坑
经过如上的配置之后, 使用公网连接还是失败了, 访问不了! 笔者经过数次改配置, 反复启动 ip, 还是无果, 于是感觉进坑了!
问题处理
经过笔者反复排除, 使用 telnet 等手段, 分析得出 3717 的端口是问题的, 于是爬文档, 发现如果服务器是专用网络的话是需要手动设置开放端口的
具体操作如下: 云服务器 ECS => 安全组规则 => 添加安全组规则 => 如方向配置端口范围 3717/3717, 如下:
经过配置之后, 使用 MongoDB 客户端连接竟然成功了, 如图:
开森
参考: https://help.aliyun.com/knowledge_detail/39952.html
来源: https://www.cnblogs.com/vipstone/p/8540175.html