服务器集群式架构 服务器集群原理
要想构建集群,或者解决生产环境中的问题,首先我们需要了解集群的原理,那么下面我从其基本的常识,到集群的构建(LVS),做了详细的记录,让我在面对问题时,能够拥有足够的知识,去解决问题。
一、集群描述
1、集群的定义
# 定义:可以理解为一组协同工作的服务器。解决了高并发的需求。2、集群的特性
1)可扩展
# 当服务器负载压力增加时,可以通过扩展的方式减少单台服务器的压力。 # 水平扩展:通过增加更多的服务器或者程序实例来分散负载,从而达到提升存储和计算的能力, # 优点:上限高、添加节点服务不会中断、性价比高 # 缺点:技术实现难度较高、需要更该网络拓扑结构 # 水平扩展实现方案: # DNS服务器:由于缓存服务器硬性服务器的性能平衡 # Agent代理:真实服务器、共享存储、用户通过Agent端的访问策略,将其代理到RS # 垂直扩展:增强单机硬件性能(如换一个更强大的硬件或服务器) # 优点:技术实现难度低、网络拓扑结构不需要更改 # 缺点:有上限瓶颈、服务访问会中断2)高可用
# 集群中的一个节点失效,其任务不会中断,会传递到其他节点。防止单节点失效,而导致访问中断3)高性能
# 当访问量增加时,能够轻松的扩展,提高集群的性能,应对更多的访问压力。3、集群的种类
1)负载均衡集群(load Balancing)---LBC
#定义: #将单台服务器的压力分担之不同的服务器节点共同承担 #结构: # 前端组件/负载调度器 # 真实服务器 # 共享存储 # 负载调度器分类:软件、硬件 # 软件:amoeba、Nginx,Ha-Proxy(linux-HA)、LVS 等 # 硬件:ROSE、安瑞科技、F5 等 #基于OSI七层模型: # 二层:数据链路层 F5 等 # 四层:传输层:Nginx(新版)、LVS、Ha-Proxy 等 # 七层:应用层:(可识别域名主机) Nginx、Ha-Proxy 等 # 原理: #四层:只完成一次完整的tcp连接,由Client通过调度器转发,发送至真实服务器完成 #七层:完成两次完整的tcp连接,一次由Client和调度器完成,一次有调度器和真实服务器完成 # 基于安全性: #四层:不能拦截SYN攻击 #七层:可以拦截SYN攻击 #基于范围行: #四层:只要是C/S结构的根据tcp、udp开发的服务体系 #七层:只能负载自己识别的协议模式 #基于并发能力: #四层大于七层2)高可用集群(High Availability)---HAC
#工作模式: # 将出现故障的服务器转发到另一个正常工作的服务器上,从而达到服务不会中断的效果。 #原理: #心跳线:主从服务器之间进行心跳检测,从服务器一旦发现主服务器由于某些原因而停止服务,立即投入使用,保证服务不会中断。 # 目的: # 尽可能的提高服务器的可用性。描述
通俗叫法
可用性级别
年度停机时间
基本可用性
2个9
99%
87.6小时
较高可用性
3个9
99.9%
8.8小时
具有故障自动恢复能力的可用性
4个9
99.99%
53分钟
极高可用性
5个9
99.999%
5分钟
3)高性能运算集群(Hight Performance)---HPC
# 当任务量极大的时候,用一个集群来完成此项任务。 # 提供了单台计算机提供不了的运算能力二、LVS
1、定义
# LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能,高可用的服务器群集,它具有良好的可靠性、可扩展性和可操作性。2、工作类型
1)NAT(路由模式)
# 特性: # 负载调度器工作在真实服务器和客户端之间 #负载调度器必须是linux系统,这是服务器可以使任意系统 #出入站均有负载调度器转发完成 # 支持端口映射2)DR(子接口路由模式)
#特性 #负载调度器与真实服务器处于同一个广播域 #负载调度器不许是linux系统,真实服务器必须是linux系统 #入站有调度器负责完成,出站由真实服务器和调度器完成 #不支持端口映射3、算法分类
1)静态调度算法
# RR轮询: #将每次用户的请求分配给后端服务器,从第一台服务器开始到第N台结束,然后循环 # WRR加权轮询: #按照权重的比例实现在多台主机之间进行调度 # SH(source hash)源地址散列: #将同一个ip用户的请求,发送给同一个服务器 # DH(destination hash)目标地址散列: # 将同一个目标地址的请求发送给同一个真实服务器(提高缓存的命中率)2)动态调度算法
# 连接类型: #活动连接:正在连接传送数据 #非活动连接:传输完成后,还没来得及断开握手 # LC(lest-connection):最少连接: #将新的连接请求,分配给连接数最少的服务器 #计算:活动连接 × 256 + 非活动连接 #例:RS1 活动连接10 非活动连接100,RS2 活动链接数20 非活动连接数0.利用算法可以知道RS2压力大于RS1 # WLC:加权最少连接: #特殊的最少连接算法,权重越大承担的请求数量越多 #计算:(活动连接数x256+非活动连接数)/权重 # SED:最短期望延迟:特殊的WLC算法 #计算:(活动连接数+1)x256/权重 # NQ永不排队: #特殊的SED算法,无需等待,如果有真实服务器的连接数等于0那就直接分配 不需要运算 # LBLC: #特殊的DH算法,既能提高缓存命中率,又要考虑服务器性能(动态调度算法) # LBLCR #LBLC+缓存,尽肯能提高负载均衡和缓存命中率的折中方案 #生产环境中,不需要缓存的用轮询机制(RR),需要缓存的用这种缓存的(LBLC), 以适合的生产环境为主,RR和WRR用的最多3)持久化连接
# 特性: #持久化连接不属于调度算法,但是会应用于算法,并且比算法优先级更高 #算法类似于 SH ,但是又有时间限制 # 分类: # PCC(持久客户端连接): #将来自于同一个客户端的所有请求统统定向至此前选定的RS;也就是只要IP相同,分配的服务器始终相同 ipvsadm -A -t 192.168.190.111:0 -s wlc -p 120 #-A:添加一个新的集群 -t:tcp集群 集群地址(:0代表任意端口)-s:指定算法 -p:指定持久化时间 #PPC(持久端口连接): #将来自于同一个客户端对同一个服务(端口)的请求,始终定向至此前选定的RS ipvsadm -A -t 172.16.0.8:80 -s rr -p 120 # PFMC持久防火墙标记连接: #持久防火墙标记连接;将来自于同一客户端对指定服务(端口)的请求,始终定向至此选定的RS;不过它可以将两个毫不相干的端口定义为一个集群服务 iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 80 -j MARK --set-mark 10 iptables -t mangle -A PREROUTING -d 172.16.0.8 -p tcp --dport 443 -j MARK --set-mark 10 service iptables save ipvsadm -A -f 10 -s wlc -p 120 # PFMC原理: #借助防火墙工具,将用户分类,打标签,集群根据对应的标签的值进行对应的负载调度 # ARP响应级别: #arp-ignore #0 只要本机配置有相应 IP 地址就响应 #1 仅在请求的目标地址配置在请求到达的网络接口上时,才给予响应 # ARP 通告行为: #arp-announce #0 将本机任何网络接口上的任何地址都向外通告 #1 尽可能避免像目标网络通告与其网络不匹配的地址信息表 #2 仅向目标网络通告与其网络相匹配的地址信息注:本文为博主查阅多方资料整理而成,如有侵权请留言联系博主删除。
注:本文为博主查阅多方资料整理而成,如有侵权请留言联系博主删除。 学习新东西,不要忘记复习旧知识,这样你才能更好!