Nginx负载均衡

基本结构

负载均衡服务器由多台机器组成,以一台为例,其他机器使用相同部署信息。


基本结构图

主要作用

  • 根据负载均衡策略和算法,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。
  • 通过心跳检测的方式,判断应用服务器是否可用,自动将请求转发到可用的应用服务器上。
  • 故障应用服务器恢复工作后,自动添加到可用应用服务器中。

搭建两台web服务器

192.168.192.10:8080
192.168.192.11:8080

为验证负载均衡的效果,可以把web服务器的主页写入不同内容,也可以通过查看日志验证。

配置负载均衡服务器

upstream balance {  # balance是自定义名称,与proxy_pass 保持一致
 server 192.168.192.10:8080; # 转发请求的目的主机,分发策略也在此处配置
 server 192.168.192.11:8080;
}
server {
        listen 80; # 访问负载均衡服务器的配置信息
        server_name bl.com; # 用户访问的域名
        location / { # 根据proxy_pass读取转发信息
                proxy_pass http://balance;
                #root html;
                #index index.html index.htm;
        }
}

浏览器访问

http://bl.com

# 两台机器的内容会交换显示,查看日志分别有来自于负载均衡服务器的请求信息

负载均衡分发策略

轮询 (默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

upstream myserver {
 server 192.168.17.129:8080 fail_timeout=20s max_fails=3;
 server 192.168.17.129:8081 backup; # backup标记该服务器为备用服务器
 server 192.168.17.129:8082 down; # 永久停机
}

参数说明:
fail_timeout和max_fails结合使用,在20s内在该服务器请求失败了3次,认为该机器停机。
fail_timeout 默认10s。
backup:备用机,当主服务器停止时,请求会被发送到该服务器。
down:服务器永久停机。

适用场景
此策略适合服务器配置相当,无状态且短平快的服务使用。

权重

weight 代表权重默认为 1,权重越高被分配的客户端越多

    upstream myserver {
     server 192.168.17.129:8080 weight 3; # 8080与8081按照3:1的比例分配访问频次
     server 192.168.17.129:8081;
    }

可以与轮询、least_conn和ip_hash结合使用。

适用场景
此策略比较适合服务器的硬件配置差别比较大的情况。

ip哈希

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

    upstream myserver {
     ip_hash;    #保证每个访客固定访问一个后端服务器
     server 192.168.17.129:8080 weight 3; 
     server 192.168.17.129:8081;
    }

在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
ip_hash不能与backup同时使用。
此策略适合有状态服务,比如session。
当有服务器需要剔除,必须手动down掉。

适用场景
相同的客户端的请求一直发送到相同的服务器,以保证session会话。

least_conn

把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

    upstream myserver {
     least_conn;    #把请求转发给连接数较少的后端服务器
     server 192.168.17.129:8080 weight 3; 
     server 192.168.17.129:8081;
    }

适用场景
此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。

第三方策略

需要安装第三方插件
fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream myserver {
     fair;    #实现响应时间短的优先分配
     server 192.168.17.129:8080 weight 3; 
     server 192.168.17.129:8081;
    }

url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。

upstream myserver {
 hash $request_uri;    #实现每个url定向到同一个后端服务器
 server 192.168.17.129:8080 weight 3; 
 server 192.168.17.129:8081;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 一、概要 负载均衡的主要作用是为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器负载均衡通过ups...
    任未然阅读 503评论 0 0
  • 一、概要 负载均衡的主要作用是为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器负载均衡通过ups...
    唯老阅读 2,395评论 2 15
  • 一、关于负载均衡 当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃...
    Tsingxin阅读 7,763评论 0 2
  • Nginx 作为高性能web服务器,负载均衡是其基本功能之一。 注:负载均衡至少需要两台机器 负载均衡 负载均衡可...
    Aries_Li阅读 6,785评论 1 2
  • 将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它...
    疯狂的石头_4492阅读 173评论 0 0