学习自动化运维的第九天(LVS四层负载均衡)

lvs 与负载均衡关系: 通过lvs实现负载均衡

一、负载均衡技术

① 负载均衡(Load Balance):负载均衡集群为企业需求提供了可解决容量问题的有效方案。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理。

② 负载通常包括应用程序处理负载和网络流量负载,每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。
+++++++++++++++++++
负载均衡技术类型:基于 4 层负载均衡技术和基于 7 层负载均衡技术

负载均衡实现方式:硬件负载均衡设备或者软件负载均衡

硬件负载均衡产品:F5 、深信服 、Radware

软件负载均衡产品: LVS(Linux Virtual Server)(四层)、 Haproxy、Nginx(七层)、Ats(apache traffic server)
++++++++++++++++++

1.1四层负载均衡(代表 – lvs)

lvs: 配置简单,传输速度快,模式多
所谓四层负载均衡,也就是在负载均衡服务器收到用户的数据包后,解封装时,解到第四层(传输层)时,修改报文的目标ip地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器,所以说它用户和负载均衡服务器不建立三次握手,因为负载均衡服务器收到包后,只拆到第四层,就修改了IP和端口,发给了真实后台服务器,让它们建立了三次握手。

  1. 在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。

  2. 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,解封装时并对请求报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

  3. 对应的负载均衡器要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。

  4. 实现四层负载均衡的有:

  • F5:硬件负载均衡器,功能很好,但是成本很高。
  • lvs:重量级的四层负载均衡软件
  • haproxy:模拟四层转发,较灵活

1.2七层负载均衡(代表 – nginx)

nginx: 功能多 ,简介方便
所谓七层负载均衡,也称为“内容交换”,在负载均衡服务器收到用户的数据包后,解封装时,解到第七层(应用层)时,直接修改了内容,**所以负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接,因为负载均衡器收到包后,拆到第四层时就需要建立tcp,三次握手,一直到第七层,完了修改完内容后再封装发给后台服务器,让它们再次建立tcp三次握手。**再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

  1. 在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据IP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

  2. 负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。

  3. 对应的负载均衡器除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI等信息,实现七层负载均衡。此种负载均衡器能理解应用协议。

  4. 实现七层负载均衡的软件有:

    • haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
    • nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
    • apache:功能较差
    • Mysql proxy:功能尚可。

1.3两者区别

在这里插入图片描述
总结:从上面的对比看来四层负载与七层负载最大的区别就是效率与功能的区别。

  • 四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高。
  • 而七层负载均衡的优势则体现在功能多,控制灵活强大。
    所以使用七层负载或者四层负载还得根据具体的情况综合考虑。

二、LVS(linux虚拟服务器)

2.1介绍

LVS 是Linux Virtual Server的简称,也就是 Linux 虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,因此性能较高。
LVS软件作用:通过LVS提供的负载均衡技术实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
1、优势

高并发连接:LVS基于内核工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。

**稳定性强:**是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。

**成本低廉:**硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。

**配置简单:**LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。

**支持多种算法:**支持多种论调算法,可根据业务场景灵活调配进行使用

**支持多种工作模型:**可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

**应用范围广:**因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等

2、不足

工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。
3、LVS 核心组件和专业术语

一、核心组件

LVS的管理工具和内核模块 ipvsadm/ipvs

ipvsadm:用户空间的命令行工具,用于管理集群服务及集群服务上的RS等;

ipvs:工作于内核上的程序,可根据用户定义的集群实现请求转发;

二、专业术语

VS:Virtual Server #虚拟服务

Director, Balancer #负载均衡器、分发器

RS:Real Server #后端请求处理服务器

CIP: Client IP #用户端IP

VIP:Director Virtual IP #负载均衡器虚拟IP

DIP:Director IP #负载均衡器真实IP

RIP:Real Server IP #后端请求处理服务器IP

2.2四种工作模式

  • LVS/NAT:网络地址转换模式,进站/出站的数据流量经过分发器(IP负载均衡,他修改的是IP地址) --利用三层功能
  • LVS/DR :直接路由模式,只有进站的数据流量经过分发器(数据链路层负载均衡,因为他修改的是目的mac地址)–利用二层功能mac地址
  • LVS/TUN: 隧道模式,只有进站的数据流量经过分发器
  • LVS/full-nat:双向转换:通过请求报文的源地址为DIP,目标为RIP来实现转发:对于响应报文而言,修改源地址为VIP,目标地址为CIP来实现转发
    区别:
    lvs-nat与lvs-fullnat:请求和响应报文都要经过负载均衡服务器Director。
    lvs-dr与lvs-tun:请求报文要经过负载均衡服务器Director,但响应报文由后台真实服务器RS直接发往客户。

三、LVS四层负载均衡 DR模式

3.1简述

原理:负载均衡器和RS都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有RS对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的RS,把目的MAC地址改为RS的MAC(因为IP一致)并将请求分发给这台RS。这时RS收到这个数据包,处理完成之后,由于IP一致,可以直接将数据返给客户,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。
优点:和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与真实后台服务的网卡在一个物理段上。
在这里插入图片描述

3.2实战

3.2.1负载均衡的机器

1.域名解析(无所谓)
三台机器都做
在这里插入图片描述
2.设置虚拟ip (vip)
ip addr add dev ens33 虚拟IP,可自己定,但是一定要在当前所在的 /32
在这里插入图片描述
3.安装ipvsadm
yum -y install ipvsadm
创建启动文件,要不启动会报错:
在这里插入图片描述
启动ipvsadm:
在这里插入图片描述
4.定义分发策略:
首先清除内核虚拟服务器中的所有记录:
ipvsadm -C
在这里插入图片描述
++++
在这里插入图片描述
++++
在这里插入图片描述
要给所有后台的真实的服务器都分发,这里有两台,所以要做两次。
++++
保存:
在这里插入图片描述
++++
查看一下分发的策略:
在这里插入图片描述

3.3.2后台真实的网站服务器

1.在lo接口上绑定虚拟IP (VIP)
在接收到真实服务器里的分发的虚拟IP后,需要绑定虚拟IP到lo的回环接口:
ip addr add dev lo 虚拟IP/32
在这里插入图片描述

2.忽略arp广播,只接受负载均衡机器的连接:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
在这里插入图片描述
3.匹配精确ip地址回包
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
在这里插入图片描述
这就配置完成了
接下做测试:
1.两台真实服务器安装nginx
2.在浏览器测试
real-server1:
在这里插入图片描述
同样,real-server2的默认页面也是
+++++
页面搜索:
在这里插入图片描述

在这里插入图片描述
这就是lvs负载均衡的DR模式

四、LVS四层负载均衡 NAT模式

4.1简述

原理:就是把客户端发来的数据包的IP头的目的地址,在负载均衡器上换成其中一台RS的IP地址,转发至此RS来处理,RS处理完成后把数据交给经过负载均衡器,负载均衡器再把数据包的源IP地址改为自己的IP,将目的地址改为客户端IP地址即可。期间,无论是进来的流量,还是出去的流量,都必须经过负载均衡器。
优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。
缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!
在这里插入图片描述

4.2实战

4.2.1负载均衡的机器

modprobe ip_vs #动态加载ip_vs 模块,这个命令只是临时生效,需要添加到开机启动项目里面:
echo “modprobe ip_vs” >> /etc/rc.local
chmod +x /etc/rc.local 切记添加执行权限
1.做域名解析
cat /etc/hosts
在这里插入图片描述
2.给自己设置虚拟IP ,(VIP)
首先给虚拟机添加一个网卡,设置为桥接模式,那么就会有一个新的IP,这个IP就作为虚拟IP
在这里插入图片描述
3.设置路由
设置开启路由转发:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
在这里插入图片描述
开启转发功能
sysctl -p
在这里插入图片描述
4.安装ipvsadm
yum install -y ipvsadm
生成启动保存文件,要不然启动会报错:
ipvsadm --save > /etc/sysconfig/ipvsadm
启动ipvsdam:
service ipvsadm start
在这里插入图片描述
5.生成分发策略
添加虚拟IP:
ipvsadm -A -t 虚拟IP:端口号 -s rr
在这里插入图片描述
给后台服务器增加虚拟地址
ipvsadm -a -t 虚拟地址 -r 真实后台服务器地址 -m
在这里插入图片描述
补:-m 加在后面 ,-m 的意思是net模式!!!
给所有的后台服务器设置
++++
设置完后保存策略:
ipvsadm -S > /etc/sysconfig/ipvsadm
完了查看一下设置的策略:
ipvsadm -ln
在这里插入图片描述

4.2.2后台真实的网站服务器

1.只需要把默认网关指向负载均衡服务器的真实IP
route add default gw 真实的负载均衡服务器IP dev ens33
可以通过 ip r 查看
注意:网关在一段时间后会失效,需要重新设置!!!
2.安装网站服务器
nginx即可
+++++
接下来测试一下
我们先在服务器上的nginx服务的默认页面里写入服务器名称
real-server1:
在这里插入图片描述
同样,real-server2的默认页面也是
+++++
页面搜索:
在这里插入图片描述

在这里插入图片描述
这就是lvs四层负载均衡的NET模式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值