业务情景

两台服务器,一台阿里云ECS云服务器(专用网络),另一台是阿里云数据库MongoDB,处于安全考虑MongoDB是不运行外网连接的,那接下来就看怎么实现公网访问。

看到上面红色的网络类型描述,有些人可能已经看出问题所在了,小小的提示:问题出现在开放端口上!

专用网络和经典网络的大致区别可以用一句话讲明白:专用网络更安全,需要设置和配置的东西比较多,适合精通网络的高手;经典网络使用更方便,适合更适合小白用户,使用起来更简单方便,不用繁杂的配置;

思路分析

既然无法直接使用公网(俗称的外网都是一个意思),那就使用端口转发的形式,把可以访问的一台服务器的公网ip和端口转到MongoDB的服务器即可,接下来我们使用rinetd的方式实现端口转发。

具体步骤

rinetd的安装方式有两种,如果是Ubuntu系统,可用apt-get install rinetd -y安装.

下面重点介绍源码安装

1、安装rinetd

分别执行下面命令:

1. wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd
2. sed -i 's/65536/65535/g' rinetd.c
3. mkdir /usr/man&&make&&make install

2、配置端口映射

打开文件/etc/rinetd.conf,配置内容:

1 0.0.0.0 3717 MongoDB的链接地址 3717
2 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

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐