集群
集群
集群(cluster)是由两台或多台计算机(称为节点node或成员member)共同执行任务
群集
集群方式
存储集群 GFS 共享存储
负载均衡 LB load balance
高可用 HA high avavilable
高性能计算
LB
负载均衡集群
一般用于请求负载分发,也就是按一定的算法把不同的请求调度给不同的节点,
这些节点提供的都是相同的服务。解决单台服务器压力过大的问题。
客户端
调度器(lb服务器) ----备调度器
web1 web2 web3
100000 100000 100000
调度算法
健康检查
会话保持 (session复制;利用类似memcache这种缓存数据保存session信息;session粘贴)
数据一致性:rsync同步,drbd存储同步.共享存储,分布式存储.
常用的负载均衡方式
1。手动选择 如:下载网站很多镜像站点
下载地址一
下载地址二
2,
location跳转
rewrite跳转
3.DNS轮询方式 对同一个域名加多条A记录
dig www.sina.com
可靠性低
负载分配不均衡,没有多种算法
没有健康检查,如果一个A记录节点挂了,DNS仍然会解析。就算你把DNS这条A记录改了,但DNS缓存功能会让整个网络过很久的时间才会都认这个改变
4。四层/七层负载均衡
硬件解决方案:<----一般都是四层调度,也有些设备支持七层调度。
F5 BIG-IP
NetScaler
Cisco CSS
软件解决方案:
lvs 四层调度(算法多)
keepalived(包括LVS)
红帽套装(包括lvs)
piranha (图形配置lvs)
ultra monkey(包括lvs)
nginx 四层或七层调度
Haproxy 四层或七层调度,特色在于七层调度。
varnish 或 squid (缓存加基本的调度) --这一类不能完全归于负载均衡软件里,只能做静态页面的
软件调度的优势:
软件成本低
硬件技术支持不够迅速
软件的可控性比较强
负载均衡集群
LVS linux virtual server (linux虚拟主机) 开源
一个有十种调度算法:(这里只实现8种)
1,rr round-robin 轮循
均等地对待每台真实服务器
2,wrr weighted round-robin 加权轮循
根据真实服务器的不同处理能力来调度访问请求,并可以动态地调整权值
3,lc least-connection 最少连接
根据连接数来分配,连接数少的服务器会多分配。
4,wlc weighted least-connection 加权最少连接
同时考量服务器的处理能力和连接数来进行分配
5,lblc 基于局部性的最少连接
主要用于cache集群
6,lblcwr 带复制的基于局部性的最少连接
主要用于cache集群
7,dh destionation hashing 目标地址散列
8,sh source hashing 源地址散列
关于加权和quiesce
例如:假设在真实服务器池中有三个服务器,服务器 A 和 B 为加权 1 和 3,服务器 C 为加权 2。如果服务器
C 由于某种原因当机,服务器 A 和 B 就会平级分配被丢弃的负载。但服务器 C 重新上线后,LVS 路
由器会视其为没有连接的服务器,并且将所有进入请求都一股脑发送到这台服务器中,直到和服务器 A
和 B 持平。
要防止此现象出现,管理员可将虚拟服务器设为 quiesce 服务器 — 无论何时当有新的服务器节点上线
时,都将最小连接表重新设为 0,且 LVS 路由器象所有真实服务器都是刚刚添加到群集中一样路由请求。
三种负载均衡技术:
NAT
通过网络地址转换,调度器重定请求报文的目标地址。,将请求分发给下端的真实服务器,真实服务器响应,再通过调度器返回给客户端。
这种架构,调度器容易成为整个架构的瓶颈。
TUNNEL
调度器直接把请求通过IP隧道转发给后端的真实服务器,而真实服务器返回时,直接返回给客户端,而不经过调度器。
所以效率比NAT高
DR DIRECTING Routing
类似tunnel技术
这种方式没有隧道的开锁,对于后台真实服务器也没有必须支持IP隧道协议的要求;
但是要求调度器必须有一块网卡和真实服务器在同一物理网段。
fullnat