另辟蹊径,nginx stream模块配置4层反向代理辅助映射和负载均衡

  • A+
所属分类:应用运维

在配置zabbix active主动提交式监控式需要能够访问server所监听的端口,我们都知道zabbix server的端口是否可用可用通过http访问这个端口进行,如使用浏览器访问server监听的端口

 

当访问得到ok时,表示端口访问正常。更前提是端口可用联通,起子的vulter虚拟机在日本的远端机房,访问家中路由器映射的端口,属于跨运营商,用nmap确认端口总是处于被过滤的状态。当然这个问题,是有解决方法的,本博客使用的是就是由这台机器作为反向代理服务器,经过二层反代,再通到LNMP的web虚机上的,其中家中的本地反代,系统使用加载了bbr模块的内核,经过路由器映射后,对外提供服务。所以nginx+BBR是能够使得服务可用的,但是那是http服务,对于非http服务,如ssh、mysql等亦如zabbix,能否利用nginx的stream四层代理,提高服务的可用性呢?起子亲身做了验证,答案是可以的。下面是nginx四层反代的配置记录,供大家参考。

编译:

stream模块是1.10.X自带模块,只要在编译configure时加--with-stream参数即可,编译过程就不再多赘述了

 配置nginx.conf

  1. stream {                //整个stream模块
  2. upstream zabbix_proxy {
  3. hash $remote_addr consistent; //原地址哈希,单台机器做反代,本来就只有一台机器提供服务,持续会话没有多大用处
  4. server 192.168.31.200:10051;
  5. }
  6. server {
  7. listen 10000;
  8. proxy_connect_timeout 1s;
  9. proxy_timeout 300s;
  10. proxy_pass zabbix_proxy;
  11. }
  12. }

  这里我用的和yum的nginx不同 除了开头的work进程事件、模型的配置保留外,直接去掉了http模块的配置,但编译的时候没有--without-http,留着以后备用吧。之后使用nginx -t 确认并用 -s reload 平滑重载

测试效果:

Host is up (0.12s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
25/tcp filtered smtp
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
1070/tcp open gmrupdateserv
1900/tcp filtered upnp
4444/tcp filtered krb524
10000/tcp open snet-sensor-mgmt

可以发现1070 web端和10000zabbi都为可用,而其他isp的功能端口都为过滤而不可用的状态。而在本地这些端口还是open的

[root@joshua ~]# nmap 219.82.xx.xx

Starting Nmap 6.40 ( http://nmap.org ) at 2017-03-03 08:02 CST
Nmap scan report for 219.82.xx.xx

 Not shown: 992 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
1070/tcp open gmrupdateserv
8192/tcp open sophos
8193/tcp open sophos
8383/tcp open m2mservices
8899/tcp open ospf-lite
10000/tcp open snet-sensor-mgmt
  由此可见,对可用性的效果是明显的,这个事例参考与之前使用的vnet trans服务,起子现在想起来,要实现类似的功能,微林是否也是有可能使用了nginx反代保证骨干网直通呢,再网络条件差的情况下,利用nginx多层反代是否有更大的用武之地呢,引人无限遐想。
weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: