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

# 一、配置负载均衡

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

Nginx Load Balanc Image 有问题重刷下

【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;
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

【2】通过访问http://virtual.test.com/虚拟域名(需要配置本机的HOSTS文件),测试Nginx的负载均衡。

● 第一次请求,结果展示:

Nginx Load Balanc Image 有问题重刷下

● 第二次请求,结果展示:

Nginx Load Balanc Image 有问题重刷下

# 二、属性值配置

配置中weightmax_failsfail_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;
}
1
2
3
4

  ● weightweigth参数表示权值,权值越高被分配到的几率越大(例如:上述中的权重分配,通常访问8989两次后才会访问一次8080,从而实现对于性能好的服务器理应承担更多的压力)。
  ● max_failsfail_timeout:用于判断后端节点状态(例如:如上配置表明如果后端节点10秒内出现2次不可用情况,判定节点不可用。判定不可用后10秒内请求不会转发到此节点,直到10秒后重新检测节点健康情况)既在单位周期为fail_timeout设置的时间,中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。如果成功,将恢复之前的轮询方式,如果不可用将在下一个周期(fail_timeout)再试一次。默认:fail_timeout10s,max_fails1次。在两个节点都可用的情况下,突然有一个节点挂掉,客户端请求过来后哪怕请求到了不可用的节点,此次请求也不会失败,因为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和多个backupmaster上面有一个对外提供服务的vipVIP = Virtual IPAddress,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为 master宕掉了,这时就需要根据VRRP的优先级来选举一个backupmaster。这样的话就可以保证路由器的高可用了。

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

(adsbygoogle = window.adsbygoogle || []).push({});