博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx负载均衡配置---nginx的学习之路
阅读量:4305 次
发布时间:2019-05-27

本文共 4472 字,大约阅读时间需要 14 分钟。

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端口,不是必须要squid server 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获取用户真实IP 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 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://kwews.baihongyu.com/

你可能感兴趣的文章
ORACLE常用性能监控SQL
查看>>
Redis 使用篇章
查看>>
C#基础
查看>>
并查集简单变形
查看>>
基于接口(工厂模式)三层架构的引用和访问流程
查看>>
Fragments (Android官方文档中文版) (转)
查看>>
【转】.net IL 指令解释速查
查看>>
【PAT】1002. 写出这个数 (20)
查看>>
单链表,双链表
查看>>
XML文件解析
查看>>
IPv4(三)地址掩码
查看>>
GitHub 学习
查看>>
CentOS 7 安装Docker CE
查看>>
springmvc多文件上传 接收文件为空情况
查看>>
ELK的索引的坑——Kibana的图形化(Tile Map)
查看>>
Windows 7 中未能从程序集System.ServiceModel
查看>>
AngularJS学习笔记3——AngularJS的工作原理
查看>>
UITapGestureRecognizer 和 UICollectionView、UITableView的点击事件冲突问题
查看>>
Windows运行机理——API与SDK
查看>>
那些不明不白的$符号设计--Sass和Emmet,变量设计原理相通
查看>>