linux学习:Nginx--负载均衡-05

Nginx通过upstream模块来实现简单的负载均衡

在upstream块内,定义一个服务器列表,默认的方式是轮询,如果要确定同一个访问者发出的请求总是由一个后端服务器来处理,可以设置ip_hash,

如:

    upstream cctest1.com {
        ip_hash;
        server 127.0.0.1:9080 weight=5;
        server 127.0.0.1:8080 weight=5;
        server 127.0.0.1:1111;
    }
    
    server {
      location / {
        proxy_pass  http://cctest1.com;
      }
    }

注意:这个方法本质还是轮询,而且由于客户端的ip可能不断变化的,比如动态ip,代理,翻墙等等,因此ip_hash并不能完全保证同一个客户端总是由同

一个服务器来处理。

指令

ip_hash

这个指令将基于客户端连接的IP地址来分发请求。哈希的关键字是客户端的C类网络地址,这个功能将保证这个客户端请求总是被转发到一台服务器上,但是如果这台服务器不可用,那么请求将转发到另外的服务器上,这将保证某个客户端有很大概率总是链接到一台服务器。

无法将权重(weght)与ip_hash联合使用来分发链接。如果有某台服务器不可用,你必须标记其为“down”,如下:

upstream backend {
  ip_hash;
  server   backend1.example.com;
  server   backend2.example.com;
  server   backend3.example.com  down;
  server   backend4.example.com;
}

注意:

1、保证同一个客户端的请求,转发到同一台服务器处理,保证了session的一致。(对于客户端通过代理、翻墙等的方式时无效)

2、这里并不能保证真正的负载均衡

3、对于同一个客户端的请求,转发到同一台服务器处理时,如果这台服务器出现故障,将无法转发,出现错误。

server

指定后端服务器的名称和一些参数,可以使用域名、IP、端口、或者unix socket

语法:server name [para]

参数:

weight = NUMBER

设置服务器的权重,默认为1

max_fails = NUMBER

在一定时间内(这个时间爱fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1,将其设置为0可以

关闭检查,这些错误在proxy_next_upstaream或fastcgi_next_uppstaream(404错误不会是max_fails增加)中定义。

fail_timeout = TIME

在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器不可用,同样它指定了服务器不可用的时间(在下一次尝

试连接请求发起之前),默认为10秒,fial_timeout与前端响应时间没有直接关系,不可以使用proxy_connect_timeout和

proxy_read_timeou来控制

down

标记服务器处于离线状态,通常和ip_hash一起使用。

backup

如果所有的非备份服务器都宕机或繁忙,则使用本服务器(无法和ip_hash指令搭配使用)。

$upstream_status

前端服务器的响应状态

$upstream_response_time

前端服务器的应答时间,精确到毫秒,不同的应答以逗号和冒号分开

$upstream_http_$HEADER

随意的HTTP协议头,如:

      $upstream_http_host

应用示例,如:

upstream xiaoliu.com {
    server 127.0.0.1:8080 weight=5;
    server 127.0.0.1:9080 weight=10;
}

server {
    listen    8888;
    server_name testserver1;
    #access_log logs/host.access.log main;
    index index.html index.jsp;
    root /opt/tomcat/webapps/ROOT;

    location ~* ^/customermger/.*\.(jpg|jpeg|gif|png|swf|ico)$ {
        root /opt/tomcat/webapps;
    }

    location ~* ^/customermger/.*\.(html|htm|js|css)$ {
        root /opt/tomcat/webapps;
    }

    location ~* ^/liuy-manager-web/.*\.(jpg|jpeg|gif|png|swf|ico)$ {
        root /opt/tomcat/webapps;
    }

   location ~* ^/liuy-manager-web/.*\.(html|htm|js|css)$ {
        root /opt/tomcat/webapps;
   }

   location ~* .*\.(jpg|jpeg|gif|png|swf|ico)$ {
        if (-f $request_filename) {
            #expires 15d;
            break;
        }
   }

   location ~* .*\.(html|htm|js|css)$ {
        #expires 1d;
   }

   location / {
      proxy_pass http://xiaoliu.com;
   }
}

第1次请求http://192.168.91.6:8888/liuy-manager-web

第n次请求http://192.168.91.6:8888/liuy-manager-web

Geo和GeIP模块

这两个模块主要用于做全局的负载均衡,可以根据不同的客户端IP来访问不同的服务器,如下:

http{
    geo $geo{
        default default;
        202.103.10.1/24 A;
        179.9.0.3/24 B; 
    }
    upstream default.server{
        server 192.168.0.100; 
    }
    upstream A.server{
        server 192.168.0.101; 
    }
    upstream B.server{
        server 192.168.0.102; 
    }
    server{
        listen 80;
        location / {
            proxy_pass http://$geo.server$request_uri;
        }
    }
}

用于如:北京的客户端转向北京的服务器、上海的客户端转向上海的服务

时间: 2024-10-04 18:37:22

linux学习:Nginx--负载均衡-05的相关文章

Linux 之nginx 负载均衡集群

Linux 之nginx 负载均衡集群: 实验环境:10.72.4.37 (dr,是lnmp 的环境),10.72.4.48 (rs1),10.72.4.39 (rs2,是lamp 的环境),三台机上均安装nginx.[rpm  -qal nginx 查看nginx  的黙认安装目录] [如果是没有安装nginx的,按以下步骤操作: Centos 6下如果安装过epel的yum源可以直接yum安装nginx  yum install -y nginx 或者源码包编译nginx, 官网地址http

【转贴】Linux系统NGINX负载均衡404错误处理方法

NGINX负载均衡404错误处理方法 使用NGINX 实现负载均衡,但一组服务器的数据不是实施同步,主服务器有了数据要过段时间才同步到其他服务器 upstream   image.stream.com   { server 192.168.1.25:8088; server 192.168.1.24:8088; server 192.168.1.23:8088; } 用户访问图片的时候,就有60% 的几率显示为找不到文件. 问题: 怎么配置成以下功能: 1.连接图片服务器时,如果说浏览的机器在2

linux下nginx负载均衡部署

nginx负载均衡部署 Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 IgorSysoev 为俄罗斯访问量第二的 Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. 一般我们都需要先装pcre,

Linux之nginx负载均衡

Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现负载的分发.那么会大大提升系统的吞吐率.请求性能.高容灾 Nginx要实现负载均衡需要用到proxy_pass代理模块配置 Nginx负载均衡与Nginx代理不同地方在于 Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池 Nginx可以配置

linux的Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl介绍

Nginx的负载均衡 1. 查找www.qq.com域名对应IP做测试 [[email protected] ~]# yum install -y bind-utils //安装dig命令包 [[email protected] ~]# dig www.qq.com ; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.1 <<>> www.qq.com ;; global options: +cmd ;; Got answer: ;

Linux学习总结(四十三)nginx 负载均衡 https 配置

1 nginx 负载均衡 当被代理的服务端为多台服务器时,就存在一个分发的问题,那么就涉及到一个负载均衡的概念.如何让客户端请求按照预定的设想均衡的分发到各个服务器上,就要使用各种均衡算法.下面介绍的ip哈希算法可以实现如下目的.当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上.这样,当来自某个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能够保证其访问的还是后端Web服务器A.如果请求的网站涉及到用户

Linux CentOS搭建JDK+Mysql+Tomcat+Nginx负载均衡环境 &nbsp; &nbsp; &nbsp;

本文使用了Tomcat+Nginx环境,主要起到负载均衡的作用,使用Tomcat处理jsp后台程序,使用Nginx处理静态页面. 准备工作(下载软件版本,请自行百度下载) 安装包放至:/usr/local/src 安装地址:/usr/local/软件名 1.apache-tomcat-6.0.48 2.mysql-5.5.54 3.nginx-1.6.3 4.cmake-2.8.8 5.pcre-8.40 6.jdk-8u11-linux-x64 7.openssl-1.1.0d(https使用

Linux系统架构(LB-HA集群)-nginx负载均衡集群配置

nginx负载均衡集群配置 [[email protected] ~]# cd/usr/local/nginx/conf/vhosts/ [[email protected] vhosts]# ls default.conf  test.conf [[email protected] vhosts]# vim lb.conf upstream wang { server 192.168.137.21:80; server 192.168.137.23:80; } server { listen

lvs、haproxy、nginx 负载均衡的比较分析

lvs.haproxy.nginx 负载均衡的比较分析 对软件实现负载均衡的几个软件,小D详细看了一下,从性能和稳定上还是LVS最牛,基本达到了F5硬件设备的60%性能,其他几个10%都有点困难. 不过就因为LVS忒牛了,配置也最麻烦了,而且健康检测需要另外配置Ldirector,其他HAPROXY和NGINX自己就用,而且配置超级简单. 所以小D建议,如果网站访问量不是门户级别的用HAPROXY或者NGINX就OK了,到了门户级别在用LVS+Idirector吧 哈哈 lvs和nginx都可以

day10 nfs服务,nginx负载均衡,定时任务

=====================nginx 负载均衡======================= 实现nginx负载均衡的效果,并运用nfs服务共享目录,使所有nginx服务拥有共同的http目录 nginx安装:http://www.cnblogs.com/alwaysInMe/p/6924859.html nfs安装:NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定. ===>  环境配置及软件安装 注:本次安装用的是cent