LVS负载均衡(简介、原理加实操)

初识LVS

LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。章文嵩博士目前工作于中国国家并行与分布式处理重点实验室,主要从事集群技术、操作系统、对象存储与数据库的研究。

用户从外部访问负载均衡服务器,请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台服务器 。

术语解释
Load balancer或director负载调度器
RS或Real Server真实服务器,提供服务的服务器
VIP虚拟IP地址,客户端访问集群的地址
RIP集群所提供应用程序的地址(HTTP,FTP)
DIP调度器的真实地址

LVS工作模式

​ LVS的工作模式分为NAT模式、DR模式、以及TUN模式。模式原理见负载均衡模型

LVS调度方法

静态方法

(1)rr : round robin :轮叫,轮询 
(2)wrr: weight round robin :加权轮询(以权重之间的比例实现在各主机之间进行调度)
(3)sh : source hashing : 源地址hash实现会话绑定sessionaffinity 
(4)dh : destination hashing : 目标地址hash 

动态方法

如何获取最小连接数?

LVS会“偷窥”RS的建立连接时的请求(三次握手中的两次),以及端口连接的请求(四次挥手中的两次)
LVS的偷窥行为也就解释了为什么LVS不会把三次握手时候syn包和ack包负载到不同的RS,因为LVS会做一个记录

(1)lc :leash-connection 最少连接 
(2)wlc :加权最少连接 
(3)sed :最少期望延迟  
(4)nq :never queue 永不排队
(5)LBLC :基于本地的最少连接 
(6)LBLCR :基于本地的带复制功能的最少连接

LVS隐藏VIP的方法

修改内核参数,arp_ignore修改为1,arp_announce修改为2,在lo虚拟网卡上配置VIP;

lo网卡代表本地地址,是内部通信用的,这样就做到了VIP对内可见,对外隐藏

/proc/sys/net/ipv4/conf/eth0/

arp_ignore: 定义接收到ARP请求时的响应级别;
 0:只要本地配置的有相应地址,就给予响应;
 1:仅在请求的目标(MAC)地址配置请求
    到达的接口上的时候,才给予响应;

arp_announce:定义将自己地址向外通告时的通告级别;
 0:将本地任何接口上的任何地址向外通告;
 1:试图仅向目标网络通告与其网络匹配的地址;
 2:仅向与本地接口上地址匹配的网络进行通告;

LVS负载均衡配置

LINUX的ipvs模块集成了LVS,但是只是系统调用
要想使用LVS,需要安装一个用户空间程序 ipvsadm

LVS:

# node01:	
ifconfig  eth0:8 192.168.150.100/24
	
# node02~node03:
## 1)修改内核:
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore 
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
## 2)设置隐藏的vip:	
ifconfig  lo:3  192.168.150.100  netmask 255.255.255.255

RS中的服务:

# node02~node03:
yum install httpd -y
service httpd start
vi  /var/www/html/index.html

from 192.168.150.1x

LVS服务配置

# node01:
yum install ipvsadm 
ipvsadm -A  -t  192.168.150.100:80  -s rr
ipvsadm -a  -t 192.168.150.100:80  -r  192.168.150.12 -g -w 1
ipvsadm -a  -t 192.168.150.100:80  -r  192.168.150.13 -g -w 1
ipvsadm -ln

# 验证:
## 浏览器访问  192.168.150.100   看到负载  疯狂F5
# node01:
netstat -natp   结论看不到socket连接

# node02~node03:
netstat -natp   结论看到很多的socket连接

# node01:
ipvsadm -lnc    查看偷窥记录本
TCP 00:57  FIN_WAIT    192.168.150.1:51587 192.168.150.100:80 192.168.150.12:80
FIN_WAIT: 连接过,偷窥了所有的包
SYN_RECV: 基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题
	
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值