背景:如果nginx代理这个80到swoole(用swoole做webserver,其实就是做个转发和html解析。),这个代理是个什么概念,那这个socket的fd是不是就没法长连接了呢??被反向80端口代理的swoole还能长连接?用:nginx_tcp_proxy_module才行 ,否则肯定不行啊,即使http的keep-alive,https://github.com/yaoweibin/nginx_tcp_proxy_module 也就是说nginx的http代理长连接不行,得走tcp这一层才行,用haproxy。
使用Nginx实现TCP反向代理:https://www.hi-linux.com/posts/65232.html
Nginx 配置TCP代理:https://www.cnyunwei.cc/archives/1315
nginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司的的负载均衡都是nginx所以决定研究一下nginx的这个功能实现,下面简单介绍一下实现方法:
1.下载module模块
下载地址 : https://nodeload.github.com/yaoweibin/nginx_tcp_proxy_module/zipball/master
$ wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
$ tar -xzvf nginx-1.2.1.tar.gz
$ cd nginx-1.2.1/
$ patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch /path是指nginx_tcp_proxy_module路径
$ ./configure --add-module=/usr/local/ngx_cache_purge-1.4 --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=/path/to/nginx_tcp_proxy_module //编译
$ make
$ make install
2、修改nginx配置文件:
http {
server {
listen 80;
location /status {
check_status;
}
}
}
tcp {
upstream mysql{
server 10.10.10.17:3306 weight=1;
server 10.10.10.18:3306 weight=1;
#check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 3306;
proxy_pass mysql;
}
}
这样就完成了配置,启动nginx进行测试,下面是测试中打印的log:
2012/09/07 18:22:32 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:31 10.10.10.18:3306 1446 4383
2012/09/07 18:22:32 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:32 10.10.10.17:3306 1446 4383
2012/09/07 18:22:33 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:32 10.10.10.18:3306 1447 4383
2012/09/07 18:22:33 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:33 10.10.10.17:3306 1445 4383
2012/09/07 18:22:34 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:33 10.10.10.18:3306 1445 4383
2012/09/07 18:22:34 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:34 10.10.10.17:3306 1446 4383
2012/09/07 18:22:35 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:34 10.10.10.18:3306 1445 4383
2012/09/07 18:22:35 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:35 10.10.10.17:3306 1445 4383
2012/09/07 18:22:36 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:35 10.10.10.18:3306 1445 4383
2012/09/07 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:36 10.10.10.17:3306 1446 4383
2012/09/07 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:37 10.10.10.18:3306 1446 4383
2012/09/07 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:37 10.10.10.17:3306 1445 4383
2012/09/07 18:22:38 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:37 10.10.10.18:3306 1444 4383
2012/09/07 18:22:39 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:38 10.10.10.17:3306 1445 4383
摘自:http://blog.csdn.net/gzh0222/article/details/7956270
Nginx支持TCP负载均衡:
环境:
系统:CentOS 5.6 X86_64
Nginx:nginx-1.2.4
拓扑:
— 10.0.1.201:1433
LB(10.0.1.212:1433)——-|
— 10.0.1.202:1433
默认nginx不支持tcp的负载均衡,需要打补丁,(连接方式:从客户端收到一个连接,将从本地新建一个连接发起到后端服务器),具体配置如下:
一、安装Nginx
1.下载nginx
# wget http://nginx.org/download/nginx-1.2.4.tar.gz
2.下载tcp模块补丁
# wget https://github.com/yaoweibin/nginx_tcp_proxy_module/tarball/master
源码主页: https://github.com/yaoweibin/nginx_tcp_proxy_module
3.安装nginx
# tar xvf nginx-1.2.4.tar.gz
# tar xvf yaoweibin-nginx_tcp_proxy_module-v0.4-45-ga40c99a.tar.gz
# cd nginx-1.2.4
# patch -p1 < ../yaoweibin-nginx_tcp_proxy_module-a40c99a/tcp.patch
#./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.30 --add-module=../yaoweibin-nginx_tcp_proxy_module-ae321fd/
# make
# make install
二、修改配置文件
修改nginx.conf配置文件
# cd /usr/local/nginx/conf
# vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
tcp {
upstream mssql {
server 10.0.1.201:1433;
server 10.0.1.202:1433;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 1433;
server_name 10.0.1.212;
proxy_pass mssql;
}
}
三、启动nginx
# cd /usr/local/nginx/sbin/
# ./nginx
查看1433端口:
#lsof :1433
四、测试
# telnet 10.0.1.201 1433
五、使用sql server client工具测试
摘自:http://www.cnblogs.com/yahue/articles/3792176.html
使用Nginx实现TCP反向代理:https://www.hi-linux.com/posts/65232.html
Nginx 配置TCP代理:https://www.cnyunwei.cc/archives/1315
nginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司的的负载均衡都是nginx所以决定研究一下nginx的这个功能实现,下面简单介绍一下实现方法:
1.下载module模块
下载地址 : https://nodeload.github.com/yaoweibin/nginx_tcp_proxy_module/zipball/master
$ wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
$ tar -xzvf nginx-1.2.1.tar.gz
$ cd nginx-1.2.1/
$ patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch /path是指nginx_tcp_proxy_module路径
$ ./configure --add-module=/usr/local/ngx_cache_purge-1.4 --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=/path/to/nginx_tcp_proxy_module //编译
$ make
$ make install
2、修改nginx配置文件:
http {
server {
listen 80;
location /status {
check_status;
}
}
}
tcp {
upstream mysql{
server 10.10.10.17:3306 weight=1;
server 10.10.10.18:3306 weight=1;
#check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 3306;
proxy_pass mysql;
}
}
这样就完成了配置,启动nginx进行测试,下面是测试中打印的log:
2012/09/07 18:22:32 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:31 10.10.10.18:3306 1446 4383
2012/09/07 18:22:32 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:32 10.10.10.17:3306 1446 4383
2012/09/07 18:22:33 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:32 10.10.10.18:3306 1447 4383
2012/09/07 18:22:33 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:33 10.10.10.17:3306 1445 4383
2012/09/07 18:22:34 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:33 10.10.10.18:3306 1445 4383
2012/09/07 18:22:34 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:34 10.10.10.17:3306 1446 4383
2012/09/07 18:22:35 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:34 10.10.10.18:3306 1445 4383
2012/09/07 18:22:35 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:35 10.10.10.17:3306 1445 4383
2012/09/07 18:22:36 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:35 10.10.10.18:3306 1445 4383
2012/09/07 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:36 10.10.10.17:3306 1446 4383
2012/09/07 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:37 10.10.10.18:3306 1446 4383
2012/09/07 18:22:37 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:37 10.10.10.17:3306 1445 4383
2012/09/07 18:22:38 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:37 10.10.10.18:3306 1444 4383
2012/09/07 18:22:39 [3921] 10.10.10.107 0.0.0.0:3306 2012/09/07 18:22:38 10.10.10.17:3306 1445 4383
摘自:http://blog.csdn.net/gzh0222/article/details/7956270
Nginx支持TCP负载均衡:
环境:
系统:CentOS 5.6 X86_64
Nginx:nginx-1.2.4
拓扑:
— 10.0.1.201:1433
LB(10.0.1.212:1433)——-|
— 10.0.1.202:1433
默认nginx不支持tcp的负载均衡,需要打补丁,(连接方式:从客户端收到一个连接,将从本地新建一个连接发起到后端服务器),具体配置如下:
一、安装Nginx
1.下载nginx
# wget http://nginx.org/download/nginx-1.2.4.tar.gz
2.下载tcp模块补丁
# wget https://github.com/yaoweibin/nginx_tcp_proxy_module/tarball/master
源码主页: https://github.com/yaoweibin/nginx_tcp_proxy_module
3.安装nginx
# tar xvf nginx-1.2.4.tar.gz
# tar xvf yaoweibin-nginx_tcp_proxy_module-v0.4-45-ga40c99a.tar.gz
# cd nginx-1.2.4
# patch -p1 < ../yaoweibin-nginx_tcp_proxy_module-a40c99a/tcp.patch
#./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.30 --add-module=../yaoweibin-nginx_tcp_proxy_module-ae321fd/
# make
# make install
二、修改配置文件
修改nginx.conf配置文件
# cd /usr/local/nginx/conf
# vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
tcp {
upstream mssql {
server 10.0.1.201:1433;
server 10.0.1.202:1433;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 1433;
server_name 10.0.1.212;
proxy_pass mssql;
}
}
三、启动nginx
# cd /usr/local/nginx/sbin/
# ./nginx
查看1433端口:
#lsof :1433
四、测试
# telnet 10.0.1.201 1433
五、使用sql server client工具测试
摘自:http://www.cnblogs.com/yahue/articles/3792176.html
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/7881/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2018-3-20 09:10
评论列表