使用Nginx进行负载均衡

什么是负载均衡

Nginx是一个高性能的开源反向代理服务器,也可以用作负载均衡器。通过Nginx的负载均衡功能,可以将流量分发到多台后端服务器上,实现负载均衡,提高系统的性能、可用性和稳定性。

如下图所示:
在这里插入图片描述

Nginx负载均衡策略

Nginx内置负载均衡主要分为以下种类

轮询

轮询简单理解就是将请求在机器之间进行平均分配,在轮询这种方式中,也有分为两类轮询策略
1、普通轮询
可以理解为各个服务器的权重占比都为1,请求会轮流进入这些服务器
2、权重轮询
在轮询基础上分配服务器的权重占比。比如服务器1配置2,服务器2配置1,那么最终请求分配到两台机器的数量会趋近于服务器1:服务器2=2:1
具体配置方式如下



http {
	# 普通轮询配置
    # 定义转发分配规则
    upstream myapp1 {
        server srv1.com; # 要转发到的服务器,如ip、ip:端口号、域名、域名:端口号
        server srv2.com:8088;
        server 192.168.0.100:8088;
    }
	# 权重轮询配置
    # 定义转发分配规则
	upstream myapp1 {
		server srv1.com weight=1; # 该台服务器接受1/6的请求量
		server srv2.com:8088 weight=2; # 该台服务器接受2/6的请求量
		server 192.168.0.100:8088 weight=3; # 该台服务器接受3/6的请求量;
}


    server {
        listen 80; # nginx监听的端口

        location / {
        	# 使用myapp1分配规则,即刚自定义添加的upstream节点
        	# 将所有请求转发到myapp1服务器组中配置的某一台服务器上
            proxy_pass http://myapp1; 
        }
    }
}

iphash
对客户的请求的IP进行hash操作,根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的
这个方法确保了相同的客户端的请求一直发送到相同的服务器,这样每个访客都固定访问一个后端服务器。如用户需要分片上传文件到服务器下,然后再由服务器将分片合并,这时如果用户的请求到达了不同的服务器,那么分片将存储于不同的服务器目录中,导致无法将分片合并,该场景则需要使用ip hash策略。
需要注意的是,ip_hash不能与backup同时使用,另外当有服务器需要剔除,必须手动down掉,此模式适合有状态服务,比如session。
具体配置方式如下:

# 定义转发分配规则
upstream myapp1 {
	ip_hash; # #保证每个请求固定访问一个后端服务器
	server srv1.com;
	server srv2.com:8088;
	server 192.168.0.100:8088;
}

最少连接
轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果,适合请求处理时间长短不一造成服务器过载的情况。
具体配置方式如下:

# 定义转发分配规则
upstream myapp1 {
	least_conn; # 把请求分派给连接数最少的服务器
	server srv1.com;
	server srv2.com:8088;
	server 192.168.0.100:8088;
}

Nginx安装

具体可以看我之前的一篇文档:Nginx安装以及卸载教程

相关推荐

  1. 如何使用 Nginx 进行负载均衡

    2024-03-14 05:40:06       13 阅读
  2. Nginx实现(负载均衡

    2024-03-14 05:40:06       37 阅读
  3. nginx负载均衡

    2024-03-14 05:40:06       33 阅读
  4. Nginx负载均衡详解

    2024-03-14 05:40:06       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 05:40:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 05:40:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 05:40:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 05:40:06       20 阅读

热门阅读

  1. JUNIT5+Mockito单元测试

    2024-03-14 05:40:06       21 阅读
  2. LeetCode_27_简单_移除元素

    2024-03-14 05:40:06       18 阅读
  3. 【Educoder数据挖掘实训】相似度与相异度

    2024-03-14 05:40:06       16 阅读
  4. 在阿里云上配置开放端口的详细教程

    2024-03-14 05:40:06       22 阅读
  5. 基于qt和css的MP3音乐播放器引擎开发

    2024-03-14 05:40:06       18 阅读
  6. 分布式ID(8):分布式ID生成方法

    2024-03-14 05:40:06       24 阅读
  7. .NET中使用Redis大全

    2024-03-14 05:40:06       21 阅读
  8. volatile关键字用处和场景?

    2024-03-14 05:40:06       20 阅读
  9. 17 OpenCv Canny算子

    2024-03-14 05:40:06       17 阅读
  10. HiveQL详解

    2024-03-14 05:40:06       18 阅读
  11. 视频测试示例

    2024-03-14 05:40:06       14 阅读
  12. 什么是池架构?

    2024-03-14 05:40:06       17 阅读
  13. OpenCV加载视频

    2024-03-14 05:40:06       20 阅读
  14. AI大语言模型GPT & R 生态环境领域数据统计分析

    2024-03-14 05:40:06       21 阅读
  15. 软考笔记--层次式架构之数据访问层设计

    2024-03-14 05:40:06       17 阅读
  16. 浅谈Spring Cloud Ribbon原理及其使用方法

    2024-03-14 05:40:06       19 阅读
  17. 在组件上使用v-model

    2024-03-14 05:40:06       18 阅读