首页 > 编程知识 正文

nginx负载均衡调度算法(nginx负载均衡四种策略)

时间:2023-05-03 22:49:13 阅读:88521 作者:973

引言

APP应用中,随着数据量和访问量的增加,传统的单体体系结构往往无法满足高负载、高并发性的需求。 体系结构通常从最初的单体体系结构演变为高可用性体系结构。 那么,负载均衡几乎又是其框架中不可缺少的一部分。

nginx 负载均衡器的使用

由于是nginx的epoll运行模式,因此nginx单体具有高并发性,但与其他web服务器apache相比稳定性较差,在实际运行中,nginx作为前端代理向apache集群转发请求

nginx 负载均衡的几种算法

例如,如果apache集群中有5台服务器,nginx服务器应该向哪个服务器传输请求,这由下面介绍的几个负载均衡算法决定。

简单的轮询图:

委婉的饼干。 该方法可以方便地轮询后端web服务器,并将请求依次发送到后端服务器。 但是,每个后端服务器的使用时间、硬件和软件配置可能会有所不同,因此每个服务器的性能可能会有很大差异。 此外,由于每个服务器当前处理的请求数也不同,因此不建议像这样简单地进行轮询,以便实际在线使用。

加权轮询法如下所示。

简单的轮询法不考虑后端计算机的性能和负载的差异。 加权轮询是指根据对各服务加权、处理能力高的配置权重要、处理能力弱的配置权低的原则,合理分配。

随机算法该算法在每个请求中从后端服务器随机选择一个服务器来处理请求

源地址散列法该方法在客户机的IP地址中创建散列,建模服务器列表的大小,得到处理该请求的服务器,使用源地址散列法进行负载均衡,同一IP客户机的服务器列表发生了变化

最小连接方法如下。

该算法在检测到哪个服务的连接数最小时,会向该服务发送请求

示例

可以通过nginx.conf进行相关配置,但以下是一个简单的示例。

1、在http节点下,添加upstream节点。

上游swo ole _服务器{

服务器192.168.137.101:8081;

服务器192.168.137.102:8081;

服务器192.168.137.103:8081;

}

参数说明:其中upstream是固定的写法,swoole_server是自己定义的集群服务名,该名称可以自由定义(只要合法即可)。 其中配置了3台服务器,我们带来了端口访问。

2、将服务器节点下的位置节点中的代理_通过配置为http://swo ole _服务器名称,即“http://swo ole _服务器”。

位置/{2}

根html;

索引索引索引. html索引. htm;

代理通过http://swo ole服务器;

}

初步完成了简单的负载均衡。 upstream以轮询(默认)方式加载,按时间顺序将每个请求分配到不同的后端服务器。 后端服务器宕机时,可以自动删除。 虽然这种方式比较简单,但最重要的是负载均衡不均衡。

如果进行加权,则如下所示

上游swo ole _服务器{

服务器192.168.137.101:8081权重=5;

服务器192.168.137.102:8081权重=5;

服务器192.168.137.10:8081权重=10;

}

weight是权重配置,自己根据服务器的性能合理配置即可。

如果进行ip_hash分配,则如下所示。

上游swo ole _服务器{

IP混列;

服务器192.168.137.101:8081;

服务器192.168.137.102:8081;

服务器192.168.137.103:8081;

}

在此方法中,每个请求都分配给访问ip的散列结果。 这样,每个访问者都可以固定访问后端服务器,从而解决会话问题。

有几个配置项目,大家讨论一下吧。

结语

nginx作为优秀的web服务,有明显的优势,大家可以合理使用。 负载均衡的另一个问题是session存储。 例如,如果a用户的第一个请求被传输到a服务器,并且会话以默认的本地文件格式存储在b服务器上,则a用户的会话信息将写入a服务器的本地文件,并且a用户的第二个请求将落到b服务器上因为这将引起一系列问题,所以解决session共享也是一个课题。 例如,session存储器使用user方法将session部署到redis集群,apache集群共同访问redis集群内的sesion信息,即使a服务器挂起,a用户也不会被强制终止。 由于session存在大量读取问题,因此不建议将其放入数据库。 糟了!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。