Linux Cluster:
Cluster:计算机集合,为解决某个特定问题组合起来形成的单个系统;
Linux Cluster类型:
-
LB:Load Balancing,负载均衡;主机来平均访问的压力。由负载均衡器和多个后端主机分担主。
-
HA:High Availiablity,高可用,靠冗余节点实现;提高服务的可用性,有多个负载均衡器(和备份)来接收来自用户的请求
A(可用性)=MTBF(平均无故障时间)/(MTBF+MTTR(故障修复时间))
(0,1):90%, 95%, 99%, 99.5%, 99.9%, 99.99%, 99.999%
-
HP:High Performance,高性能;提升系统性能的!分布式系统解决方案的初期。解决计算难题。
www.top500.org
系统扩展方式:
Scale UP:向上扩展,指的是计算机性能跟不上了以后就换个性能更好的 Scale Out:向外扩展 Cluster
负载均衡集群
负载均衡器(调度器)用来接收来自用户的请求并按调度的算法发送到后端主机分担处理的计算机。这些主机的集合就叫做负载均衡集群
LB Cluster 负载均衡集群:
LB Cluster的实现:
硬件:
F5 Big-IP Citrix Netscaler A10 A10
软件:
lvs:Linux Virtual Server nginx haproxy ats:apache traffic server perlbal pound
基于工作的协议层次划分:
传输层(通用):(DPORT端口分发)
lvs:传输层直接路由转发 伪传输层调度 nginx:(stream),伪装成一个后端程序做转发通过套接字;并发能力有限! haproxy:(mode tcp)
应用层(专用):(自定义的请求模型分类)
proxy sferver:(某个协议的代理) http:nginx, httpd, haproxy(mode http), ... fastcgi:nginx, httpd, ... mysql:mysql-proxy, ... ...
站点指标:
-
PV:Page View,每次客户端成功请求的页面入口的浏览量(并不是对页面的每个资源的请求量)
-
UV:Unique Vistor,每个独立客户端对服务器的访问。每个访问者就是一个UV(客户端就是浏览器进程)
-
IP:独立的地址访问次数
注意:Cookie:用来追踪用户身份。服务器端用seession来保存客户端的各种活动
会话保持: (1) session sticky(会话粘性)访问绑定 Source IP基于源ip绑定 Cookie 基于cookie绑定 (2) session replication; 复制集群 session cluster:把后边的主机的session做同步 (3) session server
lvs:Linux Virtual Server 虚拟服务器
VS: Virtual Server(负载均衡器就是vs)
RS: Real Server(后端服务器)
作者:章文嵩;alibaba –> didi
lvs:四层路由器,四层交换机;
VS:根据请求报文的目标IP和目标协议及端口将其调度转发至某RealServer,根据调度算法来挑选RS;
iptables/netfilter:
iptables:用户空间的管理工具; netfilter:内核空间上的框架; 流入:PREROUTING --> INPUT 流出:OUTPUT --> POSTROUTING 转发:PREROUTING --> FORWARD --> POSTROUTING DNAT:目标地址转换; PREROUTING;
和iptables类似 lvs: ipvsadm/ipvs
ipvsadm:用户空间的命令行工具,规则管理器,用于管理集群服务及RealServer;
ipvs:工作于内核空间的netfilter的INPUT钩子之上的框架;
lvs集群类型中的术语:
vs:Virtual Server, Director, Dispatcher, Balancer rs:Real Server, upstream server, backend server3 CIP:Client IP, VIP: Virtual serve IP, RIP: Real server IP, DIP: Director IP
通信方式:
CIP <–> VIP == DIP <–> RIP
lvs集群的类型:
-
lvs-nat:修改请求报文的目标IP
-
lvs-dr:操纵封装新的MAC地址;
-
lvs-tun:在原请求IP报文之外新加一个IP首部;
-
lvs-fullnat:修改请求报文的源和目标IP;
1.lvs-nat:
多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发;
(1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP; (2)请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈; (3)支持端口映射,可修改请求报文的目标PORT; (4)vs必须是Linux系统,rs可以是任意系统;
2.lvs-dr:
Direct Routing,直接路由;
通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变;
Director和各RS都得配置使用VIP; Director将接受的请求进行重新封装,添加MAC首部发向交换机,让交换机发往后端主机。 RS的vip配置在lo上,接收到路由转发过来的请求后,拆解报文送往lo上的vip后再处理。 发送信息也要先经过lo再通过外部网卡转发发出去,这样就保证了源ip为vip,目标ipione为Cip了! (1) 确保前端路由器将目标IP为VIP的请求报文发往Director: (a) 在前端网关做静态绑定; (b) 在RS上使用arptables; (c) 在RS上修改内核参数以限制arp通告及应答级别 arp_announce arp_ignore (2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director; (3) RS跟Director要在同一个物理网络; (4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client; (5) 不支持端口映射;
3.lvs-tun:
转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;
(1) DIP, VIP, RIP都应该是公网地址; (2) RS的网关不能,也不可能指向DIP; (3) 请求报文要经由Director,但响应不能经由Director; (4) 不支持端口映射; (5) RS的OS得支持隧道功能; (6)可以跨越互联网进行转发。
4.lvs-fullnat:
通过同时修改请求报文的源IP地址和目标IP地址进行转发;
CIP --> DIP VIP --> RIP (1) VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP; (2) RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client; (3) 请求和响应报文都经由Director; (4) 支持端口映射; 注意:此类型默认不支持;
原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/56328