LVS简介html
LVS:Linux Virtual Server,简译Linux虚拟服务器,一个虚拟的服务器集群系统,也能够说是负载调度器,是中国国内最先出现的自由软件项目之一。系统扩展的方式有两种:Scale UP(向上加强)和Scale Out(向外扩展)。简单的说向上加强就是升级硬件,i5不够买i7,硬件终究有瓶颈的,因此向外扩展的可行性比较大。向外扩展有多种方式,增长设备、调度分配,Cluster。nginx
什么是Cluster?算法
Cluster就是集群,为解决某个特定问题将多台计算机组合起来造成的单个系统。vim
Linux Cluster类型centos
LB:负载均衡bash
HA:高可用服务器
HPC:高性能网络
LB Cluster的实现负载均衡
通常来讲实现方式有软件实现和硬件实现。硬件的实现就是须要比较昂贵的设备,好比:F5,A10。LVS属于软件的实现负载均衡,除了lvs还有nginx,haproxy等等不少实现方式。这里咱们只着重介绍lvs。根据工做的协议层次不一样,又可分为传输层和应用层两种。lvs是工做在传输层上,不支持应用层,这也是它的不足之处。curl
LVS工做原理:
专门用来作lvs的咱们称之为VS(Virtual Server),后面接真正提供服务的RS(Real Server)。VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。
lvs集群的类型:
lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
lvs-dr:操纵封装新的MAC地址
lvs-tun:在原请求IP报文以外新加一个IP首部
lvs-fullnat:修改请求报文的源和目标IP
LVS/NAT的实现
前提:关闭防火墙、SELINUX,date时间一致
网络环境:
说明:客户端经过vs访问后面的http服务,实现nat的调度。
client配置
]#route add default gw 172.18.32.112 <===添加默认路由,指定为vs的VIP
RS1配置
]#yum install -y httpd ]#vim /var/www/html/index.html server RS1 ]#service httpd start <===启动http服务,centos7为ststemctl start httpd ]#route add default gw 192.168.32.112
RS2配置
]#yum install -y httpd ]#vim /var/www/html/index.html server RS2 ]#service httpd start ]#route add default gw 192.168.32.112
VS配置
]#yum install -y ipvsadm <===ipvsadm是lvs的管理工具,后面有介绍 ]#ipvsadm -A -t 172.18.32.112:80 -s rr <===添加地址和端口进行调度 -s 指定调度算法 ]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.9 -m <===添加须要调度的后台服务器 -m 表明natl类型 ]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.111 -m ]#echo 1 > /proc/sys/net/ipv4/ip_forward <===开启转发,临时生效 ]#vim /etc/sysctl.conf <===永久生效 net.ipv4.ip_forward=1 ]#ipvsadm -Ln <===查看列表 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.18.32.112:80 wrr -> 192.168.32.9:80 Masq 3 0 0 -> 192.168.32.111:80 Masq 1 0 0
测试
]#for i in {1..10};do curl 172.18.32.112;done server RS1 server RS2 server RS1 server RS2 server RS1 server RS2 server RS1 server RS2 server RS1 server RS2
也能够试试其余算法
]#ipvsadm -C ]#ipvsadm -A -t 172.18.32.112:80 -s wrr ]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.9 -m -w 3 ]#ipvsadm -a -t 172.18.32.112:80 -r 192.168.32.111 -m -w 1
测试
]#for i in {1..10};do curl 172.18.32.112;done server RS1 server RS2 server RS2 server RS2 server RS1 server RS2 server RS2 server RS2 server RS1 server RS2
写了这么多,是否是还对具体调度的实现不是很理解呢?根据上面的拓扑图给你们解释一下:当CLIENT访问我公司网站时,咱们把公网地址配置在VS上为VIP,同时也配置了链接内网的DIP。第一次地址从CIP-->VIP,VS根据算法进行替换VIP,这时候变成CIP-->RIP,RS收到进行响应的时候是RIP-->CIP,到达VS进行替换变成VIP-->CIP,这样CLIENT收到响应报文。由于响应报文也从VS回去,这就形成了VS负载比较大,因此RS不能太多,有局限性。后面咱们介绍另一种方式LVS/DR方式,会解决这个问题。