LVS简介
LVS中文官方手册: http://www.linuxvirtualserver.org/zh/index.html 。这个手册对于了解lvs的背景知识很有帮助。
LVS英文官方手册: http://www.linuxvirtualserver.org/Documents.html 。这个手册比较全面,对于了解和学习lvs的原理、配置很有帮助。
LVS(Linux virtual server),即Linux虚拟服务器。是因为LVS自身是个负载均衡器(director),不直接处理请求,而是将请求转发至位于它后端真正的服务器realserver上,所以是虚拟服务器
LVS是四层(传输层tcp/udp)、七层(应用层)的负载均衡工具,只不过大众一般都使用它的四层负载均衡功能ipvs,而七层的内容分发负载工具ktcpvs(kernel tcp virtual server)不怎么完善,使用的人并不多。
ipvs是集成在内核中的框架,可以通过用户空间的程序 ipvsadm 工具来管理,该工具可以定义一些规则来管理内核中的ipvs。就像iptables和netfilter的关系一样。
LVS相关的几种IP:
VIP :virtual IP,LVS服务器上接收外网数据报文的网卡IP地址。
DIP :director,LVS服务器上发送数据报文到realserver的网卡IP地址。
RIP :realserver(常简称为RS)上的IP,即提供服务的服务器IP。
CIP :客户端的IP。
lvs的四种工作模式
DR > TUN(隧道) > NAT > FULLNAT
DR(直接路由模式): client ->VS -> RS ->client
NAT(地址转换模式): client ->VS -> RS
TUN(隧道模式): client -> VS ->RS ->client
#以上三种都没有抗攻击能力
FULLNAT: client ->VS -> RS
#支持多vlan,抗攻击,进行两次NAT,
五元组:地址,目标地址,端口,目标端口,协议
DR(直接路由模式): client ->VS -> RS ->client
VS/DR 的工作流程如上图所示:它的报文转发方法是将报文直接路由给目标服务器。在VS/DR
中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将
数据帧的MAC地址改为选出服务器的MAC地址,再将修改后 的数据帧在与服务器组的局域网上发送。
因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP
报文。当服务器发现 报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据
路由表将响应报文直接返回给客户。
在VS/DR中,根据缺省的TCP/IP协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯
定也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,
而不会知道是哪一台服务器处理的。VS/DR负载调度器跟VS/TUN一样只处于从客户到服务器的半连
接中,按照半连接的TCP有限状态机进行状态迁移。
详细知识点来源于官网:点击这里了解详更多细内容
环境配置
server1 | VS(Virtual Server) 调度器 |
---|---|
server2 | RS (Real Server) 真实后端服务器 |
server3 | RS (Real Server) 真实后端服务器 |
1.随机匹配MAC地址
在server1(调度器)上:
我们需要ipvsadm来编写策略,而一般的yum源里没有ipvsadm,所以我们需要扩充高可用yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel6.5]
name=rhel6.5
baseurl=http://172.25.78.254/rhel6.5
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.78.254/rhel6.5/LoadBalancer
enabled=1
[root@server1 ~]# yum repolist
[root@server1 ~]# yum install -y ipvsadm # 下载编写调度策略的软件
[root@server1 ~]# ipvsadm -l # 查看策略
[root@server1 ~]# ipvsadm -A -t 172.25.78.100:80 -s rr # 添加算法,-A表示添加一个虚拟服务,把数据进行分摊,rr表示轮询调度算法
[root@server1 ~]# ipvsadm -a -t 172.25.78.100:80 -r 172.25.78.2:80 -g # 添加虚拟ip,-a表示添加,-g表示采用直连模式即DR模式
[root@server1 ~]# ipvsadm -a -t 172.25.78.100:80 -r 172.25.78.3:80 -g
[root@server1 ~]# ipvsadm -l # 再次查看发现策略添加成功
[root@server1 ~]#