`
flypeace
  • 浏览: 157936 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论

windows 下 nginx tcp 代理和负载均衡配置

 
阅读更多

           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浮动ipB共有

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浮动ipB共有

C

Windows XP

Jdk1.5+

Java测试程序

私有IP

   PRI_IP_C

C服务器是测试机器,C能访问AB的私有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+Tomcat负载均衡配置教程 #### 一、Nginx 安装与配置 **1. 下载并安装Nginx** - **下载Nginx**:前往Nginx...通过以上步骤,您可以成功地实现基于Nginx和Tomcat的负载均衡配置,提高系统的可用性和扩展性。

    nginx 负载均衡for windows, 跨越 100万TCP连接

    **Nginx作为一款强大的Web服务器,其...综上所述,Nginx在Windows环境下的负载均衡不仅体现在其基础的分发请求功能,更在于它对海量TCP连接的高效管理,以及丰富的配置选项和优化策略,使其成为企业级应用的理想选择。

    windows下nginx配置https以及同一个端口监听多个网站即监听多个虚拟主机

    在Windows环境下,配置Nginx以支持HTTPS及在同一端口监听多个网站,即配置多个虚拟主机,是一项常见的网络服务设置任务。...同时,根据实际需求,还可以对Nginx配置进行更复杂的优化,如负载均衡、缓存等。

    HAProxy+Nginx实现负载均衡

    **安装与配置HAProxy**:在HAProxy服务器上安装并配置HAProxy,设定负载均衡策略(如采用轮循或最少连接数算法),并指定后端服务器的IP地址和端口。 2. **安装与配置Nginx**:在两台Nginx服务器上安装Nginx,并...

    windows下nginx-0.7.63

    **Nginx在Windows下的安装与配置** ...总之,Nginx在Windows环境下不仅能够提供稳定的服务,还能实现高效负载均衡,是开发者和运维人员的得力工具。通过深入理解和配置Nginx,可以更好地满足复杂网络环境的需求。

    Nginx-windows 下安装配置 Nginx 详解 - CSDN博客1

    至此,你已经在Windows上成功安装并配置了Nginx,能够处理静态文件请求,并且具备了基本的反向代理和负载均衡能力。随着网站规模的扩大,你可能需要进一步优化配置,如调整缓存策略、增加SSL支持以及更复杂的负载...

    window下nginx配置

    本文将详细介绍如何在Windows环境下安装、配置Nginx,并实现基本的负载均衡功能。 #### 二、环境准备 在正式安装Nginx之前,需要准备以下环境: 1. **操作系统**:Windows Server 2016 或更高版本。 2. **硬件...

    NGINX-配置手册

    ### NGINX负载均衡配置详解 #### 一、引言 **编写目的:** 本文档旨在详细介绍NGINX负载均衡的配置方法与实践步骤,帮助技术人员理解如何利用NGINX实现高效的负载均衡策略,提高系统的稳定性和响应速度。 **范围...

    Windows下Nginx的安装与配置

    在Windows环境下安装和配置Nginx是一个简单的过程,适合初学者和有经验的开发者。Nginx是一款由Igor Sysoev开发的高性能HTTP web服务器和反向代理服务器,以其稳定性、高效性能和低资源消耗著称。由于这些特性,...

    Nginx (一) 正向代理 & 反向代理 及配置

    Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。 Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接 高度的模块化和自由软件许可证使得第三方模块...

    windows nginx +php 配置

    Nginx采用反向代理和负载均衡模式,通过接收客户端请求并转发给后端服务器(如PHP-FPM)来处理,然后将处理结果返回给客户端。它的优势在于能够高效处理高并发请求,而且内存占用少。 接着,我们来安装和配置Nginx...

    nginx v1.5.9 for windows

    2 增加wsa网络IO模型(Windows socket异步IO模型) 该模型支持WEB服务器 反向代理服务器和SSL安全连接 与Linux下的epoll具有同等的功能和效率 3 增加Windows和Linux平台下的多线程支持(Unix下尚未实现) 多线程...

    软件级负载均衡介绍

    Nginx 是一款非常流行的 Web 服务器软件,同时也是一款优秀的负载均衡器和反向代理服务器。Nginx 的特点是: 1. **工作在网络第七层**:可以针对 HTTP 应用做更精细的控制,如基于域名或目录的分流。 2. **依赖性小...

    windows 系统设置 Nginx 开机自动启动工具:WinSW-x64

    它支持静态内容服务、负载均衡、反向代理等功能,是许多网站和应用程序背后的基石。 WinSW-x64.exe是一个用于Windows系统的64位版本的WinSW工具。它的主要作用是将非服务性质的应用程序,如Nginx,包装成一个能够被...

    nginx+tomcat+windows

    本案例通过详细介绍NGINX + TOMCAT在Windows平台下的负载均衡配置流程,不仅实现了基本的负载均衡功能,还涵盖了Session管理和安全防护等方面的知识点。这对于构建稳定、高效的应用集群具有重要的参考价值。

    nginx-1.7.6 windows

    Nginx 内置了多种负载均衡策略,如轮询、权重轮询、最少连接数等,通过 `upstream` 指令配置,可以有效地提升系统可用性和性能。 5. **缓存功能** Nginx 可以作为静态文件服务器,提供高效的静态资源服务。同时,...

    nginx 1.11.10 (windows)

    总结,Nginx 1.11.10 在 Windows 平台上提供了高效稳定的 Web 服务,通过灵活的配置和模块化设计,满足了各种复杂的网络应用场景,是构建高性能网站和应用程序不可或缺的一部分。了解并掌握 Nginx 的配置和管理技巧...

    nginx_upstream_check_module

    这个模块适用于任何依赖Nginx反向代理和负载均衡的场景,特别是大型网站、分布式系统和微服务架构,确保服务高可用性和用户体验。 综上所述,`nginx_upstream_check_module`是Nginx的一个强大扩展,通过健康检查...

    linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结

    本篇文章将对比三种常用的Linux服务器负载均衡器:LVS、Nginx和HAProxy,探讨其各自的特点、适用场景和常用算法。 LVS(Linux Virtual Server)是基于IP层的负载均衡器,它具有以下显著特点: 1. 高抗负载能力:...

Global site tag (gtag.js) - Google Analytics