Nginx 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
目前最新版本是nginx-1.9.1 ,自1.9.0之后,增加了tcp代理和负载均衡功能,以前的版本不支持tcp代理,但是由国人开发的补丁可以实现 tcp 代理,但是也仅仅基于linux系统的早期nginx版本。
1、场景描述
通过 nginx 实现tcp 代理和负载均衡,实现两台数据库sql server的轮流访问,数据库服务器A,数据库服务器B,均有相同的浮动IP,不同的私有ip。A和B 的数据库服务均侦听在本机所有IP的1433端口上。目前想通过外界直接访问A和B的共有浮动ip访问数据库。
2、前提条件
必须是 nginx-1.9.0 以上版本(包括1.9.0)。该版本之后,增加了 stream module,可以实现该功能。
下载地址:http://nginx.org/en/download.html
3、服务器软件清单及IP配置
服务器 |
软件及操作系统 |
IP配置 |
说明 |
A |
Windows Server 2003 SQL Server 2000 nginx-1.9.0 |
私有IP: PRI_IP_A 浮动IP: FLT_IP_A FLT_IP_COMMON |
A服务器是windows server 2003,装有数据库sql server 2000; 有一个私有ip,两个浮动ip,其中FLT_IP_COMMON浮动ip和B共有 |
B |
Windows Server 2003 SQL Server 2000 nginx-1.9.0 |
私有IP: PRI_IP_B 浮动IP: FLT_IP_B FLT_IP_COMMON |
B服务器是windows server 2003,装有数据库sql server 2000; 有一个私有ip,两个浮动ip,其中FLT_IP_COMMON浮动ip和B共有 |
C |
Windows XP Jdk1.5+ Java测试程序 |
私有IP: PRI_IP_C |
C服务器是测试机器,C能访问A和B的私有IP和浮动IP。 |
4、配置步骤
1)、分别在A和B上,将nginx-1.9.0 下载的windows版本解压到c:/目录下
2)、修改nginx-1.9.0解压安装目录下conf/下的nginx.conf 文件。增加如下配置:
stream { upstream backend { #hash $remote_addr consistent; server FLT_IP_A:1433; server FLT_IP_B:1433; } server { listen *:14330; proxy_pass backend; } }
其中:
FLT_IP_A 服务器A的浮动IP
FLT_IP_B 服务器B的浮动IP
具体见上表。
3)分别在A 和B上,打开cmd ,cd c:/nginx-1.9.0目录,运行 nginx.exe 命令。
5、测试
在A 和 B Sql Server 的 pubs数据中中建立 test 表,该表有一个字段host,分别在A和B上,增加一条记录,在A上,test表的 host字段的值为 120,在B上该表的host字段为121。test表的记录不同,以区别打印访问到的是哪个服务器的 test 表。
在C机器上,运行java jdbc测试程序,通过共有浮动IP FLT_IP_COMMON 的1433 端口访问数据库 。Java代码如下:
public class Test1 { public static void main(String[] srg) { //加载JDBC驱动 String driverName = "net.sourceforge.jtds.jdbc.Driver"; //连接服务器和数据库sample String dbURL = "jdbc:jtds:sqlserver://xxx.xx.xxx.xxx:14330/pubs"; String userName = "sa"; //默认用户名 String userPwd = "sa"; //密码 Connection dbConn; try { Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, userName, userPwd); java.sql.ResultSet rs=dbConn.createStatement().executeQuery("select name from test"); while(rs.next()) { System.out.println(rs.getString(1)); } //如果连接成功 控制台输出Connection Successful! System.out.println("Connection Successful!"); } catch (Exception e) { e.printStackTrace(); } } }
不断运行该程序,发现每次打印结果都和上一次不同,交替打印:
120 Connection Successful! 121 Connection Successful! 120 Connection Successful! 121 Connection Successful! .......
说明每次访问都和上次访问到的数据库不一样,测试证明nginx tcp代理和负载均衡成功。
6、附nginx参数说明
nginx.conf 配置,有很多实用的参数。
默认情况下,连接通过权重的round-robin 方式转发到各服务器上。可以通过weight 参数进行配置:
upstream backend { server backend1.example.com:12345 weight=5; server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server backend3.example.com:12345 ; server backup1.example.com:12345 backup; }
其中:
weight=number //权重数, 默认是1
max_fails=number //最大失败连接次数,默认是1
fail_timeout=time //超时时间,多长时间无法连上任务服务器不可用。默认是10秒。
backup //表示备份服务器,当主服务器不能用时,将会转发到备份服务器。
max_conns=number //设置服务器最大连接数,默认是0,表示被代理服务器没有连接数限制。
上面例子中,每7个连接请求,有5个连接会转发到backend1.example.com:12345 上,1个连接会转发到第二和第三个服务器上。如果连接一个服务器发生异常,这个连接将会被转发到另外一个服务器上,直到所有服务器都被试过。如果连接所有服务器失败,这个连接将会被关闭。
还有其他灵活的好用的参数,有些是要商业subscription ,不一一列举,详细参考官方文档:
http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html
Nginx 官方商业plus:
http://nginx.com/products/?_ga=1.59191149.112802551.1432635936
相关推荐
### Nginx+Tomcat负载均衡配置教程 #### 一、Nginx 安装与配置 **1. 下载并安装Nginx** - **下载Nginx**:前往Nginx...通过以上步骤,您可以成功地实现基于Nginx和Tomcat的负载均衡配置,提高系统的可用性和扩展性。
**Nginx作为一款强大的Web服务器,其...综上所述,Nginx在Windows环境下的负载均衡不仅体现在其基础的分发请求功能,更在于它对海量TCP连接的高效管理,以及丰富的配置选项和优化策略,使其成为企业级应用的理想选择。
在Windows环境下,配置Nginx以支持HTTPS及在同一端口监听多个网站,即配置多个虚拟主机,是一项常见的网络服务设置任务。...同时,根据实际需求,还可以对Nginx配置进行更复杂的优化,如负载均衡、缓存等。
**安装与配置HAProxy**:在HAProxy服务器上安装并配置HAProxy,设定负载均衡策略(如采用轮循或最少连接数算法),并指定后端服务器的IP地址和端口。 2. **安装与配置Nginx**:在两台Nginx服务器上安装Nginx,并...
**Nginx在Windows下的安装与配置** ...总之,Nginx在Windows环境下不仅能够提供稳定的服务,还能实现高效负载均衡,是开发者和运维人员的得力工具。通过深入理解和配置Nginx,可以更好地满足复杂网络环境的需求。
至此,你已经在Windows上成功安装并配置了Nginx,能够处理静态文件请求,并且具备了基本的反向代理和负载均衡能力。随着网站规模的扩大,你可能需要进一步优化配置,如调整缓存策略、增加SSL支持以及更复杂的负载...
本文将详细介绍如何在Windows环境下安装、配置Nginx,并实现基本的负载均衡功能。 #### 二、环境准备 在正式安装Nginx之前,需要准备以下环境: 1. **操作系统**:Windows Server 2016 或更高版本。 2. **硬件...
### NGINX负载均衡配置详解 #### 一、引言 **编写目的:** 本文档旨在详细介绍NGINX负载均衡的配置方法与实践步骤,帮助技术人员理解如何利用NGINX实现高效的负载均衡策略,提高系统的稳定性和响应速度。 **范围...
在Windows环境下安装和配置Nginx是一个简单的过程,适合初学者和有经验的开发者。Nginx是一款由Igor Sysoev开发的高性能HTTP web服务器和反向代理服务器,以其稳定性、高效性能和低资源消耗著称。由于这些特性,...
Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。 Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接 高度的模块化和自由软件许可证使得第三方模块...
Nginx采用反向代理和负载均衡模式,通过接收客户端请求并转发给后端服务器(如PHP-FPM)来处理,然后将处理结果返回给客户端。它的优势在于能够高效处理高并发请求,而且内存占用少。 接着,我们来安装和配置Nginx...
2 增加wsa网络IO模型(Windows socket异步IO模型) 该模型支持WEB服务器 反向代理服务器和SSL安全连接 与Linux下的epoll具有同等的功能和效率 3 增加Windows和Linux平台下的多线程支持(Unix下尚未实现) 多线程...
Nginx 是一款非常流行的 Web 服务器软件,同时也是一款优秀的负载均衡器和反向代理服务器。Nginx 的特点是: 1. **工作在网络第七层**:可以针对 HTTP 应用做更精细的控制,如基于域名或目录的分流。 2. **依赖性小...
它支持静态内容服务、负载均衡、反向代理等功能,是许多网站和应用程序背后的基石。 WinSW-x64.exe是一个用于Windows系统的64位版本的WinSW工具。它的主要作用是将非服务性质的应用程序,如Nginx,包装成一个能够被...
本案例通过详细介绍NGINX + TOMCAT在Windows平台下的负载均衡配置流程,不仅实现了基本的负载均衡功能,还涵盖了Session管理和安全防护等方面的知识点。这对于构建稳定、高效的应用集群具有重要的参考价值。
Nginx 内置了多种负载均衡策略,如轮询、权重轮询、最少连接数等,通过 `upstream` 指令配置,可以有效地提升系统可用性和性能。 5. **缓存功能** Nginx 可以作为静态文件服务器,提供高效的静态资源服务。同时,...
总结,Nginx 1.11.10 在 Windows 平台上提供了高效稳定的 Web 服务,通过灵活的配置和模块化设计,满足了各种复杂的网络应用场景,是构建高性能网站和应用程序不可或缺的一部分。了解并掌握 Nginx 的配置和管理技巧...
这个模块适用于任何依赖Nginx反向代理和负载均衡的场景,特别是大型网站、分布式系统和微服务架构,确保服务高可用性和用户体验。 综上所述,`nginx_upstream_check_module`是Nginx的一个强大扩展,通过健康检查...
本篇文章将对比三种常用的Linux服务器负载均衡器:LVS、Nginx和HAProxy,探讨其各自的特点、适用场景和常用算法。 LVS(Linux Virtual Server)是基于IP层的负载均衡器,它具有以下显著特点: 1. 高抗负载能力:...