第一章、集群理论基础
1、集群产生的原因
随着互联网的飞速发展,WEB网页也早已经从单一的静态网页变成了可以实现更多功能的复杂网页了,这后面软件的支持也是相当的庞大,lnmp是最常见的一种动态网页实现方式。随着业务的扩大,承载程序的服务器必然随着业务量的增加而捉襟见肘,必然需要提升业务效率。要达到这样的目的,方法有这几种,第一、通过提升单个服务器的性能,比如增加CPU/内存、存储的读写速度。第二种方法就是讲分层化或者叫功能分离,将实现不同功能的应用放在不同的服务器上来分担负载和风险。第三种,其实也是在第二种的基础上,搭建多个实现相同功能的服务器,并进行负载分担。那如何选择用户在访问资源的时候访问那个具有相同功能的服务器呢,这里就需要使用“负载均衡器”,就是专门负责检查并配发用户请求到一组相同功能服务器的一个软件或者硬件设备。
这里单独说一下mysql数据库的负责均衡,这个需要实现mysql的主从功能,就是只有主服务器可以有读写功能,而从服务器只能有读的功能。所以当有多台从服务器的时候,在应用程序和数据库之间除了负责读写分离的调度器外,还需要一个负载多个读功能的调度器。
2、负责均衡器
按照工作在那个层次分类:
TCP/UDP负载均衡器:工作在内核空间,性能好。功能较少
应用层负责均衡器:工作在用户空间,相对差。功能丰富,可以直接处理应用层协议请求,比如http协议的请求。
3、常见应用在WEB功能上的负责均衡器
TCP/UDP负载均衡器:LVS、haproxy
应用层负载均衡器:haproxy、nginx、apache、lighttped,varnish、squid。
4、常见应用在应用程序功能上的负责均衡器
TCP/UDP负载均衡器:LVS
5、常见应用在MYSQL功能上的负责均衡器
TCP/UDP负载均衡器:LVS
实现MYSQL功能的读写分离,需要更专门的调度器,比如mysql-proxy、amoeba,haproxy。
CDN和智能DNS服务器
CDN全称内容分发网络,工作目的就是缩短客户访问资源的时间,实现最优资源的内容分发和调度。这种技术其实就是通过在不同区域,不同网络,设置多个缓存服务器,不同地区或使用不同网络的用户优先被CDN选择使用离自己最近的缓存服务器中去查询资源。这一技术依赖于智能DNS技术,也就是可以自动识别辨别用户所使用的网络属于哪里。
共享存储(数据)实现高可用的方法:
两台都有lnmap平台的服务器共享一台NFS或者iSCSI的存储设备,并将信息存储在里面,要实现高可用需要一台“电源交换机”,实现不同主机间的切换,简称fencing技术。
集群的类型:
负载均衡集群
高可用集群
高性能集群(实际应用不多,常见的是并行处理系统,hadoop)
监控工具:
cacti、nagios、opsview、icinga、zabbix、ganglia、opennms、zennos
系统部署工具:
pxe、cobbler
自动化运维工具(推送配置):
puppet、saltstack
批量运行命令:
func、fabric、ansible
第二章 负载均衡集群-LOAD BALANCE CLUSTER:LB
常见硬件类型的包括BIGip(F5公司),netscaler(citrix),A10。
HA(高可用集群)常见软件:
hearbeat
corosync
HRCS(red hat cluster suite):cman
keepalived
ultramokey
基本原则:
1、至少3个节点(奇数),用于仲裁。
2、使用协调集群的算法zookeeper。它可以推送配置文件
共享存储通常应用在mysql数据的数据存储上,常用的有NAS和SAN。
NAS文件级别的存储,常见文件系统类型有nfs、samba。
SAN块级别的存储,常见的通信包括以太网通信和光纤通信。如果有多个写同时进行,需要使用特殊的文件系统。
集群文件系统:GFS2,OCFS2
分布式文件锁
HPC(高性能集群):
hadoop:本身搭建比较困难,然后很多公司也依照hadoop研发了自己的软件。比如cloudera、hortomworkers、EMC、INTER。
一、LVS:linux virtual server
LVS功能的实现方法非常类似于linux防火墙netfilter的DNAT功能。lvs在负载均衡选择后端服务器的时候会有一套调度方法,共有10种,而服务器在接收到请求的时候也有不同的响应方式,这种方式成为lvs的工作类型。ipvsadm工作在用户空间,而ipvs工作在内核空间。由于转发依赖于ip:port的形式,所以也称为四层交换或者四层路由。
注意:使用ipvs应该关闭netfilter功能。
LVS常见调度方法:
静态算法:
RR:轮询调度,依次调度所有可用realserver。
WRR:加权轮询调度,依照每台服务器的不同,设置不同的加权值
SH:源地址hash,相同用户的请求(ip)都使用相同的realserver进行响应,避免了选择不同realserver造成的访问内容的不同(用户cache信息),缺点是当访问的realserver宕机,会造成信息丢失。
DH:目标地址HASH,适用于有多个vip的情况。
动态算法:
lc:最少连接数算法,依据活动连接数和非活动连接数来计算,公式=活动连接数*256+非活动连接数
wlc:加权lc,公式=(活动连接数*256+非活动连接数)/权重
sed:最短期望延迟算法,是对wlc的改进,公式=(活动连接数+1)*256/权重
nq:永不排队算法,就是开始先每人分一个任务,然后在按照sed算法执行。
lblc::基于本地的最少链接动态的dh算法,dh算法+lc
lblcr:基于本地的带复制的最少链接,
LVS的工作类型(工作架构):
NAT:由调度器处理服务器对客户端的响应,就是数据的来去都经过director调度器。缺点是调度器称为中心,大量访问存在瓶颈问题,优点是只需要一个公网ip地址用在VIP上即可。
1、realserver使用私有ip地址
2、DIP和RIP之间不能有路由器,也就是不能跨网,realserver的网关应该指向DIP。
3、进出报文都经过directory,在高负荷下成为性能瓶颈。
4、支持端口映射。
5、realserver可以使用任意系统。
6、实际应用并不多。
DR:
客户机将发送请求报文送到路由器,路由器将报文转发到交换机,这时的源ip地址是客户端、目的地址是VIP。由于director和realsever都设置了vip,交换机这个时候就发送广播,由于通过linux内核特性设置了只有director可以接受广播,确认身份,所以当director收到mac地址广播后,它会依据协调算法选取realserver。并按照以下方式响应mac广播,源ip地址目的ip地址不变,修改源mac地址为路由器的mac地址,目的mac地址为指定realserver的mac地址,这样就实现了选择功能。然后通过在realserver设置指定路由来强制将 源ip设置为vip。
特点:
1、realserver可以使用私有地址,建议使用公网ip地址
2、realserver的网关不能指向DIP。
3、realserver和director要在同一个物理网络中,DIP和RIP要在同一个网段。
4、入站报文经过director,出站则由realserver直接响应client。
5、不能做端口映射
6、realserver的os没有限制
TUN :就是在DR基础上采用了隧道协议进行转发。
特点:
1、RIP不能是私有地址
2、realserver的网关不能指向DIP。
3、director和realserver不在同一个网段。
4、入站报文经过director,出站则由realserver直接响应client
5、不能做端口映射
6、realserver的os支持隧道协议。
本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968765,如需转载请自行联系原作者