浅谈Nginx+负载均衡

一、起因

在公司做相关产品后端研发过程中,总会听到相关的Nginx以及负载均衡的专业术语,但是一直没有学习这块内容,这两天抽空看了一下相关知识,向大家分享一下自己对Nginx+负载均衡的学习。

二、背景介绍

起初,相关网站开发完成,我们一般都使用单台机器对外提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.baidu.com。那么当用户在浏览器输入www.baidu.com的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。

三、学习策略

当我们在学习一个东西之前,我们应该先了解它是什么,做什么用,怎么用。按照这个流程来学习某一个知识,就会很快喽!

四、知识概述

1.什么是Nginx?
(1) Nginx就是一个http服务器或者称为反向代理服务器,可以用来做反向代理、负载均衡用途等。
2.Nginx可以用来做什么?
(1) Nginx的几种代理模式
1)正向代理(Forward Proxy)
2)反向代理
3)透明代理
正向代理:正向代理(forward)是一个位于客户端 【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理.。

ex:你要买个手机,你知道手机产的地址,但是你没有权限购买,而这时nginx有权限购买,你就请求nginx帮你购买,并告诉nginx产家的地址,这时nginx作为你的代理人,产家只知道nginx,不知道你,这就是正向代理。

反向代理:反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

ex:反向代理,则是你不知道产家的地址,也不知道哪个产家卖手机,但是你找到nginx,nginx说它有办法拿到手机,至于它向哪个手机产家购买,再转卖给你,你是不知道的。

(2)用于负载均衡
负载均衡也是 Nginx常用的一个功能,当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。
3.怎么用Nginx负载均衡?
nginx负载均衡要两台或以上的应用服务器 , 并且在nginx.conf中写入相关配置,主要是对proxy_pass,upstream的使用
配置文件截图如下:
(1) nginx.conf
在这里插入图片描述
(2) default.conf
在这里插入图片描述
(3) nginx的upstream常见的几种方式的分发策略:
1.轮询(默认)——每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2.weight ——指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3. ip_hash ——每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
4.backup——其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
5.down——表示单前的server暂时不参与负载
6.fair(第三方)按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

发布了23 篇原创文章 · 获赞 15 · 访问量 6284

猜你喜欢

转载自blog.csdn.net/xiaoleilei666/article/details/102599374