NGINX--HTTP&TCP负载均衡

[复制链接]
发表于 2025-11-10 06:22:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、HTTP负载均衡

1、根本先容

在多应用实例中,通常可以用nginx来做负载均衡器来分发流量,以到达进步应用吞吐量、低沉时延、调优性能、提供容错性等。
2、http负载均衡最简单的设置如下
  1. http {
  2.     upstream myapp1 {
  3.         server srv1.example.com;
  4.         server srv2.example.com;
  5.         server srv3.example.com;
  6.     }
  7.     upstream myapp2 {
  8.         server srva1.example.com;
  9.         server srva2.example.com;
  10.         server srva3.example.com;
  11.     }
  12.     server {
  13.         listen 80;
  14.         location / {
  15.             proxy_pass http://myapp1;
  16.         }
  17.     }
  18. }
复制代码
3、nginx中支持的负载均衡的方法

1、 round-robin  轮询,默认的负载均衡的方法,轮询分发给差异的服务,假如不设置权重的话,会均发给鄙俚服务
2、 least-connected   下一个哀求会分发给有最少生动毗连的服务
3、 ip-hash    一个hash函数, 会盘算下一个哀求会分配给到哪一个服务器
使用方法如下:
  1. upstream myapp1 {
  2.         ip-hash
  3.         server ip1;
  4.         server ip2;
  5.         server ip3;
  6. }
  7. upstream myapp2 {
  8.         least_conn;
  9.         server ip1;
  10.         server ip2;
  11.         server ip3;
  12. }
  13. //轮询实现
  14. upstream myapp3 {
  15.                
  16.                 server ip1;
  17.                 server ip2;
  18.                 server ip3;
  19. }
复制代码
4、权重的设置(weight)

在以round-robin(轮询)方法实现的负载均衡中,假如不设置weight(权重),nginx会将哀求均发给鄙俚服务。nginx也提供了一种权重设置方法,如下:
  1. upstream myapp3 {
  2.                 server ip1 weight=3 ;
  3.                 server ip2;
  4.                 server ip3;
  5. }
复制代码
如上设置所示,当有5个哀求进来的时间,nginx会将3个哀求发给ip1,一个哀求发给ip2,另一个哀求发给ip3。即60%的流量哀求发给ip1,20%的流量哀求发给ip2,20%的流量哀求发给ip3
五、康健查抄(Health checks)及语法先容
  1. http {
  2.     upstream dynamic {
  3.     zone upstream_dynamic 64k;
  4.     server backend1.example.com      weight=5;
  5.     server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
  6.     server 192.0.2.1                 max_fails=3;
  7.     server backend3.example.com      resolve;
  8.     server backend4.example.com      service=http resolve;
  9.     server backup1.example.com:8080  backup;
  10.     server backup2.example.com:8080  backup;
  11.     }
  12.     server {
  13.         location / {
  14.             proxy_pass http://dynamic;
  15.             health_check;
  16.         }
  17.     }
  18. }
复制代码
Syntax:        server address [parameters];
Default:        —
Context:        upstream
二、TCP负载均衡

1、简介

该ngx_stream_core_module模块是从1.9.0版本才被引入进来,该模块并不被默认安装,以是假如要使用该模块的功能,在编译的时间必要加上   --with-stream 设置参数
  1. configure   ...  --with-stream  ...
复制代码
2、TCP负载均衡最简单的设置
  1. worker_processes auto;
  2. error_log /var/log/nginx/error.log info;
  3. events {
  4.     worker_connections  1024;
  5. }
  6. stream {
  7.     upstream backend {
  8.         hash $remote_addr consistent;
  9.         server backend1.example.com:12345 weight=5;
  10.         server 127.0.0.1:12345            max_fails=3 fail_timeout=30s;
  11.         server unix:/tmp/backend3;
  12.     }
  13.     upstream dns {
  14.        server 192.168.0.1:53535;
  15.        server dns.example.com:53;
  16.     }
  17.     server {
  18.         listen 12345;
  19.         proxy_connect_timeout 1s;
  20.         proxy_timeout 3s;
  21.         proxy_pass backend;
  22.     }
  23.     server {
  24.         listen 127.0.0.1:53 udp reuseport;
  25.         proxy_timeout 20s;
  26.         proxy_pass dns;
  27.     }
  28.     server {
  29.         listen [::1]:12345;
  30.         proxy_pass unix:/tmp/stream.socket;
  31.     }
  32. }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表