1.基础概念
AP服务器(Application Server) : 应用服务器,即能返回动态内容的服务器
CND : 内容分发网络
IPVS(IP Virtual Server, IP 虚拟服务器) : LVS 的成果之一,实现了负载均衡器不可获取的负载分流功能。
LVS(Linux Virtual Server, Linux 虚拟服务器) : Linux 中皆在搭建具有可扩展性,实用性较高的系统的项目
NIC(Network Interface Card, 网络接口卡,简称网卡)
Netfilter : Linux 内核中操作网络数据包所需的协议框架
OSI 参考模型
VIP(Virtual IP Address, 虚拟IP地址) :不同于物理性质的服务器及网卡,该 IP 地址会被浮动地分配某项服务或功能。
例如对于负载均衡器,接收客户端请求的IP地址就称为VIP。这是因为该IP地址对HTTP等服务进行了关联,另外在冗余的Active/Backup
架构中,唯一的Master,即Active的负载均衡器也继承了该IP的行为。虚拟地址通常也称为虚拟IP地址。
可用性(Availability)
内容(Contents)
服务器集群(Server Farm)
冗余(Redundancy)
交换器(Switching Hub)
可扩展性(Scalability)
横向扩展(Scale Out)
纵向扩展(Scale Up)
单点故障(Single Point of Failure) : 若此处出现问题,就会令整个系统停止,即系统的要害。也叫做SPO。
数据中心(Data Center) : 为了容纳服务器设备而创建的专用设备的名称。
故障转移(Failover) : 在冗余系统中,在活动节点(Active Node)停止时,自动通过某种行为切换到备用节点(Backup Node)。如果不是自动切换,而是手动切换,通常
叫做 Switch over。
故障恢复(Failback)
健康检查(Health Check)
负载(Load)
1.服务器及基础设施搭建入门
1.冗余概述
故障发生时,使用事先准备好的备份设备,使系统相关功能得以继续提高服务。
2.冗余的本质
实现:
1.设想可能发生的故障
2.根据故障准备备份
3.部分故障发生时切换到备份设备的工作机制
冷备份(cold standby):我们平常不会用到备份设备,只有在故障发生时才需要连接到备份设备,该工作机制叫'冷备份'。
热备份(hot standby):让2台服务器同时运行,并保持同样的状态的使用模式成为'热备份'。
故障转移:当现用设备发生故障时,系统会自动将处理交接到备份设备,该操作成为故障转移。服务器的故障转移主要使用'虚拟IP地址'
(virtual IP address)与 'IP地址的映射(也称飘逸)'来操作。
故障检测(健康检查):为了能正常进行故障转移,需要在现有设备发生故障时及时知晓,该操作机制称为健康检查(Health Check)。健康检查
有各种类型,可以根据用途选择合适的方法。如下:
1.ICMP监控(第三层)
ICMP监控是指,检查由icmp所发出的echo 请求是否得到了应答。由于这是最基本的健康检查,因此无法得知web服务是否已经停止。
2.端口监控(第四层)
端口监控是指,通过使用tcp协议尝试连接目标主机,检查目标主机是否被连接。该监控可以得知web服务是否正常运行,但无法得知系统的负载情况,
也无法得知错误的回报。
3.服务监控(第七层)
通过实际发出http请求等,检查该请求是否得到了应答。虽然这种方法可以检查所有的异常情况,但根据情况的不同,可能会加重目标主机的负载。
IP地址映射操作:
IP地址映射并不是单纯的 '仅仅更换IP地址'这么简单。在 LAN(ethernet,以太网)中,并不是通过ip地址,而是通过固定分配的NIC(网络适配器)的MAC(
介质访问控制)地址来完成通信的。在给其他服务器发送分组的时候,为了取得MAC地址,通常还会使用到ARP(地址解析协议)。
ARP协议是指,通过指定目标设备的IP地址,查询目标设备的MAC地址。由于每次通信时都进行查询效率比较低,因此通常会将一次取得的MAC地址缓存在ARP缓存表
中一段时间。这样一来,即使分配到了相同的IP地址,在ARP缓存表更新之前,该服务器也都没有办法完成通信。所以在分配IP地址到其他服务器时,请务必注意更新
ARP缓存表。
1.2 实现web服务器的冗余(DNS轮询)
dns 轮询是指,利用dns把一台服务器需要处理的内容,分配到多台服务器进行。
DNS 存在问题:
1.必须取得需要轮询的目标服务器的全局地址
2.并不一定能实现均等的分发
来自手机的访问经常由称为行业网关的代理服务器,由于代理服务器会将域名解析的结果缓存一段时间,所以经由代理服务器的访问请求
就会被解析到同一台服务器上,因此就可能无法实现均等分配需要处理的请求,而只令某台服务器集中处理。
3.无从得知服务器宕机
1.2.3 负载均衡器
1.3 实现web服务器的冗余(基于IPVS的负载均衡器)
IPVS --- 基于Linux的负载均衡器
即使不安装特别的软件,Linux也可以作为路由器使用。而且系统的防火墙有很多实用的功能,例如分组过滤技术等众多网络功能。
提供负载均衡功能的IPVS模块也在其中。
负载均衡器的分类:
1.四层交换器
根据ip或者端口号
2.七层交换器
根据客户端请求的url
调度算法:
1.rr
2.wrr
3.lc
4.wlc
5.sed
6.nq
7.sh
8.dh
9.lblc
10.lblcr
使用IPVS:
1.ipvsadm
由IPVS的开发商提供的命令行工具
2.keepalived
c语言编写的守护程序.其功能主要表现在:对真是服务器进行健康检查,并自动将已经宕机的服务器排除在负载均衡所配的范围外;如果所有的服务器
全数宕机,则会显示'服务器繁忙'等消息,即具备sorry_server功能。
四层交换器和七层交换器:
四层通过解析tcp头等协议头的内容,来决定分流的目的地;而七层则通过解析软件应用层的内容,来决定分流的目的地。
四层交换器中,客户端的通信目标是真实服务器
七层交换器中,负载均衡器和客户端会先通过tcp会话进行握手,也就是说,每次循环都会经过:客户端=>七层交换器=>真是服务器
追求性能就用四层,追求设定的灵活性就用七层。
七层交换器:
可以将类似 http://example.cn/*.png 这样的图片文件发送的请求分配到图片专用的服务器进行处理。而对于像
http://example.cn/hoge?SESSIONID=xxxxx这样包含会话ID的请求,七层交换器还可以将同一会话ID的请求分配到同一台服务器进行处理。
也就是说,类似于请求目标url等应用软件协议的内容,可以被作为选择真是服务器时的条件使用。相反,负载均衡器不能识别的协议,则自然无法
实现负载分流。比如对 SMTP 进行负载分流时,虽说理论上可以通过七层交换器实现'特定收件人的邮件发送到特定的服务器',但是若负载均衡器不支持
SMTP,那就无法实现。
四层交换机的NAT模型和DSR模型:
1.NAT(network address translation, 网络地址转换)
2.DSR(direct server return,直接服务器返回)
在 nat 模式下,四层交换器从客户端接收到数据分组后就修改分组的目的ip地址,并将分组转发到真是服务器上。因此在真是服务器接收到应用数据分组后,
需要特别返回源ip地址。而在DSR模型下,ip地址并不会被映射。四层交换器从客户端收到分组后,不做任何修改就直接将分组从路由器发送到真实服务器上。这种
情况下,由于没有必要对应答的分组返回ip地址,因此真实服务器即使不经由四层交换器也能够直接返回应答。
若担心负载均衡器出现瓶颈问题,或者需要能够承受高流量的负载分发环境,这里推荐使用DSR模型。在使用keepalived来搭建DSR时,请将 lvs_method设定为
'DR'。
但在 DSR 模型中,发送给虚拟服务器的分组(全局ip分组)没有做任何修改就鸳鸯到达了真实服务器,由于真实服务器不能处理该全局ip分组,因此无法处理该请求。
也就可以说,对于NAR模型的系统,只修改负载均衡器的设定是无法实现负载均衡的。
最简便的设定方式是,将虚拟服务器的ip地址映射到真实服务器的环回接口上,另外还有一种办法,使用netfilter的相关功能,将发给虚拟服务器的分组的本地源
地址映射Wie私有的本地全球地址(即在本地范围内扩大地址的使用范围,以扩展地址的容量),这种方式成为DNAT(destination network address translation
目的网络地址转换)
同一子网下的服务器进行负载分流时需要注意的地方:
在同一子网需要负载分流时,不能使用nat模型。nat模型下会映射负载均衡器的源ip地址,
1.4 路由器及负载均衡器的冗余
1.4.2虚拟路由器冗余协议(VRRP)
Cisco 公司以 HSRP(hot standby routing protocol,热备份路由器协议)为基础,制定出了不依赖于厂商的冗余协议,
即VRRP(virtual router redundancy protocol,虚拟路由冗余协议)。
1.VRRP 报文:
所谓健康检查,一般是指定定期对监控对象的设备发出一些请求,确认这些请求是否得到了应答。而VRRP则通过相反的途径
监控主节点运行,即VRRP的主节点会定期将VRRP报文不断的发送到多点传送地址(224.0.0.18)。由于VRRP报文类似于'播报'主节点可用信息,
因此也被称为'组播信息'。
IP地址(虚拟IP地址,即VIP)
Virtual Rtr ID(虚拟路由器ID)
Priority(优先顺序)
备用节点通常会在正确接收到VRRP报文时进入待机状态,若一段时间没有收到VRRP报文信息,备用节点就会认为主节点已经宕机,
从而启动故障转移。因此在VRRP中,备用节点不会主动确认主节点的状态。
2.虚拟路由器ID
向事先决定的组播地址(224.0.0.18)发送VRRP报文时,该组播地址从头到尾都不会改变。在同一网络上同时设置有多台负载均衡器的情况下,
所有的VRRP报文都会发向同一地址。这看起来似乎会引起错误操作,但实际上VRRP中使用了名为虚拟路由器ID的参数,可以分辨实例,因此不会
出现问题。
3.优先顺序
在VRRP的拓扑结构示例中,经常可以看到拓扑结构由Active/Backup 2台设备组成,但在实际使用中也可能同时拥有100台以上的备用节点,这就可能
造成一个问题:当2台以上的备用节点同时工作时,若是主节点出现问题,那么主节点具体要漂移到哪个备用节点呢?
在VRRP中,会为各个节点设定优先顺序的值,各个节点在接收不到VRRP报文时,会自行发出VRRP报文。由于VRRP报文中有事先设定的优先顺序值,因此
通过比较该值,就可以迅速了解到比本节点优先值高的其他节点是否存在。万一有其他节点的优先值比本节点高,则其他节点会比本节点优先升格为主节点。
4.抢占模式
在VRRP的默认设定中,当比现有的主节点优先顺序高的节点启动时,会发生故障转移。也就是说可以认为优先顺序高的节点一定是主节点。这个行为可以通过
设定抢占模式进行改变。将抢占模式设为无效的情况下,只要主节点正常工作,即使其他节点的优先级比主节点高,也不会发生故障转移。
根据情况的不同,选择的抢占模式也不一样。
5.虚拟MAC地址
VRRP中除了定义虚拟IP地址,还定义了虚拟MAC地址。为了完成映射,在故障保护时,不仅需要映射ip地址,还需要映射MAC地址。如果不映射MAC地址的情况下
映射IP地址,通信目标下所有设备的ARP缓存表都需要更新。
为此,在VRRP中映射MAC地址时,需要对通信目标的ARP请求的更新进行特别的处理。
6.延迟发送 gratuitous ARP(GARP)
7.确认VIP
1.基础概念
1.服务器及基础设施搭建入门
1.2 实现web服务器的冗余(DNS轮询)
1.3 实现web服务器的冗余(基于IPVS的负载均衡器)
1.4 路由器及负载均衡器的冗余