Cluster概念
- 系统拓展方向:
Scale UP:向上拓展、增强
Scale Out:向外拓展,增加设备,调度分配问题,Cluster
- Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统
- Linux Cluster类型:
1、LB:Load Balancing,负载均衡
2、HA:High Availiabilty,高可用,SPOF
MTBF:平均无故障时间
MTTR:平均恢复前时间
A=MTTR/(MTBF+MTTR) (0,1) 99%,99.5%,99.9%,99.999%
3、HPC:高性能 www.top500.org
分布式系统:
分布式存储:云盘
分布式计算:hadoop,Spark
Cluster分类
LB Cluster的实现
硬件
F5 Big-IP
Citrix Netscaler
A10 A10
软件
lvs :Linux Virtual Server
nginx:支持七层调度
haproxy:支持七层调度
ats:apache traffic server,yahoo捐助
perlbal:perl编写
pound
基于工作的协议层次划分:
传输层(通用):DPORT(目标端口)
LVS:
Nginx:stream
haproxy:mode tcp
应用层(专用):针对特定协议,自定义的请求模型分类
proxy server
http:nginx,httpd,haproxy(mode httpd), 。。。
fastcgi:nginx,httpd,。。。。
mysql:mysql-proxy,。。。
Cluster相关
会话保持:负载均衡
(1)session sticky:同一用户调度固定服务器 #同一用户绑定到一台服务器
Source IP(原地址):LVS sh算法(对某一特定服务而言)#同一IP的用户绑定到一台服务器
Cookie #一个客户端绑定一个服务器
(2)session replication:每台服务器拥有全部session #内存消耗太大。
session multicast cluster
(3)session server:专门的session服务器
Memcached,Redis
HA集群实现方案
keepalived:vrrp协议 #解决调度器损坏的问题
ais:应用接口规范
heartbeat
cman+rgmanager(RHCS)
coresync_prcemaker
LVS介绍
LVS:负载调度器,集成内核(发明人:章文嵩)
官网:http://www.linuxvirtualserver.org/
VS :Virtual Server,负责调度 #VS(调度器)
RS:Real Server,负责真正提供服务 #RS(后端服务器),在nginx里叫上游服务器
L4:四层路由器或交换机
工作原理:VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS
iptables/netfilter:
iptables:用户空间的管理工具
netfilter:内核空间上的框架
流入:PREROUTING ——>INPUT
流出:OUTPOT——>POSTROUTING
转发:PREROUTING——>FORWARD——>POSTROUTING
DNAT:目标地址转换;PREROUTING
LVS集群体系结构
VIP公网地址
Real server私网地址
LVS术语
lvs集群类型中的术语
VS:Virtual Server,Director Server(DS)
Dispatcher(调度器),Load Balancer
RS:Real Server(LVS),upstream server(nginx)
backend server(haproxy)
CIP:Client IP #客户端IP
VIP:virtual server IP #VS外网中的IP
DIP:Director IP #VS内网中的IP
RIP:Real server IP #服务器IP
访问流程:CIP<—>VIP==DIP<—>RIP
LVS集群类型
lvs:ipvsadm/ipvs
ipvsadm:用户空间的命令行公式,规则管理器
用于管理集群服务及RealServer
ipvs:工作于内核空间的netfilter的INPUT钩子上的框架
lvs集群的类型
lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
lvs-dr:操作封装新的MAC地址
lvs-tun:在原请求IP报文之外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP
lvs-nat工作原理
lvs-nat模式
lvs-nat:
本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
(1)RIP和DIP应在同一个IP网络,且应使用私网地址;在同一网段时RS的网关要指向DIP
(2)请求报文和响应报文都必须经由Director转发,Diretcor易于成为系统瓶颈
(3)支持端口映射,可修改请求报文的目标PORT
(4)VS必须是Linux系统,RS可以是任意OS系统
NAT模式
LVS-DR模型
LVS-DR:Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
(1)Director和各RS都配置有VIP
(2)确保前端路由器将目标IP为VIP的请求报文发往Director
<1> 在前端网关做静态绑定VIP和Director的MAC地址
<2>在RS上使用arptables工具
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
<3>在RS上修改内核参数以限制arp通告及应答级别/proc/sys/net/ipv4/conf/all/arp_ignore(忽略)
/proc/sys/net/ipv4/conf/all/arp_announce(发布)
#一般用第三种方法
(3)RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不经由Director
(4)RS和Director要在同一个物理网络#但逻辑上可以用两个网段,对外网卡需要一个地址,对内网卡需要两个地址,总共3个ip
(5)请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
(6)不支持端口映射(端口不能修改)
(7)RS可使用大多数OS系统
VS/DR体系结构