• 使用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; 
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    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;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

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

    Nginx安装

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

  • 相关阅读:
    java基于ssm大学生社团管理系统-计算机毕业设计
    【云原生之k8s】k8s基础详解
    【C语言】操作符与优先级详解
    【剑指Offer】29.顺时针打印矩阵
    【人工智能】—基于K-Means算法商场顾客聚类实战教程
    梦开始的地方 —— C语言常用字符函数汇总
    利用SpringBoot重写黑马旅游网
    Kubernetes 创建pod的yaml文件-简单版-nginx
    .NET Core使用 CancellationToken 取消API请求
    C语言实现循环双链表
  • 原文地址:https://blog.csdn.net/weixin_46508271/article/details/136690371