散装java 散装java
首页
  • Java基础
  • JVM
  • Java多线程
  • 知识点
  • 案例
  • Redis
  • RabbitMQ
  • Kafka
  • Elasticsearch
  • MySQL
  • Linux
  • Docker
  • Zookeeper
  • Nginx
  • Git
  • JMeter
  • Gradle
  • 常见BUG
  • 常见解决方案
  • 资源
  • 问答
💖支持
Gitee (opens new window)
首页
  • Java基础
  • JVM
  • Java多线程
  • 知识点
  • 案例
  • Redis
  • RabbitMQ
  • Kafka
  • Elasticsearch
  • MySQL
  • Linux
  • Docker
  • Zookeeper
  • Nginx
  • Git
  • JMeter
  • Gradle
  • 常见BUG
  • 常见解决方案
  • 资源
  • 问答
💖支持
Gitee (opens new window)
  • 运维导读
  • Linux

    • Linux系统根目录概述
    • Linux常用操作指令
    • Linux如何跑一个定时任务
  • Docker

    • Docker导读
    • 常用 Docker 指令
    • Docker Compose 安装
    • Docker Compose 常用指令
  • Zookeeper

    • Zookeeper集群搭建
  • Nginx

    • Windows下安装使用 Nginx
    • Nginx 配置负载均衡
      • 1. 常用配置
      • 2. 其他负载策略
        • 1、ip_hash
        • 2、weight
        • 3、fair(第三方)
        • 4、url_hash
        • 5、least_conn
  • Git

    • Git 清空提交记录
  • GitLab

    • docker compose 搭建gitlab私服
  • 运维
  • Nginx
散装java
2023-01-07
目录

Nginx 配置负载均衡

ps: 我这里给出的配置文件中的 upstream 、server 都是 在 nginx.conf 的 http 下的 修改后记得重新加载下配置文件 nginx -s reload

# 1. 常用配置

配置文件如下

# 负载到 8080 和 8089 端口上 ; weight默认是1 ,越大则权重越高
upstream webservers{
	server  127.0.0.1:8080 weight=1;
	server  127.0.0.1:8089 weight=1;
}
server {
	# 监听端口
	listen       8888;
	server_name  localhost;

	# 将请求转发到进行负载
	location / {
		# 转发到负载服务上,就是上面定义的负载
		proxy_pass http://webservers;
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 2. 其他负载策略

默认情况下,nginx采用的是轮询策略,nginx还提供了其他几种常用的负载均衡配置 常见可选操作

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

# 1、ip_hash

每个请求按访问IP的hash结果进行分配,这样每个访客就可以固定访问一个后端服务,一定程度上可以解决session问题;

upstream webservers{
    ip_hash;
    server  127.0.0.1:8080;
    server  127.0.0.1:8089;
}
1
2
3
4
5

# 2、weight

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

upstream webservers{
    server  127.0.0.1:8080 weight=8;
    server  127.0.0.1:8089 weight=2;
}
1
2
3
4

# 3、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的将会被优先分配

upstream webservers{
    fair;
    server 127.0.0.1:8080;
    server 127.0.0.1:8089;
}
1
2
3
4
5

# 4、url_hash

按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。使用这种策略,可以节省缓存空间,提高缓存命中率

upstream webservers{
    hash &request_uri;
    server 127.0.0.1:8080;
    server 127.0.0.1:8089;
}
1
2
3
4
5

# 5、least_conn

按节点连接数分配,把请求优先分配给连接数少的节点。该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况。

upstream webservers{
    least_conn;
    server 127.0.0.1:8080;
    server 127.0.0.1:8089;
}
1
2
3
4
5
上次更新: 2023/01/07, 19:34:27
Windows下安装使用 Nginx
Git 清空提交记录

← Windows下安装使用 Nginx Git 清空提交记录→

Theme by Vdoing | Copyright © 2022-2024 散装java | MIT License | 鲁ICP备2022022143号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式