单节点LVS安装及配置
LVS相关术语
DS:Dispatcher Server 负载均衡服务器
RS:Real Server 后端真实的工作服务器
VIP:向外部直接面向用户的请求,作为用户请求的目标IP地址
DIP:Dispatcher Server IP,主要用于和内部主机通讯的IP地址
RIP:Real Server IP,后端服务器的IP地址
CIP:Client IP,访问客户端的IP地址
LVS基本工作原理
基于DR模型原理
通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口MAC,目标MAC是某个挑选出的RS的RIP所在的接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
1.当用户请求到达DS服务器,此时请求的数据报文会先到内核空间的PREROUTING链,此时报文的源IP为CIP,目标IP为VIP
2.PREROUTING检查发现数据包的目标IP是本机,将数据包发送至INPUT链
3.IPVS对比数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为RIP的MAC地址,然后将数据包发送至POSTROUTING链。此时的源IP和目的IP均为修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址的RIP的MAC地址
4.由于DS和RS在同一个网络中,所以通过第二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发送至Real Server
5.RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。此时的源IP地址为VIP,目标IP为CIP
缺点:RS和DS必须在同一局域网中
LVS搭建
网络拓扑图
整体环境
名称 | 操作系统 | IP | 路由 |
---|---|---|---|
调度器 DS | Centos7 | [DIP]eth0 : 192.168.71.100 [VIP]eth0:8 : 192.168.71.10 | |
RS01 | Centos7 | [RIP]eth0 : 192.168.71.101 [VIP]lo:8 : 192.168.71.10 | 默认网关:192.168.71.2 |
RS01 | Centos7 | [RIP]eth0 : 192.168.71.102 [VIP]lo:8 : 192.168.71.10 | 默认网关:192.168.71.2 |
详细配置
1.RS01~RS02:
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.71.10 netmask 255.255.255.255
3)部署http服务
yum install httpd -y
service httpd start
#分别在RS01和RS02中增加index.html
vim /var/www/html/index.html
from 192.168.71.101 / from 192.168.71.102
2.Dispatcher Server:
1)设置vip
ifconfig eth0:8 192.168.71.10/24
2)lvs服务配置
#linux已经自带了lvs,因此只需要安装lvs管理程序ipvaadm
yum install ipvsadm
ipvsadm -A -t 192.168.71.10:80 -s rr
ipvsadm -a -t 192.169.71.10:80 -r 192.168.71.101 -g -w 1
ipvsadm -a -t 192.169.71.10:80 -r 192.168.71.102 -g -w 1
ipvsadm -ln
-A 添加虚拟服务
-a 添加一个真是的主机到虚拟服务
-S 保存
-s 选择调度方法
-rr 轮训调度
-m 网络地址转换NAT
验证
1.浏览器访问 192.168.150.100 看到负载 疯狂F5
2.Dispatcher Server:
netstat -natp 结论看不到socket连接
3.RS01~RS02:
netstat -natp 结论看到很多的socket连接
4.Dispatcher Server:
ipvsadm -lnc 查看偷窥记录本
TCP 00:57 FIN_WAIT 192.168.150.1:51587 192.168.71.100:80 192.168.71.101:80
FIN_WAIT:连接过,偷窥了所有的包
c 查看偷窥记录本
TCP 00:57 FIN_WAIT 192.168.150.1:51587 192.168.71.100:80 192.168.71.101:80
FIN_WAIT:连接过,偷窥了所有的包
SYN_RECV:基本上lvs都记录了,证明lvs没事,一定是后边网络层出问题
参考:http://www.178linux.com/89580