网站开发费用包括美工费吗,网页设计基础开题报告及网页流程图,头像设计制作器,怎么优化关键词排名优化目录 1.什么是负载均衡
1.1为什么用负载均衡
1.2.负载均衡类型
1.2.1.四层负载均衡
1.2.2.七层负载均衡
1.3 四层和七层的区别
2.LVS介绍
2.1LVS 的优势与不足
2.2LVS 核心组件和专业术语
3.ipvsadm命令
4.LVS集群中的增删改
4.1.管理集群服务中的增删改
4.2.管理集…
目录 1.什么是负载均衡
1.1为什么用负载均衡
1.2.负载均衡类型
1.2.1.四层负载均衡
1.2.2.七层负载均衡
1.3 四层和七层的区别
2.LVS介绍
2.1LVS 的优势与不足
2.2LVS 核心组件和专业术语
3.ipvsadm命令
4.LVS集群中的增删改
4.1.管理集群服务中的增删改
4.2.管理集群中RealServer的曾增删改
5.LVS负载均衡四种工作模式
5.1NAT模式VS-NAT
5.2实例练习
5.3 DR模式
5.4实例练习
5.5防火墙标签解决轮询问题
5.6实例练习
5.7 IP隧道(Tunnel)模式VS-TUN
5.8FULL-NAT模式
5.9四种模式的区别
6.lvs持久链接
7.LVS的调度算法
7.1lvs调度算法类型
7.2.lvs静态调度算法
7.3.lvs动态调度算法
7.4在4.15版本内核以后新增调度算法 1.什么是负载均衡
负载均衡Load Balance简称LB是一种服务或基于硬件设备等实现的高可用反向代理技术负载均 衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备从而提高了 公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展
1.1为什么用负载均衡
Web服务器的动态水平扩展--对用户无感知
增加业务并发访问及处理能力--解决单服务器瓶颈问题
节约公网IP地址--降低IT支出成本
隐藏内部服务器IP--提高内部服务器安全性
配置简单--固定格式的配置文件
功能丰富--支持四层和七层支持动态下线主机
性能较强--并发数万甚至数十万
1.2.负载均衡类型
1.2.1.四层负载均衡 1.通过ipport决定负载均衡的去向。
2.对流量请求进行NAT处理转发至后台服务器。
3.记录tcp、udp流量分别是由哪台服务器处理后续该请求连接的流量都通过该服务器处理。
4.支持四层的软件
lvs重量级四层负载均衡器。
Nginx轻量级四层负载均衡器可缓存。nginx四层是通过upstream模块
Haproxy模拟四层转发。
1.2.2.七层负载均衡 1.通过虚拟ur|或主机ip进行流量识别根据应用层信息进行解析决定是否需要进行负载均衡。
2.代理后台服务器与客户端建立连接如nginx可代理前后端与前端客户端tcp连接与后端服务器建立 tcp连接,
3.支持7层代理的软件 Nginx:基于http协议(nginx七层是通过proxy_pass)
Haproxy:七层代理会话保持、标记、路径转移等。
1.3 四层和七层的区别 所谓的四到七层负载均衡就是在对后台的服务器进行负载均衡时依据四层的信息或七层的信息来决 定怎么样转发流量 四层的负载均衡就是通过发布三层的IP地址VIP然后加四层的端口号来决定哪些流量需要做负 载均衡对需要处理的流量进行NAT处理转发至后台服务器并记录下这个TCP或者UDP的流量是由哪 台服务器处理的后续这个连接的所有流量都同样转发到同一台服务器处理 七层的负载均衡就是在四层的基础上没有四层是绝对不可能有七层的再考虑应用层的特征比 如同一个Web服务器的负载均衡除了根据VIP加80端口辨别是否需要处理的流量还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。
1.分层位置:四层负载均衡在传输层及以下七层负载均衡在应用层及以下
2.性能 :四层负载均衡架构无需解析报文消息内容在网络吞吐量与处理能力上较高:七层可支持解析应用 层报文消息内容识别URL、Cookie、HTTP header等信息。、
3.原理 :四层负载均衡是基于ipport;七层是基于虚拟的URL或主机IP等。
4.功能类比:四层负载均衡类似于路由器;七层类似于代理服务器。
5.安全性:四层负载均衡无法识别DDoS攻击;七层可防御SYN Cookie/Flood攻击
2.LVS介绍
LVS 是Linux Virtual Server的简称也就是 Linux 虚拟服务器,是一个由章文嵩博士发起的自由软件项目它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分因此性能较高。通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
2.1LVS 的优势与不足
优势
高并发连接LVS基于内核网络层面工作有超强的承载能力和并发处理能力。单台LVS负载均衡器可支持上万并发连接。
稳定性强是工作在网络4层之上仅作分发之用这个特点也决定了它在负载均衡软件里的性能最强稳定性最好对内存和cpu资源消耗极低。
成本低廉硬件负载均衡器少则十几万多则几十万上百万LVS只需一台服务器和就能免费部署使用性价比极高。
配置简单LVS配置非常简单仅需几行命令即可完成配置也可写成脚本进行管理。
支持多种算法支持多种论调算法可根据业务场景灵活调配进行使用
支持多种工作模型可根据业务场景使用不同的工作模式来解决生产环境请求处理问题。
应用范围广因为LVS工作在4层所以它几乎可以对所有应用做负载均衡包括http、数据库、DNS、ftp服务等等
不足 软件本身不支持正则表达式处理不能做动静分离而现在许多网站在这方面都有较强的需求这个是Nginx/HAProxyKeepalived的优势所在。 如果是网站应用比较庞大的话LVS/DRKeepalived实施起来就比较复杂
2.2LVS 核心组件和专业术语
核心组件 LVS的管理工具和内核模块 ipvsadm/ipvs
ipvsadm用户空间的命令行工具用于管理集群服务及集群服务上的RS等
ipvs工作于内核上的程序可根据用户定义的集群实现请求转发
VSVirtual Server #虚拟服务 VSVirtual Server #虚拟服务Director, Balancer #负载均衡器、分发器RSReal Server #后端请求处理服务器CIP: Client IP #用户端IPVIPDirector Virtual IP #负载均衡器虚拟IPDIPDirector IP #负载均衡器IPRIPReal Server IP #后端请求处理服务器IP
3.ipvsadm命令
核心功能:
集群服务管理:增、删、改
集群服务的RS管理:增、删、改
查看
命令参数
管理集群服务
ipvsadm -A|E -ttcp|uudp|f防护墙标签 \
service-address(集群地址) \
[-s scheduler(调度算法)] \
[-p [timeout]] \
[-M netmask] \
[--pepersistence_engine] \
[-b sched-flags]
ipvsadm -D -t|u|f service-address 删除
ipvsadm –C 清空
ipvsadm –R 重载
ipvsadm -S [-n] 保存
管理集群中的real server
ipvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-w
weight](权重)
ipvsadm -d -t|u|f service-address -r server-address 删除RS
ipvsadm -L|l [options] 查看rs
ipvsadm -Z [-t|u|f service-address] 清楚计数器
4.LVS集群中的增删改
4.1.管理集群服务中的增删改
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] -A #添加 -E #修改 -t #tcp服务 -u #udp服务 -s #指定调度算法默认为WLC -p #设置持久连接超时持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver -f #firewall mask 火墙标记是一个数字
#增加
[rootDR-server ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[rootDR-server ~]# ipvsadm -A -f 66 -p 3000
#修改
[rootDR-server ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 3000
#删除
[rootDR-server ~]# ipvsadm -D -t 172.25.254.100:80
[rootDR-server ~]# ipvsadm -D -f 66
4.2.管理集群中RealServer的曾增删改
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]
-a #添加realserver
-e #更改realserver
-t #tcp协议
-u #udp协议
-f #火墙 标签
-r #realserver地址
-g #直连路由模式
-i #ipip隧道模式
-m #nat模式
-w #设定权重
-Z #清空计数器
-C #清空lvs策略
-L #查看lvs策略
-n #不做解析
--rate 输出速率信息
#添加
[rootDR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30 -m
[rootDR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.40 -m -w 2
#更改
[rootDR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -m -w 1
[rootDR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -i -w 1
#删除
[rootDR-server ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30
[rootDR-server ~]# ipvsadm -Ln
[rootDR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS- RemoteAddress:Port
TCP 172.25.254.100:80 0 0 0 0 0- 192.168.0.30:80 0 0 0 0 0- 192.168.0.40:80 0 0 0 0 0
[rootDR-server ~]# ipvsadm -C
[rootDR-server ~]# ipvsadm -Z -t 172.25.254.20:80
[rootDR-server ~]# ipvsadm -Ln --rate
IP Virtual Server version 1.2.1 (size4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS- RemoteAddress:Port
TCP 172.25.254.20:80 0 0 0 0 0- 192.168.0.30:80 0 0 0 0 0- 192.168.0.40:80 0 0 0 0 0
5.LVS负载均衡四种工作模式
5.1NAT模式VS-NAT
原理就是把客户端发来的数据包的IP头的目的地址在负载均衡器上换成其中一台RS的IP地址并发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP将目的地址改为客户端IP地址即可期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器 优点集群中的物理服务器可以使用任何支持TCP/IP操作系统只有负载均衡器需要一个合法的IP地址。缺点扩展性有限。当服务器节点普通PC服务器增长过多时,负载均衡器将成为整个系统的瓶颈因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时大量的数据包都交汇在负载均衡器那速度慢
5.2实例练习 为RS2设置ip 重启网卡检查网关和ip 为RS1设置IP重启网卡检查网关和ip 配置LVS 进入/etc/sysctl.conf文件中添加net.ipv4.ip_forward1 LVS中打开内核路由功能 在LVS中安装ipvsadm
yum install ipvsadm -y
在LVS中添加调度策略
ipvsadm -A -t 172.25.254.100:80 -s rr
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m 保存规则 测试 5.3 DR模式 直接路由(Direct routing)模式LVS-DR LVS/DR 直接路由模式只有进站的数据流量经过分发器(数据链路层负载均衡因为他修改的是目的mac地址)--利用二层功能mac地址
原理负载均衡器和RS都使用同一个IP对外服务但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC因为IP一致并将请求分发给这台RS这时RS收到这个数据包,处理完成之后由于IP一致可以直接将数据返给客户则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端
优点和TUN隧道模式一样负载均衡器也只是分发请求应答包通过单独的路由方法返回给客户端。与VS-TUN相比VS-DR这种实现方式不需要隧道结构因此可以使用大多数操作系统做为物理服务器。
缺点要求负载均衡器的网卡必须与物理网卡在一个物理段上。
5.4实例练习
配置LVS 配置路由器 配置客户端 RS主机中使vip不对外响应 在LVS主机中和RS主机中添加vip 重启后在LVS添加调度 测试 5.5防火墙标签解决轮询问题
以http和https为例当我们在RS中同时开放80和443端口那么默认控制是分开轮询的这样我们就出 现了一个轮询错乱的问题 当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上
FWM:FireWall Mark
MARK target 可用于给特定的报文打标记,
--set-mark value
其中:value 可为0xffff格式表示十六进制数字借助于防火墙标记来分类报文而后基于标记定义集群服 务:可将多个不同的应用使用同一个集群服务进行调度
5.6实例练习
在RS1和RS2中安装mod_ssl并重启apache使其支持https
]# yum install mod_ssl -y
]# systemctl restart httpd ]# yum install mod_ssl -y]# systemctl restart httpd
在LVS中设置调度 在LVS主机中为端口做标记 调整LVS调度 测试 5.7 IP隧道(Tunnel)模式VS-TUN
原理互联网上的大多Internet服务的请求包很短小而应答包通常很大。那么隧道模式就是把客户端发来的数据包封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议所以,在RS的内核中,必须编译支持IPTUNNEL这个选项
优点负载均衡器只负责将请求包分发给后端节点服务器而RS将应答包直接发给用户。所以减少了负载均衡器的大量数据流动负载均衡器不再是系统的瓶颈就能处理很巨大的请求量这种方式一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。
缺点隧道模式的RS节点需要合法IP这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议服务器可能只局限在部分Linux系统上。 5.8FULL-NAT模式
原理:客户端对VIP发起请求Director接过请求发现是请求后端服务。Direcrot对请求报文做full-nat把源ip改为Dip把目标ip转换为任意后端RS的rip然后发往后端rs接到请求后进行响应相应源ip为Rip目标ip还是DIP又内部路由路由到Director,Director接到响应报文进行full-nat。将源地址为VIP目标地址改为CIP 5.9四种模式的区别
lvs-nat与lvs-fullnat请求和响应报文都经由Director lvs-natRIP的网关要指向DIP lvs-fullnatRIP和DIP未必在同一IP网络但要能通信
lvs-dr与lvs-tun请求报文要经由Director但响应报文由RS直接发往Client lvs-dr通过封装新的MAC首部实现通过MAC网络转发 lvs-tun通过在原IP报文外封装新IP头实现转发支持远距离通信
6.lvs持久链接
在我们客户上网过程中有很多情况下需要和服务器进行交互客户需要提交响应信息给服务器如果单 纯的进行调度会导致客户填写的表单丢失为了解决这个问题我们可以用sh算法但是sh算法比较简单 粗暴可能会导致调度失衡
解决方案
在进行调度时不管用什么算法只要相同源过来的数据包我们就把他的访问记录在内存中也就是把 这个源的主机调度到了那个RS上 如果在短期默认360S内同源再来访问我仍然按照内存中记录的调度信息把这个源的访问还调度到 同一台RS上。 如果过了比较长的时间默认最长时间360s同源访问再次来访那么就会被调度到其他的RS上
ipvsadm -AlE -tlulf service-address [-s scheduler] [-p [timeout]]默认360秒
在lvs调度器中设定
[rootlvs ~]# ipvsadm -E -f 6666 -s rr -p [3000]
[rootlvs ~]# ipvsadm -LnC
7.LVS的调度算法
7.1lvs调度算法类型
ipvs scheduler根据其调度时是否考虑各RS当前的负载状态被分为两种静态方法和动态方法 静态方法仅根据算法本身进行调度不考虑RS的负载情况 动态方法主要根据每RS当前的负载状态及调度算法进行调度Overheadvalue较小的RS将被调度
7.2.lvs静态调度算法
1、RRroundrobin 轮询 RS分别被调度当RS配置有差别时不推荐 2、WRRWeighted RR加权轮询根据RS的配置进行加权调度性能差的RS被调度的次数少 3、SHSource Hashing实现session sticky源IP地址hash将来自于同一个IP地址的请求始终发往 第一次挑中的RS从而实现会话绑定 4、DHDestination Hashing目标地址哈希第一次轮询调度至RS后续将发往同一个目标地址的请 求始终转发至第一次挑中的RS典型使用场景是正向代理缓存场景中的负载均衡如宽带运营商
7.3.lvs动态调度算法
主要根据RS当前的负载状态及调度算法进行调度Overheadvalue较小的RS会被调度 1、LCleast connections最少链接发 适用于长连接应用Overhead负载值activeconns活动链接数 x 256inactiveconns非活 动链接数 2、WLCWeighted LC权重最少链接 默认调度方法Overhead(activeconns x 256inactiveconns)/weight 3、SEDShortest Expection Delay, 初始连接高权重优先Overhead(activeconns1inactiveconns) x 256/weight 但是当node1的权重为1node2的权重为10经过运算前几次的调度都会被node2承接 4、NQNever Queue第一轮均匀分配后续SED 5、LBLCLocality-Based LC动态的DH算法使用场景根据负载状态实现正向代理 6、LBLCRLBLC with Replication带复制功能的LBLC解决LBLC负载不均衡问题从负载重的复制 到负载轻的RS
7.4在4.15版本内核以后新增调度算法
1.FO(Weighted Fai Over)调度算法常用作灰度发布 在此FO算法中遍历虚拟服务所关联的真实服务器链表找到还未过载(未设置IP_VS_DEST_F OVERLOAD标志)的且权重最高的真实服务器进行调度 当服务器承接大量链接我们可以对此服务器进行过载标记IP_VS_DEST_F OVERLOAD那么vs调度 器就不会把链接调度到有过载标记的主机中。
2.OVF(Overflow-connection)调度算法基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器直到其活动 连接数量超过权重值之后调度到下一个权重值最高的真实服务器,在此OVF算法中遍历虚拟服务相关 联的真实服务器链表找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条 件: 未过载(未设置IP_VS_DEST_F OVERLOAD标志) 真实服务器当前的活动连接数量小于其权重值 其权重值不为零