随着互联网进入寻常百姓家,网络流量愈来愈大,大规模的网路访问如果都使用一个服务器提供服务,那么网络通讯注定会拥堵不堪。为了解决这些问题,达到使网络流量均衡地分散到各个服务器上的目的,一些技术大牛发明了LVS负载均衡技术。
LVS简介
LVS(Linux Virtual Server)即为Linux虚拟服务器,使由章文嵩博士主导开发的,这也是我们中国人对开源界的一大贡献,目前LVS已经被收录在了内核中,小伙伴们在使用较新版Linux系统时默认会附加这个功能。
什么是负载均衡呢?简单来说就是通过技术手段,将前端访问数据流通过调度算法分派给后端服务器的过程。按照实现技术手段不同,可以分为NAT DR TUNE和FULLNAT四种类型。
基于NAT 的LVS
此种类型的负载均衡与iptables的源地址转发较类似,主要区别在于:负载均衡在PREROUTING链上没有规则,接收到的报文会发送给本机的INPUT链,然后通过内核调度直接把报文按照设定的规则通过POSTROUTING链发送给网络服务器。
基于DR的LVS
此种类型的负载均衡在LVS服务器接收到客户端的报文后会修改报文的目标MAC地址,然后将其重新发送给交换机,交换机接收到之后再按照新的目标MAC地址将报文发送给网络服务器,网络服务器的内部回环设置与LVS相同的IP地址,并通过技术手段禁止此地址在局域网广播,在响应客户端请求时会使用此IP地址,达到伪装LVS 地址的作用。
由于此种类型的响应报文不经过LVS服务器的转发,其效率最好,但配置方法最复杂。
基于TUNE的LVS
此种类型的负载均衡的LVS服务器在接收报文时会在收到IP段首部添加目标网络服务器的IP首部,并发送发给远程网络服务器,当网络服务器接收到这些报文时会拆分数据报,并使用与LVS相同的IP地址将响应报文发送给客户端。
基于FULLNAT的LVS
此种类型的负载均衡的LVS服务器与NAT类似,只不过在接收报文时会将报文中的源和目的地址都进行修改,这样即使局域网中有多个路由器,也可以把响应报文准确传给LVS服务器。
LVS调度算法
上述四种模式都包含了以下几种调度算法:
轮询调度
加权轮询调度
最小连接调度
加权最小连接调度
基于局部性最少连接调度
目标地址散列调度
源地址散列调度
下面以NAT模式为例,介绍下LVS安装使用流程
yum安装ipvsadm
yum install –y ipvsadm
ipvsadm 选项 服务器地址 –s 算法
ipvsadm 选项 服务器地址 –r 真实服务器地址[工作模式][权重]
ipvsadm常用参数:
-A 添加一个虚拟服务器
-E 编辑一个虚拟服务器
-D 删除一个虚拟服务器
-C 清空虚拟服务器列表
-R 从标准输入中还原规则
-S 保存规则
-a 向虚拟服务器中添加一个真实服务器
-e 修改一个真实服务器
-d 删除一个真实服务器
-L 显示虚拟服务器列表
-t 使用tcp
-u 使用udp
-s 指定LVS的调度算法
-r 设置真实服务器IP地址和端口信息
-g 设置LVS工作模式为DR
-I 设置LVS工作模式为TUN
-m设置LVS工作模式为NAT
-w 设置指定服务器权重
-c 连接状态
-n 数字格式输出
例:以NAT模式添加LVS
ipvsadm –A –t 172.18.55.62:80 –s rr ipvsadm –a –t 172.18.55.62:80 –r 192.168.0.1:80 –m ipvsadm –a –t 172.18.55.62:80 –r 192.168.0.2:80 –m
ipvsadm –Ln #查看LVS规则 ipvsadm –Lnc #查看调度状态
例:备份和加载LVS配置
ipvsadm –S > /etc/lvs.bak ipvsadm –R < /etc/lvs.bak
原创文章,作者:realmaster,如若转载,请注明出处:http://www.178linux.com/75149