nginx负载均衡配置---nginx的学习之路

zz/2024/7/17 21:56:27

Nginx  负载均衡

1. Nginx  负载均衡基础知识
nginx 的 upstream 目前支持 4 种方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2)、weight
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。
3)、ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
4)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5)、url_hash(第三方)


2. Nginx  负载均衡实例 1

upstream bbs.linuxtone.org {  #定义负载均衡设备的 Ip 及设备状态
        server 127.0.0.1:9090 down;
     server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}

在需要使用负载均衡的 server 中增加
proxy_pass http://bbs.linuxtone.org/;


每个设备的状态设置为:

a)  down 表示单前的 server 暂时不参与负载
b)  weight 默认为 1.weight 越大,负载的权重就越大。
c)  max_fails : 允许请求失败的次数默认为 1.当超过最大次数时, 返回 proxy_next_upstream 模
块定义的错误
d)  fail_timeout:max_fails 次失败后,暂停的时间。
e)  backup: 其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器
压力会最轻。


nginx 支持同时设置多组的负载均衡,用来给不用的 server 来使用。
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多 3 层目录
location 对 URL 进行匹配.可以进行重定向或者进行新的代理 负载均衡


3. Nginx  负载均衡实例 2
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓
存时比较有效,也可以用作提高 Squid 缓存命中率.

简单的负载均等实例:
#vi nginx.conf //nginx 主配置文件核心配置
……….
#loadblance my.linuxtone.org
upstream my.linuxtone.org {
ip_hash;
server 127.0.0.1:8080;
server 192.168.169.136:8080;
server 219.101.75.138:8080;
server 192.168.169.117;
server 192.168.169.118;
server 192.168.169.119;

}
…………..
include vhosts/linuxtone_lb.conf;
………
# vi proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
#nginx cache
#client_body_temp_path /data/nginx_cache/client_body 1 2;
proxy_temp_path /data/nginx_cache/proxy_temp 1 2;
#vi linuxtone_lb.conf
server
{
listen 80;
server_name my.linuxtone.org;
index index.php;
root /data/www/wwwroot/mylinuxtone;
if (-f $request_filename) {
    break;
}

if (-f $request_filename/index.php) {
   rewrite (.*) $1/index.php break;
}

error_page 403 http://my.linuxtone.org/member.php?m=user&a=login;
location / {
   if ( !-e $request_filename) {
        proxy_pass http://my.linuxtone.org;
        break;
   }
   include /usr/local/nginx/conf/proxy.conf;
}

}


使用负载均衡的话,可以修改配置http节点如下:

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {#设定mime类型,类型由mime.type文件定义include             /etc/nginx/mime.types;default_type    application/octet-stream;#设定日志格式access_log        /var/log/nginx/access.log;#省略上文有的一些配置节点#。。。。。。。。。。#设定负载均衡的服务器列表upstream mysvr {#weigth参数表示权值,权值越高被分配到的几率越大server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口,不是必须要squidserver 192.168.8.2x:80    weight=1;server 192.168.8.3x:80    weight=6;}upstream mysvr2 {#weigth参数表示权值,权值越高被分配到的几率越大server 192.168.8.x:80    weight=1;server 192.168.8.x:80    weight=6;}#第一个虚拟服务器server {#侦听192.168.8.x的80端口listen             80;server_name    192.168.8.x;#对aspx后缀的进行负载均衡请求location ~ .*\.aspx$ {#定义服务器的默认网站根目录位置root     /root; #定义首页索引文件的名称index index.php index.html index.htm;#请求转向mysvr 定义的服务器列表proxy_pass    http://mysvr ;#以下是一些反向代理的配置可删除.proxy_redirect off;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IPproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#允许客户端请求的最大单文件字节数client_max_body_size 10m; #缓冲区代理缓冲用户端请求的最大字节数,client_body_buffer_size 128k;#nginx跟后端服务器连接超时时间(代理连接超时)proxy_connect_timeout 90;#连接成功后,后端服务器响应时间(代理接收超时)proxy_read_timeout 90;#设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffer_size 4k;#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置proxy_buffers 4 32k;#高负荷下缓冲大小(proxy_buffers*2)proxy_busy_buffers_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传proxy_temp_file_write_size 64k;    }}
}

http://www.ngui.cc/zz/2762657.html

相关文章

配置Nginx来支持PHP----重点介绍Nginx如何通过PHP_FPM的FastCGI进程对PHP进行解析处理。

Nginx的安装特别简单,前面已经对此进行了详细介绍,这里不再进行讲述。下面重点介绍Nginx如何通过PHP_FPM的FastCGI进程对PHP进行解析处理。 由于Nginx本身不会对PHP进行解析,因此要实现Nginx对PHP的支持,将对PHP页面的请求交给Fas…

nginx响应与处理请求的方法详解

本文详细了nginx服务器响应与处理http等请求的方法,并讲解了nginx虚拟主机的配置方法,有需要的朋友参考下吧。 一,nginx基于名字的虚拟主机 Nginx首先选定由哪一个虚拟主机来处理请求。 从一个简单的配置(其中全部3个虚拟主机都在…

每天一个linux命令(9):cd命令

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧。 1. 命令格式: cd [目录名] 2. 命令功能&am…

Log4j实用手册

Log4j实用手册 简介 1.Log4J是Apache的一个开源项目,是用来操作程序日志信息的框架。 ______________________________________________________________________________________ 2.Log4J的功能通过配置log4j.properties属性文件实现。 _________________________________…

修改linux用户密码(passwd)

对于初学者来说,如何修改linux用户密码也不是件容易的事,其实非常简单,下面举例说明: (1)修改root用户密码 如果是以root身份登录,修改root密码. 只要输入 passwd 就会出现: New password: Retype new password: 按提示输入密码确认即可. &#xf…

centos7 strace的安装

strace是一个功能强大的调试,分析诊断工具,主要用来监视系统调用。 1.下载strace-xxx.tar.xz 下载网址是:http://sourceforge.net/project/showfiles.php?group_id2861&package_id2819; 2.解压 $ xz -d ***.tar.xz $ tar -xvf *…

Android Fragment生命周期和用法解析

Fragment生命周期图: Fragment与Activity生命周期对比图: 2 生命周期分析 1. 当一个fragment被创建的时候,它会经历以下状态. onAttach()onCreate()onCreateView()onActivityCreated() 2. 当这个fragment对用户可见的时候,它会…

Android UI控件之ImageSwitcher(图片切换)

从该名字就可以看出来,ImageSwitcher是一个图片切换控件,可以在一系列的图片中,逐张 的显示特定的图片,利用该控件可以实现图片浏览器中的上一张,下一张的功能。其使用方法也较 为简单,不过需要注意的是Ima…

Android 不能退出的解释(android.os.Process.killProcess(android.os.Process.myPid()))

为什么要写这篇文章? 因为网上有很多种退出方法,可是实际上很多方法都不通用(在某个版本下可用,到了另一个版本就不行),或者方法的实际效果根本就和其描述不符(也不知道那些发帖的人测没测试过…

在 rest 风格 url 资源中, GET/POST/PUT/DELETE 等方法各有什么作用与区别?

在spring mvc 中: spring mvc 支持REST风格的请求方法,GET、POST、PUT和DELETE四种请求方法分别代表了数据库CRUD中的select、insert、update、delete 如何这个地方不懂,可以看http://blog.csdn.net/u011630575/article/details/50550127 &a…