当前位置:首页 > nginx > 正文

怎么配置nginx负载均衡(lvs和nginx负载均衡区别)

  • nginx
  • 2024-04-04 23:27:30
  • 5663

1、nginx在做负载均衡时如何配置
1、下面的架构就是我们今天的演示结构,后端有两台服务器,分别是node1和node2,前端是一台web服务器,然后在web服务器上做负载均衡,将前端的访问流量导到后端的两个节点服务器上。 三个服务器的IP地址分别是:web:192.168.1.210node1:192.168.1.211node2:192.168.1.212
2、按照这样的架构,在后端的node1和node2节点上分配配置好需要访问的网站,然后为了方便测试,我们将两个网站的主页分别改成下面的内容。 便于区分访问的节点。
3、后端两个节点配置好以后,我们再来配置web服务器里的负载均衡配置,首先使用默认配置,先打开/etc/nginx/nginx.conf配置文件,在http区块里添加upstream块内容,及配置了两个后端服务器,后端负载均衡集群的名称是backend,记下这个名称。
4、然后再打开/etc/nginx/conf.d/default.conf这个配置文件,在server区块里,把location里面的内容改成图中所示内容。 即将所有访问192.168.1.210的流量代理到后端的backend集群里。
5、配置文件配置好以后,使用nginx-t命令测试一下配置文件,保证配置文件是ok状态,然后执行nginx命令启动nginx服务器。
6、启动后在浏览器上输入前端web服务器的ip地址192.168.1.210,然后可以看到第一次是node1响应的,然后刷新一下以后,又变成了node2响应的。 就这样实现了负载均衡的效果。 由两个服务器分别响应,是因为默认的负载均衡算法是轮询算法,即两个节点轮流来。
7、然后我们还可以尝试一下加权轮询算法,即给不同的节点配置不同的权重,权重高一点的服务器,响应的多一些,权重第一点的响应少一些。 加权轮询算法配置,在后端服务器后面加上权重值weight即可。 配置好以后,执行nginx-t命令检测配置文件,确认无误后,执行nginx-sreload命令重新加载配置文件。
8、通过加权轮询的方式,我们无法通过手动一次次点击,最后来统计次数。 但是我们可以使用自动化工具来统计。 使用的工具是一款叫做httpd-tools的软件,安装好以后,提供了一个ab命令
9、然后我们来执行ab命令进行测试,常用的格式是:ab-n1000-c50http://localhost这个命令是在210服务器上执行的。 表示一共执行1000次访问,每次发送50个请求。
10、然后我们登录到后端的node1服务器上,打开nginx的访问日志,从中可以看到ab命令测试的访问信息里,访问来源都是ApacheBench,因此可以通过可以来源来统计nginx响应的次数。 命令是:grepApacheBenchaccess.log|wcnode1和node2节点上的统计结果分别是714和286,如下面图中所示,虽然没有达到5:2的权重比例,但是也非常接近了。 说明这个配置生效了。
2、nginx常用的负载均衡策略
nginx常用的负载均衡策略包括轮询(RoundRobin)、IP哈希(IPHash)、最少连接(LeastConnections)和权重(Weighted)。
1.轮询(RoundRobin):这是nginx默认的负载均衡策略。 nginx将每个新的请求按顺序分发到后端服务器列表中的下一个服务器。 当到达列表的末尾时,它会回到列表的顶部并继续分发。 这种策略假设所有后端服务器的处理能力都是相同的。
例如,如果有三个后端服务器A、B和C,nginx将首先向服务器A发送请求,然后是服务器B,接着是服务器C。 当再次轮到时,它将再次从服务器A开始。
2.IP哈希(IPHash):此策略根据客户端的IP地址进行哈希计算,然后使用这个哈希值来确定将请求发送到哪个后端服务器。 这意味着来自同一IP地址的请求将始终被发送到同一台服务器。 这对于需要保持会话持久性的应用程序特别有用。
例如,如果客户端的IP地址哈希值为5,并且后端服务器数量为3,那么nginx将使用模运算(5mod3=2)来确定将请求发送到服务器列表中的第三个服务器。
3.最少连接(LeastConnections):在这种策略中,nginx会检查每个后端服务器的当前连接数,并将新请求发送到当前连接数最少的服务器。 这有助于在处理能力不同的服务器之间平衡负载。
例如,如果服务器A有10个连接,服务器B有5个连接,服务器C有3个连接,nginx将选择服务器C来处理新的请求,因为它具有最少的连接数。
4.权重(Weighted):此策略允许为后端服务器分配不同的权重,权重越高的服务器将接收更多的请求。 这通常用于处理性能各异的服务器,高性能的服务器可以被分配更高的权重以处理更多的负载。
例如,如果服务器A的权重是1,服务器B的权重是2,那么服务器B将接收大约两倍于服务器A的请求量。
综上所述,nginx提供了多种负载均衡策略以适应不同的应用场景和需求。 选择哪种策略取决于应用程序的具体需求和后端服务器的性能特点。