Linux Cluster
Cluster:
Scale up:向上扩展,垂直扩展
Scale out: 向外扩展,横向扩展
director, dispatcher, load balancer
系统:
可扩展性、可用性、性能、容量
性能:响应时间;
容量:在一定时间内能完成的工作量;容量必须是可有效利用;在保证可接受性能的情况下能够达到的吞吐量;
最大吞吐量:基准性能测试时得出的数据指标;系统容量的极限;
可扩展性:表明了需要增加资源以完成更多的工作任务时能够获得的划算地等同提升;
系统运维:可用 --> 标准化 --> 自动化
SPOF: Single Point Of Failure
Linux Cluster类型:
负载均衡集群:Load Balancing
高可用集群:High Availability
A = 平均无故障时间/(平均无故障时间+平均修复时间)
95%, 99%, 99.9%, 99.99%, 99.999%
高性能集群:High Performance
www.top500.org
分布式系统:
NoSQL: HBase, Redis
存储:MogileFS
文件系统:Ceph
构建高可扩展的系统,应该遵循的一个基本原则:在系统内部尽量避免串行化和交互;
思路:
分层:接入层 --> 应用层 --> 服务层 --> 数据层
分割:化整为零,切割大业务为多个小业务
分布式:
分布式应用
分布式静态资源
分布式数据和存储
分布式计算
Linux的集群类型:LB、HA、HP
LB集群调度器的实现:
工作在协议层来划分:
tcp:根据请求报文中的目标地址和端口进行调度;
应用层:根据请求的内容进行调度,而且此种调度为“代理”方式;
软件:
tcp: lvs (Linux Virtual Server), haproxy, nginx
http: haproxy, nginx, apache(proxy module, balancer module), ats(apache traffic server), squid, varnish
mysql: mysql-proxy
硬件:
F5:Big-IP
Citrix: NetScaler
A10: A10
Array:
RedWare
lvs: Linux Virtual Server, 章文嵩
layer4 router
layer4 switch
根据目标地址和端口作出转发与否的决策,根据调度方法作出转发至哪一个后端的决策;
组成部分:ipvs, ipvsadm
netfilter:
PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING
ipvs工作于netfilter的INPUT链接;
ipvsadm用于在ipvs上定义集群服务:同时也得定义此集群服务对应于有哪个后端主机可用;
根据所指定的调度方法(算法)作出调度决策;
支持的协议:TCP, UDP, SCTP, AH, ESP, AH_ESP
lvs中的常用术语约定:
Host:
Director:调度器
Real Server: RS,后端提供服务的主机
IP:
Client: CIP
Director Virtual IP: VIP
Directory IP: DIP
Real IP: RIP
lvs的类型:
lvs-nat:masquerade
lvs-dr:direct routing
lvs-tun:tunneling
lvs-fullnat:fullnat
lvs-nat:类似于DNAT, 但支持多目标转发;
它通过修改请求报文的目标地址为根据调度算法所挑选出的某RS的RIP来进行转发;
架构特性:
(1) RS应该使用私有地址,即RIP应该为私有地址;各RS的网关必须指向DIP;
(2) 请求和响应报文都经由Director转发;高负载场景中,Director易于成为系统瓶颈;
(3) 支持端口映射;
(4) RS可以使用任意类型的OS;
(5) RS的RIP必须与Director的DIP在同一网络;
lvs-dr:直接路由
Director在实现转发时不修改请求的IP首部,而是通过直接封装MAC首部完成转发;目标MAC是Director根据调度方法挑选出某RS的MAC地址;拓扑结构有别有NAT类型;
架构特性:
(1) 保证前端路由器将目标地址为VIP的请求报文通过ARP地址解析后送往Director
解决方案:
静态绑定:在前端路由直接将VIP对应的目标MAC静态配置为Director的MAC地址;
arptables:在各RS上,通过arptables规则拒绝其响应对VIP的ARP广播请求;
内核参数:在RS上修改内核参数,并结合地址的配置方式实现拒绝响应对VIP的ARP广播请求;
(2) RS的RIP可以使用私有地址;但也可以使用公网地址,此时可通过互联网上的主机直接对此RS发起管理操作;
(3) 请求报文必须经由Director调度,但响应报文必须不能经由Director;
(4) 各RIP必须与DIP在同一个物理网络中;
(5) 不支持端口映射;
(6) RS可以使用大多数的OS;
(7) RS的网关一定不能指向Director;
lvs-tun: 不修改请求报文IP首部,而是通过IP隧道机制在原有的IP报文之外再封装IP首部,经由互联网把请求报文交给选定的RS;
CIP;VIP DIP;RIP
架构特性:
(1) RIP, DIP, VIP都是公网地址;
(2) RS的网关不能,也不可能指向DIP;
(3) 请求报文由Director分发,但响应报文直接由RS响应给Client;
(4) 不支持端口映射;
(5) RS的OS必须得支持IP隧道;
lvs-fullnat:通过请求报文的源地址为DIP,目标为RIP来实现转发;对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发;
架构特性:
(1) RIP,DIP可以使用私有地址;
(2) RIP和DIP可以不在同一个网络中,且RIP的网关未必需要指向DIP;
(3) 支持端口映射;
(4) RS的OS可以使用任意类型;
(5) 请求报文经由Director,响应报文经由Director;
lvs scheduler:调度器
静态方法:仅根据算法本身实现调度;
RR: round-robin, 轮询;轮叫、轮调、轮流;
WRR:weighted round-robin, 加权轮询;
SH:Source ip Hashing,源地址哈希;把来自同一个地址请求,统统定向至此前选定的RS;会话绑定时
DH:Destination ip Hashing, 目标地址哈希;把访问同一个目标地址的请求,统统定向至此前选定的某RS;
动态方法:根据算法及后端RS当前的负载状况实现调度;
LC: least connection
Overhead=Active*256+Inactive
默认WLC: weighted least connection
Overhead=(Active*256+Inactive)/weight
SED:Shorted Expection Delay
Overhead=(Active+1)*256/weight
NQ:Never Queue
LBLC:Local-Based Least Connection,静动态方式的DH算法; 先定向,压力过大,会调剂。
LBLCR:Replicated LBLC:带复制的,复制有限的到负载稍小的地方
Session 保持
Session Sticky
Session Replication Cluster
Session Server
LVS基础概念:
lvs类型
lvs scheduler
ipvsadm命令的用法:
管理集群服务:创建、修改、删除
管理集群服务的RS:添加、修改、移除
规则查看:
统计数据
速率
管理集群服务:
创建或修改:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
-A: 添加
-E:修改
-t: 承载的应用层协议为基于TCP协议提供服务的协议;其service-address的格式为“VIP:PORT”,如“172.16.100.6:80”;
-u: 承载的应用层协议为基于UDP协议提供服务的协议;其service-address的格式为“VIP:PORT”,如“172.16.100.6:53”;
-f:承载的应用层协议为基于TCP或UDP协议提供服务的协议,但此类报文会经由iptables/netfilter打标记,即为防火墙标记;其service-address的格式为“FWM”,例如“10”;
-s scheduler: 指明调度方法;默认为wlc;
删除:
ipvsadm -D -t|u|f service-address
管理集群服务上的RS:
添加或修改:
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-r server-address: 指明RS,server-address格式一般为“IP[:PORT]”;注意,只支持端口映射的lvs类型中才应该显式定义此处端口
例如:-r 192.168.10.7:80
[-g|i|m]: 指明lvs类型
默认-g: gateway, 意为dr类型;
-i: ipip, 意为tun类型;
-m: masquerade, 意为nat类型;
[-w weight]:当前RS的权重;
注意:仅对于支持加权调度的scheduler,权重才有意义;
删除:
ipvsadm -d -t|u|f service-address -r server-address
清空所有集群服务的定义:
ipvsadm -C
保存及恢复集群服务及RS的定义:
ipvsadm -S > /etc/sysconfig/ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
service ipvsadm save
ipvsadm -R < /etc/sysconfig/ipvsadm
ipvsadm-restore < /etc/sysconfig/ipvsadm
service ipvsadm restart
第二种方法
查看规则:
ipvsadm -L|l [options]
-c: 列出当前所有connection;
--stats: 列出统计数据
--rate: 列出速率
-n, --numeric: 数字格式显示IP及端口;
--exact: 精确值;
清空计数器:
ipvsadm -Z [-t|u|f service-address]
案例:lvs-nat类型的web服务器集群
tcpdump -i eth0 -nn host IP and tcp port 80