nginx1.9基于端口的四层负载均衡实践,基于端口的转的负载均衡

在大型项目四层负载有LVS,但在中小型项目或者内部有很多应用需要做TCP四层基于端口转,以前我们采用Socat,后面也尝试使用iptables来做四层的端口转发,同样HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,但由于其配置相对复杂,在实际生产项目中还是以Nginx为主,

Nginx1.9的推出不使用使之支持HTTP2.0,另外一上更加让人兴奋的就是默认支持TCP端口的四层负载均衡能力,话多多说直接看实例代码


server {
    listen 127.0.0.1:12345;   #监听端口
    proxy_pass 192.168.1.22:8080;      #转发到后端端口
}

看上面栗子,是不是觉得做端口转发配置特别简单

参考地址:http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html

server {
    ...
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    deny  all;
}

在上面的栗子基础上,增加一访问限制,和HTTP的一模一样也

参考地址:http://nginx.org/en/docs/stream/ngx_stream_access_module.html


worker_processes auto;

error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}
stream {
    upstream backend {
        server 192.168.1.22:12345;
        server 192.168.1.23:12345;
    }
    server {
        listen 12345;
        proxy_pass backend;
    }

}

来一上完整的栗子,这是一上带伏在均衡的栗子哦,看了是不是特别激动,会Http反向代理的,看这代码毫无压力

如需要更加强大的东西可 以参考:

http://nginx.org/en/docs/stream/ngx_stream_core_module.html


server {
    listen 12345;
    proxy_connect_timeout 1s;
    proxy_timeout 1m;
    proxy_pass example.com:12345;
}

server {
    listen [::1]:12345;
    proxy_pass unix:/tmp/stream.socket;
}

如上栗子,不光支持TCP/IP V4,还支持V6哦(不过暂时也用不上),并且还可以对连接的时效做一些限制,比起以前用过的iptables和socat端口转发强大太多了,并且还很容易理解.

上参考路径:http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html



upstream backend {
    hash $remote_addr consistent;

    server backend1.example.com:12345  weight=5;
    server backend2.example.com:12345;
    server unix:/tmp/backend3;

    server backup1.example.com:12345   backup;
    server backup2.example.com:12345   backup;
}

server {
    listen 12346;
    proxy_pass backend;
}

等等,还没完,Nginx还有更加强大的就是对我产的转发源也可以进行简单明了的设置,基本沿用了Nginx http反向代理的配置方法主风格,简直太喜欢.

http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html


最后用上Nginx,妈妈再也不用担心复杂架构,各种异构应用使用各种奇葩的七层协议及端口呢!

本文出自 “Linux_运维_自动化” 博客,转载请与作者联系!

你可能感兴趣的:(nginx,linux,端口转发,TCP负载均衡,四层TCP)