集群简单概述
一、提升服务器性能方法
1. 向上扩展:换硬件,提升性能
缺陷:批量增加cpu,不一定能翻倍提升性能,因为有仲裁机制存在,会选择cpu分发处理,这个过程需要耗费系统资源;数据迁移不方便
2. 向外(水平)扩张:
缺陷:dns不能判断后端服务器是否断链,即使出现故障,也会一直将解析请求发给后台
3. 新的扩展结构(集群):
说明:agent端,可以转发给后台,并且能判断后台服务器的健康状况;后端服务器的数据需共同使用mysql,数据才能每次访问不同服务器时同步;mysql不能存储图片和视频资料,只能存放在本地主机,但是需要实现同步,则用到共享存储NFS( 负载均衡和高可用一般一起使用)
二、集群特点
1)有共享的存储
2)能灵活的扩展和删除
3)监控节点运行情况,剔除功能
1. 负载均衡集群
说明:如果前端的agent扛不住,则可以加多个agent(集群),这样可以无限制的降低压力
分类:
a. LVS:
b. RAC:Orc推出的
c. F5:将软件做成芯片硬件
2. 高可用集群:
特点:
a. 为应用程序提供持久访问
b. 出现故障自动切换
心跳检测:
a. RS232串口线:异步传输线
b. 通过网卡来连接
注:服务器正常,心跳线异常断掉,即脑裂,两台服务器都会认为对方已死,抢着处理用户请求,同时读写共享存储,造成数据不完整,甚至是灾难级别的;vip冲突(业务ip是连着的),会对服务造成影响,导致访问不可达
脑裂解决:预防为主,添加冗余心跳线;强制隔离:爆头(Stonish),即让电源交换机掐断另外一台服务器的电源;用工具实现,ipfail,给两台主机设置一个参考ip,去ping第三方设备
停机标准:
99% 2个9 1年 87.6小时
99.9% 3个9 1年 8.8小时
99.99% 4个9 1年 53分钟
99.999% 5个9 1年 3-5分钟
软件:
a. heartbeat HA:用的比较多
b. RHCS:廉价
c. ROSE:商业软件
d. Keepalived:用的非常多
3. 高性能集群
特点:
和负载均衡相比:高性能是缩短单个任务的执行时间,而负载均衡是提高单位时间内执行的任务数;
客户端的3PB数据,通过AGENT收集的服务器信息,直接分发数据给服务器;然后通过AGENT2,来让服务器来操作这些数据,如开个运算数据的程序;最后所有节点运算完数据,汇总反馈给客户端
机制:将3PB数据拆分成多个100G,即Mapreduce,告诉client如何把数据打碎,然后分配到不同的节点上,因为有分布式文件系统的支持,可以将这些数据联系起来
软件:
a. hadoop:提供一分布式文件系统HDFS(允许文件放在多个服务器主机上),让这个文件
系统跨越这些服务器主机来分配任务
b. spark
c. storm
三、负载均衡分类
1)LVS:工作在第四层,不需要解析高层协议,做的工作越少,代表性能越高,通过ip+端口来转发
2)nginx、haproxy:工作在第七层,虽然性能略逊于4层(封装包过程中,消耗性能),但是支持很多高级特性,通过域名、内容等转发
1. 四层和七层模型图
2. 原理的对比:
四层调度器:只是起一个转发作用,相当于透明的设备(客户端和节点服务器1次握手);主要用于tcp应用,如开发oa、erp系统
七层调度器:需和客户端、节点服务器都建立联系,2次tcp连接(2*3次握手);应用以http为主,能更加精确判断请求的类型,从而转发到相应的服务端口,并且可以连接服务器节点过程中,添加功能相应的缓存功能模块
3. 安全性对比:
安全隐患:SYN FLOOD(SYN泛红攻击,控制众多的源客户端,用虚假的ip地址,对某一个目标,发送大量的SYN请求,耗尽服务器资源),属于典型的DOS(Denial of service ,拒绝服务式攻击,利用漏洞让服务器瘫痪)和DDOS(distributed denial of service ,分布式拒绝服务式攻击,利用僵尸主机发送大量的看似合法的网络包造成网络阻塞或系统资源的耗尽)攻击
四层调度器:转发的标准就是ip+端口,因此没有抗攻击的能力,但是因为简单和性能原因,实际生产环境中,中小企业用的更多,F5硬件也是用的4层调度器
七层调度器:可以设定一些过滤策略来防止攻击,但是它本身需要较高性能来分析数据包,因为调度器宕机比节点宕机后果更严重
四、LVS负载均衡
1. 核心组件:
ipvsadm:位于用户空间,让管理员操作的一个命令模块,通过命令可以去修改内核模块
ipvs:服务均衡内核空间的一个模块,用来提供最核心的功能
ipvs郭子函数:在INPUT函数将请求报文转发给本机http服务前,抢夺过来,查看是否指向自己管理的集群主机上,并改变转发路径;如果客户端是200.200.200.1:22端口,ipvs也会看一下,不是自己设定的80端口规则,则不转发,直接让INPUT函数发给本机
ipvsadm管理员:将集群主机信息输进内核里,让内核知晓自己管理下的服务器
一个负载调度器可以接管过个集群,但是考虑到系能问题,一般只连接一个集群;如果单个集群的服务器数较少,可以采取连接多个集群
2. 相关概念:
Directory
RealServer
CIP : 客户端ip
DIP:负载调度器内网口ip
VIP:集群ip
RIP:服务器节点ip
五、负载均衡器的3种工作模式
NAT模式
地址转换模式;负载调度服务器压力过大(只能管理少数服务器节点,一般10台以内);所有集群节点必须在同一个网络中;所有的节点网关必须指向dirc的内网ip;可以管理任意操作系统节点(本身使用Linux操作系统)(只依赖ip和端口);最简单
DR模式
路由器发请求包到交换机时,RS主机本来也可以收到消息(也配置了vip),但是在内核中禁用了,所以收不到请求,最终DR通过MAC的形式,再转发给RS,RS再直接回请求给外网路由器(客户机);优点大大减轻了负载服务器的压力,支持更多节点。缺点:集群节点和负载服务器在同一个网络;所有的节点都可以设置成私网,也可以是公网ip(万一负载服务器出现故障,可以将节点ip设置为客户端指向的公网ip直接通信;可以ssh远程管理RS主机);调度器只负责请求入栈;所有节点主机不能使用调度器内网地址做网关,而是出口路由器的网关地址;最实用,支持100台左右
TUN模式
隧道模式(隧道技术,二次封装,在原来ip首部的基础上再加上一个ip),所有节点主机和调度器都是用公网地址;不受地理位置限制。缺点:所以主机需要一个公网ip,并且必须配置在RIP上;负载调度器只负责入栈请求;集群节点一定不能使用负载调度器的默认网关;负载调度器要支持隧道功能