天天看点

经验整理-27-Nginx-一些框架配合应用[email protected]

-------------------Nginx-------------

?Nginx工作原理?

ginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面

先初始化好这个监控的socket,再进行listen

然后再fork出多个子进程出来,  子进程会竞争accept新的连接。

此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后

此时,某一个子进程会accept成功,然后创建nginx对连接的封装,即ngx_connection_t结构体

接着,根据事件调用相应的事件处理模块,如http模块与客户端进行数据的交换。

最后,nginx或客户端来主动关掉连接

经验整理-27-Nginx-一些框架配合应用[email protected]

?的作用或优点?

1、http Web服务器。Nginx处理静态文件。可以做网页静态服务器。

2、虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。

3、反向代理,作为代理服务器,提高网站运行速度(内网),同时隐藏真实地址。

4、负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。(也可以用于Dubbo或Spirng Cloud的负载均衡)

5、nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。

连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的

6、在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行

7、内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。

?nginx集群与负载均衡的区别?

集群是2个以上的nginx服务器来共同进行分配分担任务内容。

负载均衡(用nginx)他只是负责转发,本身并不参与处理任务内容

-------------------Nginx反向代理-------------

?工作原理?

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器

经验整理-27-Nginx-一些框架配合应用[email protected]

?的作用或优点?

反向代理的好处隐藏真实内部ip地址,请求先访问nginx代理服务器(外网可以访问到),在使用nginx服务器转发到真实服务器中。

?我搭建过,如何搭建?

###当客户端访问www.itmayiedu.com,监听端口号为80直接跳转到真实ip服务器地址 127.0.0.1:8080

    server {

        listen       80;

        server_name  www.itmayiedu.com;

        location / {

         proxy_pass http://127.0.0.1:8080;

            index  index.html index.htm;

        }

  }

###当客户端访问www.itmayiedu.com,监听端口号为80直接跳转到真实ip服务器地址 127.0.0.1:8081

    server {

        listen       80;

        server_name  8081.itmayiedu.com;

        location / {

          proxy_pass http://127.0.0.1:8081;

            index  index.html index.htm;

        }

    }

?搭建和使用过程中遇到哪些问题?

?*与*的区别?

-------------------动态负载均衡原理-------------

?工作原理?

负载均衡就是,将所有请求先到负载均衡器,在由负载均衡器采用负载均衡算法(轮训、IP绑定、权重)分发到不同实际的服务器中,这也就是服务器集群,集群的目的 是为了减轻单台服务器压力

?我搭建过,如何搭建?

Upstream Server 负载均衡。

upstream 主要配置如下:

IP地址和端口号:配置上游服务器的IP地址和端口

    ###定义上游服务器(需要被nginx真实代理访问的服务器) 默认是轮训机制

    upstream  backServer{

        server 127.0.0.1:8080;

        server 127.0.0.1:8081;

    }     

    server {

        listen       80;

        server_name  www.itmayiedu.com;

        location / {

            ### 指定上游服务器负载均衡服务器

            proxy_pass http://backServer;

            index  index.html index.htm;

        }

    }

?搭建和使用过程中遇到哪些问题?

?四层和七层负载均衡的区别?

 四层负载均衡,在网络模型中的传输层中,基于主要是基于tcp协议报文实现负载均衡(比如LVS、haproxy就是四层负载均衡器),使用改写报文的源地址和目的地址。 

 七层负载均衡,在网络模型中应用层中,基于URL或者HTTP协议实现负载均衡,Web服务器。

经验整理-27-Nginx-一些框架配合应用[email protected]

?负载均衡算法有哪些?

1、轮询(默认)

 每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。

2、weight(轮询权值)

  weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。

 3、ip_hash

        每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。俗称IP绑定。

  4、fair(第三方)

       比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

  5、url_hash(第三方)

       按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。

-------------------基于Consul+Upsync+Nginx实现动态负载均衡-------------

?工作原理?

1、LVS是一个开源的软件,可以实现传输层四层负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。

2、keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题,其实 keepalive 就是为 LVS 而生的。

经验整理-27-Nginx-一些框架配合应用[email protected]

-------------------lvs+Keepalived+Nginx双机主从热备-------------

?工作原理?

可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性,从而保证服务器7*24小时运行。

经验整理-27-Nginx-一些框架配合应用[email protected]

?的作用或优点?

?我搭建过,如何搭建?

只要在希望成为后备的服务器 ip 后面多添加一个 backup 参数,这台服务器就会成为备份服务器。

在平时不使用,nginx 不会给它转发任何请求。只有当其他节点全部无法连接的时候,nginx 才会启用这个节点。

一旦有可用的节点恢复服务,该节点则不再使用,又进入后备状态

?搭建和使用过程中遇到哪些问题?

?*与*的区别?

-------------------Nginx+Tomcat 实现动静分离-------------

?工作原理?

动静分离的原理很简单,通过location对请求url进行匹配即可,具体配置如下:

  ###静态资源访问

    server {

      listen       80;

      server_name  static.itmayiedu.com;

      location /static/imgs {

           root F:/;

           index  index.html index.htm;

       }

    }

   ###动态资源访问

     server {

      listen       80;

      server_name  www.itmayiedu.com;

      location / {

         proxy_pass http://127.0.0.1:8080;

         index  index.html index.htm;

       }

    }

经验整理-27-Nginx-一些框架配合应用[email protected]

?的作用或优点?

(在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决.)

动静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。

?我搭建过,如何搭建?

?搭建和使用过程中遇到哪些问题?

?*与*的区别?

继续阅读