您现在的位置是:首页 > 文章详情

使用 Nginx 转发 Oracle 端口

日期:2018-03-31点击:885

问题背景
某客户V3环境应用服务器想要连通V2环境Oracle数据库进行数据存储,解决办法是在V2环境搭建一台带nginx的ECS用来端口转发。

原理图:
_20180401214328

环境
• OS: Centos
• Nginx: 1.12.1

编译安装Nginx
从1.9.0开始,nginx就支持对TCP的转发,而到了1.9.13时,UDP转发也支持了。提供此功能的模块为ngx_stream_core。不过Nginx默认没有开启此模块,所以需要手动安装。

cd /usr/local/src
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar zxf nginx-1.12.1.tar.gz
cd nginx-1.12.1
./configure --prefix=/usr/local/nginx --with-stream --without-http
make && make install

配置Nginx
TCP转发
目标:通过3000端口访问本机Mysql(其中mysql使用yum安装,默认配置文件)
/usr/local/nginx/conf/nginx.conf配置如下:

user  nobody;
worker_processes  auto;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

stream {
    upstream cloudsocket {
       hash $remote_addr consistent;
       server 192.168.0.7:1521 weight=5 max_fails=3 fail_timeout=30s;
    }
    server {
       listen 3000;#公网机器监听端口
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass cloudsocket;
    }
}

首先,先通过1521端口访问oracle:

222

然后,启动Nginx:
333

最后使用3000端口访问mysql:

安装过程中可能遇到的问题
安装nginx的时候遇到如下问题:

1.    Configuration summary  
2.      + using system PCRE library  
3.      + OpenSSL library is not used  
4.      + using builtin md5 code  
5.      + sha1 library is not found  
6.      + using system zlib library

出现以上问题的原因是,在安装nginx的时候没有指定openssl的解压路径。正确的做法如下:

./configure --prefix=/usr/local/nginx  --with-openssl=/usr/local/openssl-1.0.1j --with-http_ssl_module

如果pcre和zlib出现类似的问题,指定路径就可。

--with-pcre=/usr/local/pcre-7.7 --with-zlib=/usr/local/zlib-1.2.3 --with-http_stub_status_module

该架构存在的问题以及解决方式
该架构虽然解决了 V3环境 无法直接连通V2环境,但是通过代理转发,也存在一定问题,例如单点故障问题,若代理服务器负载过高,会影响整个架构的运行。
解决方式是,在代理服务器层增加SLB负载均衡,可在一定程度上解决此问题。

原文链接:https://yq.aliyun.com/articles/573848
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章