Nginx 负载均衡及其高可用

目录

一、配置负载均衡

二、配置中 weight、max_fails、fail_timeout 等可选属性值配置

三、高可用

负载均衡(Load Balance):意思就是分摊到多个操作单元上进行执行,例如 Web服务器、FTP服务器、企业关键应用服务器和其他任务服务器等,从而共同完成工作任务。负载均衡建立在现有的网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的宽带、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性

一、配置负载均衡


当网站访问量非常大时,一台服务器已经不够用了(因为网站越来越慢)。于是将相同的应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。架构图:Web层的负载均衡通过 Nginx 来实现,服务层的负载均衡一般通过 zookeeper 来实现
  Nginx 负载均衡及其高可用_第1张图片

【1】配置 conf/nginx.conf 文件,将多个 Tomcat 地址配置在 upstream 属性中:

#可以用于配置负载均衡
upstream proxy_test {
	server 192.168.88.130:8080;
	server 192.168.88.130:8989;
}

server {
	listen       80;
	server_name  virtual.test.com;

	location / {
		#通过反向代理,将请求转发给配置的负载均衡中
		proxy_pass   http://proxy_test;
		index  index.html;
	}
}

【2】通过访问 http://virtual.test.com/ 虚拟域名(需要配置本机的 HOSTS 文件),测试 Nginx 的负载均衡。
●  第一次请求,结果展示:
    Nginx 负载均衡及其高可用_第2张图片
●  第二次请求,结果展示:
    Nginx 负载均衡及其高可用_第3张图片

二、配置中 weight、max_fails、fail_timeout 等可选属性值配置


upstream proxy_test {
	server 192.168.88.130:8080 weight=1 max_fails=2 fail_timeout=10s;
	server 192.168.88.130:8989 weight=2 max_fails=2 fail_timeout=10s;
}

●  weightweigth 参数表示权值,权值越高被分配到的几率越大(例如:上述中的权重分配,通常访问8989两次后才会访问一次8080,从而实现对于性能好的服务器理应承担更多的压力)。
●  max_fails、fail_timeout:用于判断后端节点状态(例如:如上配置表明如果后端节点10秒内出现2次不可用情况,判定节点不可用。判定不可用后10秒内请求不会转发到此节点,直到10秒后重新检测节点健康情况)既在单位周期为 fail_timeout 设置的时间,中达到 max_fails 次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。如果成功,将恢复之前的轮询方式,如果不可用将在下一个周期(fail_timeout)再试一次。默认:fail_timeout为10s,max_fails为1次。在两个节点都可用的情况下,突然有一个节点挂掉,客户端请求过来后哪怕请求到了不可用的节点,此次请求也不会失败,因为 Nginx 会把此次请求转发到另外一个可用节点,再把结果返回给客户端。当一个节点挂掉,Nginx不知道节点是否恢复的时候,会把客户端的请求同时转发到两个节点,判断节点健康情况。

三、高可用


Nginx 作为负载均衡器,所有的请求都到 Nginx,可见 Nginx 处于非常重点的位置,如果 Nginx 服务器宕机后端 web 服务将无法提供服务,影响严重

为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(Hight Availabillty)监控系统,通过传送诸如 “I am alive” 这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主服务器接收到 “I am alive” 这样的信息时,它就释放服务IP地址,这样主服务器就开始再次提供负载均衡服务。可以通过如下技术实现检测功能:

keepalived:用于集群管理,保证集群搞可用的一个服务软件,用来防止单点故障。Keepalived 的作用是检测 Web 服务器的状态,如果有一台服务器死机或工作出现故障,Keepalived 的作用是检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器正常工作后 Keepalived 自动将 web 服务器加入到服务器群中,这些工作自动完成,无需人工干涉,需要人工做的是修复故障的 web 服务器。keepalived 是以 VRRP 协议为实现基础的,VRRP 全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将 N 台提供相同功能的路由器组成一个路由器组,这个组里面有一个 master 和多个 backup,master 上面有一个对外提供服务的 vipVIP = Virtual IPAddress,虚拟 IP 地址,该路由器所在局域网内其他机器的默认路由为该 vip),master 会发组播,当 backup 收不到 VRRP 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master。这样的话就可以保证路由器的高可用了。

keepalived 主要有三个模块,分别是 core、check 和 VRRP。core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check 负责健康检查,包括常见的各种检查方式。VRRP 模块是来实现 VRRP 协议的。


----关注公众号,获取更多内容----

你可能感兴趣的:(Nginx)