Nginx-1.9.7 TCP反向代理(短)

称之为反向代理也只要是感觉结构上和Nginx-Tomcat反向代理集群比较像而已,非官方哦~
附上脚本地址,加在最后面

----------------------------------------正文----------------------------------------

Nginx-1.9.7可以在官方下载,自带了TCP代理的模块,但是需要在编译的时候添加参数去明文指定才会编译进去
 参考官方文档,编译时加上如下参数: --with-stream
然后make && make install完成编译安装(介绍nginx安装的资料很多,不再复述)
----------------------------------------配置&验证----------------------------------------

附上一份简单的配置文件

stream {
upstream mysql {
    hash $remote_addr consistent;
    server MySQL_URL:3306 max_fails=3 fail_timeout=30s;
  }

server {
    listen 13579;
    proxy_connect_timeout 30s;
    proxy_timeout 600s;
    proxy_pass mysql;
  }
 }

启动以后看看端口的状态

Nginx-1.9.7 TCP反向代理(短)

和HTTP的反向代理不同的地方就在整个模块, 不再是http模块了,而是stream模块,里面的语法基本是一致的,在upstream里面, 可以看到依然可以利用Nginx的负载均衡策略,所以,Nginx-1.9.x成功加入MySQL中间件豪华午餐~
那么在其他的机器上试试通过网络远程访问这个端口来连接MySQL

Nginx-1.9.7 TCP反向代理(短)

可以看到通过这个13579的端口确实可以访问到MySQL

----------------------------------------分割线----------------------------------------

----------------------------------------用途----------------------------------------

说起用途的话,可以考虑利用Nginx作为中间件来搭建双主多从的HA集群,然后写一个脚本来监控从库的状态来实时切换Nginx,屏蔽down机主库对应的从库或者是down掉的从库, 之后再上5.7, 利用多主模式来横向扩展MySQL集群的写入能力,同时监控从库的脚本也可以省略点逻辑,不用去判断对应的主库是否失败。

做出两套方案以后,再去验证实际的可用性,性能什么的...近期的计划差不多就做好了~

相关推荐