2168575 发表于 2019-1-5 11:43:15

LVS负载均衡详解

1LVS基本介绍
LVS(linuxvirtualserver)其实就是针对高可伸缩、高可用网络服务的需求,给出基于ip层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。所以,lvs需要内核有ipvs支持,linux-2.4.23以后ipvs都编译到内核里,如果你是之前版本确保你的内核支持ipvs后,只需安装ipvsadm就可以把一台服务器配置成负载调度器(LoadBalancer)。对外提供服务的IP,也就是我们访问的IP称做VIP。调度器LB的任务主要是分发请求,真正处理的是真实服务器(RealServer)。
1.1LVS的三种工作原理
网络地址传输模式工作原理
LB收到用户请求包后,LB将请求包中虚拟服务器的IP地址转换为某个选定RS的IP地址,转发给RS;RS将应答包发给LB,LB将应答包中RS的IP转为虚拟服务器的IP地址,回送给用户。
LVS-NAT模型特征
1、所有Realserver与LVS主机在同一个子网中
2、Realserver真实服务器ip地址为私有地址,仅用于集群节点之间使
3、客户端的请求,响应都要经过LVS主机
4、Realserver网关指向DIP
5、可以实现端口映射80
6、Realserver可以是任何操作系统
7、LVS主机可能成为系统瓶颈

直接路由模式工作原理
LB收到请求包后,将请求包中目标MAC地址转换为某个选定Realserver的MAC地址后将包转发出去,Realserver收到请求包后,可直接将应答内容传给用户。此时要求LB和所有RealServer都必须在一个物理段内,且LB与Realserver群共享一个虚拟IP。
LVS-DR模型特征
1、集群节点必须在一个物理网络上(mac)
2、Realserverip可以使用公网地址
3、LVS主机处理入站请求,
4、Realserver网关不指向LVS主机
5、不支持端口映射
6、大多数操作系统支持realserver
7、DR模式比NAT模式性能优越
IP隧道模式(IPTunneling)
LB收到用户请求包后,根据IP隧道协议封装该包,然后传给某个选定的RS;RS解出请求信息,直接将应答内容传给用户。此时要求RS和LB都要支持IP隧道协议。
LVS-TUN模型特征
集群节点可跨互联网
1、LVS主机和realserver不需要在一个网络中
2、Realserverip一定不是私有地址
3、LVS主机仅处理入站请求
4、Realserver网关不能指向LVS主机ip
5、不支持端口映射
6、仅有支持ip遂道功能操作系统才能用在Realserver
1.2LVS调度算法
静态调度4个
特点:不考虑后端realserver的连接状态,而动态的要考虑后端的链接数为标准
1.Round-robin(RR)轮询
既第一次访问A,第二次访问B,第三次再访问A…..循环下去
2.WeightedRound-RobinWRR加权轮询
加强论调:提高后台服务器的响应能力
根据后方服务器的响应能力,来定义权重,根据权重来转发请求,权重大的优先访问
3.DestinationhashingDH
目的:实现针对目标地址的请求做固定转发
4.SoucehashingSH
目的:将来自同一个用户的地址,始终转发到router或者firewall
动态调度6个
1.最少链接(LeastConnections)
2.加权最少链接(WeightedLeastConnections)WLC
3.linux默认的调度shortestexpecteddelaySED
4.永不排队算法neverqueueNQ
5.基于本地的最少链接(Locality-BasedLeastConnections:DH)LBLC
6.带复制的基于本地最少链接(Locality-BasedLeastConnectionswithReplication)LBLCR
1.3Ipvsadm命令详细介绍
1.定义集群服务
语法:
ipvsadm-A|-E-t|-uVIP:port-sscheduler-s后面指调度算法
ipvsadm-D-t|-uVIP:port
-A在虚拟服务器表中添加新的虚拟服务器记录
-E编辑内核虚拟服务器表中虚拟服务器记录。
-D删除虚拟服务器表中虚拟服务器记录。
-L查看
-t|-u代表tcp和udp服务
VIP指虚拟服务器ip地址,即LVS与internet通信的网卡地址
2.Realserver服务器的规则定义
ipvsadm-a|e-t|uVIP:port-rREALSERVER-g|-i|-m[-wweight]
ipvsadm-d-t|-uVIP:port-rREALSERVER
-a在虚拟服务器表的添加一条新的真实服务器
-e编辑虚拟服务器记录中真实服务器记录
-d删除虚拟服务器记录的真实服务器记录
-r提供服务响应的真实服务器
-g指LVS的工作模式为直接路由模式
-i指LVS的工作模式为隧道模式
-m指LVS的工作模式为NAT模式
-Z清空计数器
-n数字的方式来显示地址
2LVS-DR模式分析
LVS与互联网的虚拟serverip地址,简称为VIP
LVS与内部真实服务器通信的ip地址,简称为DIP
RealServer简称RS
准备工作:
一台客户机,一台LVS服务器,两台WEB服务器,配置好LVS服务器yum源。
LVS服务器与两台Realserver系统为Centos5.532位。
LVS:10.80.0.60
WEB1:10.80.0.61
WEB2:10.80.0.62
VIP:10.80.0.65

LVS-DR模式拓扑图
http://blog.运维网.com/e/u/themes/default/images/spacer.gif
3LVS实现过程
3.1LVS服务器配置
开启路由功能
#vim/etc/sysctl.conf
#ControlsIPpacketforwarding
net.ipv4.ip_forward=1
#sysctl–p#使路由功能生效
使用yum安装ipvsadm工具
#yuminstall-yipvsadm
填加一个VIP地址
ifconfigeth0:010.80.0.65netmask255.255.255.255
Ipvsadm配置
定义一个集群服务,-s指调度算法为rr
#ipvsadm-A-t10.80.0.65:80-srr
向集群服务添加WEB1-g为DR方式
#ipvsadm-a-t10.80.0.65:80-r10.80.0.61–g
向集群服务添加WEB2-g为DR方式
#ipvsadm-a-t10.80.0.65:80-r10.80.0.62–g
#serviceipvsadmsave#对规则进行保存
SavingIPVStableto/etc/sysconfig/ipvsadm:[确定]
#serviceipvsadmstart
#查看规则是否生效
#ipvsadm–l
IPVirtualServerversion1.2.1(size=4096)
ProtLocalAddress:PortSchedulerFlags
->RemoteAddress:PortForwardWeightActiveConnInActConn
TCP10.80.0.65:httprr
->10.80.0.61:httpRoute100
->10.80.0.62:httpRoute100
3.2RS服务器配置
  #处理LB转发的数据包目的地为VIP本机处理.不会在转到LB服务器
  ifconfiglo:010.80.0.65netmask255.255.255.255
  #使Realserver不响应ARP请求
  echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignore
  echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce
  echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore
  echo"2">/proc/sys/net/ipv4/conf/all/arp_announce
4实验验证
  为了验证方便,两台web1和web2服务器都安装了apache.并在var/www/html/目录下建立文件index.html.,web1服务器index.html内容WEB1,web2服务器index.html内容WEB2。通过LVS服务器的VIP地址进行访问http://10.80.0.65。如下图
http://blog.运维网.com/e/u/themes/default/images/spacer.gif

  http://blog.运维网.com/e/u/themes/default/images/spacer.gif
5总结
其实上方的方案并不全没有对RealServer服务器健康检测功能和LVS服务器的热备的功能,这次写这个案例主要是让大家对LVS这一款软件进行了解。



页: [1]
查看完整版本: LVS负载均衡详解