Nginx服务器

一.Nginx简介

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定

Nginx的主要应用

1,Nginx可以用来做http服务器。Nginx可以独立提供http服务,可以做网页静态服务器
2,Nginx可以用来做虚拟主机,实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟主机
3,Nginx可以用来提供反向代理,负载均衡功能。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用Nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况

二.Nginx实现反向代理

2.1 反向代理的含义

常见的服务器一般采用正向代理的方式,如下图所示:

这里写图片描述

对正向代理的理解:

这里举个例子,比如大学的机房,通常只有老师的那一台电脑能够上网,但是有时学生的电脑也需要连接网络,这时就需要用到正向代理。老师可以在自己的电脑上安装一个代理服务器,并和学生的电脑连接,学生在自己的电脑上上网发出网络请求,这个请求会发给老师的代理服务器,代理服务器收到学生发出的请求后访问网络并将访问结果返回给学生,整个过程中老师的电脑相当于学生电脑和Internet之间的桥梁,这个过程被称为正向代理

反向代理的实现方式则如下图所示:

这里写图片描述

对反向代理的理解:

正向代理是代理服务帮助请求方访问了网络,反向代理则是代理服务器帮助响应方返回响应的过程,反向代理一般出现在项目规模较小的情况下,如果服务器的规模超过了项目需要使用的服务器的规模,那么常常在这个服务器上部署别的项目以使资源利用达到最大化。例如上图所示,Tomcat1和Tomcat2中分别部署了两个项目,这时一台服务器上就同时存在了两个项目,然而这台服务器只有一个ip地址,如何解决一个ip访问连个项目,这时就用到了反向代理,反向代理服务器可以模拟出多个服务提供方,也就是说把一个服务器分块划分成了多个,经过反向代理服务器的代理,部署在同一个服务器上的多个项目就可以使用与每个项目对应的域名进行访问了

反向代理的学术形式的解释:

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求

当一个代理服务器能够代理外部网络上的主机(如Nginx),访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上

2.2 简单模拟一个反向代理的实现

反向代理模拟:

使用两个域名www.tomcat8.com和www.tomcat7.com指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容,分别由两个tomcat服务器提供

nginx服务器使用的虚拟机的ip为:192.168.25.129

这里写图片描述

实现方式:

第一步:准备连个服务提供方

安装两个Tomcat,修改Tomcat的配置文件,使两个Tomcat分别在端口8080和8081运行,启动两个tomcat

第二步:配置反向代理服务器Nginx

在Nginx的根目录下的conf文件夹下的nginx.conf配置文件中进行配置

    #项目一配置
    upstream tomcat-server1 {
        server 192.168.25.129:8080;     #项目一对应的在服务器中的url
    }
    server {
        listen       80;                   
        server_name  www.tomcat8.com;            #项目一配置域名,配置后可以使用该域名访问服务器中的项目一
        location / {
            proxy_pass   http://tomcat-server1;  #代理路径,和upstream参数配置的项目一名称对应,注意前面要加上http://       
            index  index.html index.htm;
        }
    }

    #项目2配置
    upstream tomcat-server2 {
        server 192.168.25.129:8081;
    }
    server {
        listen       80;
        server_name  www.tomcat7.com;               #为项目2配置域名
        location / {
            proxy_pass   http://tomcat-server2;  #代理路径
            index  index.html index.htm;
        }
}
第四步:Nginx重新加载配置文件

每次修改Nginx的配置文件后都需要重新加载配置文件
运行命令:./nginx -s reload

第五步:配置域名

在hosts文件中添加域名和ip的映射关系

使用SwitchHost软件切换域名解析,附SwitchHost-0.2.2下载

分别配置一下两个映射:

192.168.25.129 www.tomcat8.com
192.168.25.129 www.tomcat7.com

这里写图片描述

在浏览器中分别输入域名www.tomcat8.com和www.tomcat7.com,效果如下:

这里写图片描述

这里写图片描述

这样就成功实现了在一台服务器上部署了多个项目,即实现了反向代理

三.Nginx实现负载均衡

3.1 Nginx实现负载均衡的基本原理

如果一个服务由多条服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡处理
Nginx配置文件:

 upstream tomcat2 {
    server 192.168.25.148:8081;
    server 192.168.25.148:8082;
  }

可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1

 upstream tomcat2 {
    server 192.168.25.148:8081;
    server 192.168.25.148:8082 weight=2;
}

3.2 Nginx实现负载均衡的具体方法

具体方案

Nginx作为负载均衡器,所有请求都到了Nginx,可见Nginx处于非常重点的位置,如果Nginx服务器宕机后端web服务将无法提供服务,影响严重。
为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务。

keepalived

keepalived简介

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(VIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

负载均衡示意图

正常工作时:

这里写图片描述

发生主机宕机等意外情况时:

这里写图片描述

主机故障排除后:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值