一. LVS概述

LVS是一种工作在四层协议上的负载均衡解决方案,在1998年5月由章文嵩博士创建。目前广泛使用的负载均衡模型主要有:

1)工作在四层协议(LVS):主要用于四层协议上的负载均衡,性能相较于工作在七层的协议更好。但是协议栈是工作在传输层,对于传输层以上的高级特性支持不足。

2)工作在七层协议(Nginx、HAproxy):主要解决七层协议上的负载均衡(Nginx也可以工作在四层,需要在编译的时候添加--with-streams参数),更加适合于HTTP服务、邮件服务等高层协议的服务。相较于四层协议负载均衡,牺牲了少量的性能,提供了更有针对性的服务。

二. LVS工作模式

2.1.两段式工作原理:

LVS工作原理和iptables的工作原理相似,他们都具有一个位于内核空间的框架(Netfilter、ipvs)+用户空间的管理工具(iptables、ipvsadm)。用户空间的管理工具提供了我们操作规则的入口,我们通过配置相关的规则到内核空间的框架中,使之生效来实现相对应的功能。

LVS模型涉及到的设备主要可以分成两类:一类是Director调度器(用来接收客户端的请求,并通过IPVS规则及算法转发到后端真正提供服务的设备),另一类是RealServer(即后端真正提供服务的设备)。LVS安装在Director调度器上,位于内核空间的ipvs监听在Netfilter中的input链上,并且在这里设定了一些规则,一旦发现访问的是集群服务,强制修改请求报文(从这里区分了NAT模式、DR模式、TUN模式),并立即送往prerouting链上。如果经判断不是访问集群服务的请求,还是根据网络层协议正常访问本机[根据IP+Port判断]。

2.2.注意:

1、因为LVS模型依赖了Netfilter内核框架,并且对处理访问集群服务的请求报文,强行做了修改,这会导致iptables功能失效。因此LVS和iptables不能共同使用。

2、2.4.23版本之前的内核没有内置ipvs代码,需要打补丁。在此版本后,可以直接使用LVS功能。

三. LVS常用工作模型

3.1.NAT模型

工作原理:

当监控到ClientIP访问集群服务,Director调度器会根据调度算法挑选一个后端RealServerIP,将数据报文送往postrouting链进行DNAT转换(目标地址转换)。当后端RealServer处理请求完毕后,响应报文再次经由Director回复Client,在Director的prerouting链进行SNAT(源地址转换)。

优点与不足:

优点是配置简单;缺点是因数据进出都要经过director,所有性能较差,一般带动10个RIP。

NAT模型注意事项:

1)集群节点与Director必须在同一个网络中。
2)RIP地址一般都是私有地址,而且仅用于与DIP通信。
3)Director位于Client和RealServer之间,负责进出的所有通信。
4)集群节点要使用DIP作为默认网关。
5)Director支持端口映射。
6)任何操作系统都可以作为RealServer。
7)Director容易成为集群性能的瓶颈。

3.2.DR模型

工作原理:

【Director调度阶段】Director在接收到Client的请求后(client访问的是Director的VIP),发现该请求是访问集群服务时,便修改请求报文的目标MAC地址并通过postrouting链转发该报文至RealServer。

【RealServer处理阶段】每个RealServer都具有VIP,配置在IP别名上,仅用于封装响应报文,不用于与Director通信。当RealServer收到该请求报文时,在数据链路协议发现MAC地址是自己的,解封装后发现自己也有配置在别名上的VIP,便接收该报文并处理。

【RealServer回复阶段】RealServer收到的这个请求报文,其源IP地址和目标IP地址均没有做修改。因此在回复报文时,RealServer根据网络层IP协议直接回复Client,不需要经过Director。

优点与不足:

优点是Director调度器仅需要处理请求报文,不用处理响应报文,工作效率大大提升,能够带动数百台的RealServer;缺点是配置相对于NAT模型要复杂。

DR模型注意事项:

1)各集群节点必须跟Director在同一个物理网络中,因为要根据MAC地址转发。
2)RIP可以不用私网地址。
3)Director仅处理入站请求,响应报文直接由RealServer回复给客户端。
4)RealServer一定不能将默认网关指向Director,要指向能访问互联网的路由设备。
5)Director无法实现端口映射,只改变了MAC地址,TCP/IP都没有发生改变。
6)大多数的操作系统都可以用在RealServer上,Server必须要支持隐藏IP。

拓展:禁止RealServer响应ARP方式

1)在路由设备上固定写上VIP的MAC地址。
2)arptables规则链上定义规则,不响应arp。
3)kernel parameter:有两个参数arp_ignore、arp_announce用于限定主机对arp广播的响应级别和通告级别。用户请求的VIP和进来的网络接口不是同一个,那就忽略这个arp报文。
arp_announce:
0:将本机任何接口的任何地址向外通报;1:尽可能向目标网络通报与其网络匹配的接口。2:仅向与本地接口匹配的网络进行通告。默认0。
arp_ignore:
0:表示回应任何本机配了的地址。1:表示只响应该IP地址且该IP配置同网络的接口上。默认0。

3.3.TUN模型

工作原理:

Director当接收到Client的请求报文并发现访问的是集群服务时,调度器会在原有的IP请求报文外部,再次封装一层IP报文并发送至外网(在原有的IP报文再次封装一层IP报文即为隧道技术),最终转发至不同网络域的RealServer。

优点及缺点:

优点是能够解决异地灾备的需求;缺点是Director和RealServer设备要支持隧道技术,配置复杂;

TUN模型注意事项:

1)RealServer可以跨越互联网。
2)RealServer的RIP必须是公网地址。
3)Director只处理入站请求,响应报文有RealServer发往客户端。
4)只有支持隧道协议的OS才能用于RealServer。
5)不支持端口映射。

四. LVS配置详情(Centos7)

4.1.NAT模型配置

网络规划

NAT模式
  VIP:
    192.168.100.150 outer
  DIP:

    172.16.100.10 inner

  rip1:
    172.16.100.11 inner
  rip2:
    172.16.100.12 inner

RealServer配置

 # 安装nginx并配置
yum install nginx -y

Director配置

 # 安装ipvsadm工具
yum install ipvsadm -y
# 关闭ICMP重定向
echo > /proc/sys/net/ipv4/ip_forward
echo > /proc/sys/net/ipv4/conf/all/send_redirects
echo > /proc/sys/net/ipv4/conf/defaults/send_redirects
echo > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo > /proc/sys/net/ipv4/conf/eth1/send_redirects
# director设置ipvsadm
ipvsadm -A -t 192.168.100.150: -s rr
ipvsadm -a -t 192.168.100.150: -r 172.16.100.11: -m
ipvsadm -a -t 192.168.100.150: -r 172.16.100.12: -m

4.2.DR模式配置

网络规划

Director:
  vip:192.168.100.150
  dip:192.168.100.155
rip1:
  lo:0 192.168.100.150(vip)
  rip 192.168.100.151
rip2
  lo:0 192.168.100.150(vip)
  rip 192.168.100.152

RealServer配置

# 配置内核参数,禁止响应ARP报文
echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
# 配置别名VIP
ifconfig lo: 192.168.100.150 broadcast 192.168.100.150 netmask 255.255.255.255 up
# 添加默认路由指向Director前的网关,由于实验环境使用NAT模式,已经配好了指向默认网关,这里就不再配置了

Director配置

# 安装Nginx并配置
yum install nginx -y
# 配置端口转发功能
echo > /proc/sys/net/ipv4/ip_forward
# 配置VIP
ifconfig ens33: 192.168.100.150 broadcast 192.168.100.150 netmask 255.255.255.255 up
# 添加至RealServer的路由
route add -host 192.168.100.150 dev ens33:
# 配置ipvs
ipvsadm -A -t 192.168.100.155: -s rr
ipvsadm -a -t 192.168.100.155: -r 192.168.100.151: -g
ipvsadm -a -t 192.168.100.155: -r 192.168.100.152: -g

LVS介绍及相关配置的更多相关文章

  1. 云计算基础 (redhat7介绍及相关配置)

    redhat7简介 新版本的rhel7不再对32位架构的支持 引导程序: GRUB2,比之前的GRUB更强大,GRUB2支持bios,efi和openfiremware GRUB2支持mbr分区表和g ...

  2. 网卡配置和DNS配置,手动挂在nas存储的共享目录,网络相关其它操作命令,修改防火墙中的端口配置,resolv.conf配置详细介绍和网卡信息配置详细介绍

    1.   网卡配置和DNS配置 若想服务器能够发邮件,需要让部署的服务器能够访问到外网环境.若部署的服务器访问不到外网,通过ping www.baidu.com的方式执行的时候,会出现以下问题: &q ...

  3. [刘阳Java]_Spring相关配置介绍_第5讲

    这一节我们介绍一下Spring框架的相关常用配置 Spring依赖注入的两种方式(构造方法注入和setter方式注入) p-namespace方式配置 properties属性文件配置方式 集合对象配 ...

  4. 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建

    7月4日任务 18.6 负载均衡集群介绍18.7 LVS介绍18.8 LVS调度算法18.9/18.10 LVS NAT模式搭建 扩展lvs 三种模式详解 http://www.it165.net/a ...

  5. ios开发之Info.plist文件相关配置

    前言:在iOS开发中有些情况下需要对Info.plist文件进行配置,以下介绍几种相关配置.以后遇到需要配置的再更新... 开发环境:swift3.0.1,Xcode8.1 一,项目中需要使用第三方字 ...

  6. SharePoint 2013 托管导航及相关配置 <二>

    本文的思路是使用JQuery重写SharePoint自带托管导航的样式,其实思路和脚本都非常简单,引用一下JQuery脚本,然后重写导航的样式,把脚本放到母版页中,即可.当然,使用JQuery可以做很 ...

  7. Linux系统下ssh的相关配置详细解析

    Linux系统下ssh的相关配置进行了详细的分析介绍. ssh是大家常用的登录linux服务器的方式,但是为了安全考虑,有时候我们需要针对ssh做一些特殊处理,本文记录笔者曾经做过的一些修改,供大家参 ...

  8. wxWidgets的安装编译、相关配置、问题分析处理

    wxWidgets的安装编译.相关配置.问题分析处理 一.介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张) wxWidgets是一个开源的跨平台的C++构架库(framewo ...

  9. LVS的DR模型配置

    LVS的DR模型配置 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 IP地址 角色 Srv ...

随机推荐

  1. (九)会话跟踪技术之Cookie

    --部分摘自孤傲苍狼博客~ 一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再 ...

  2. UIFontDownLoad ----动态下载系统提供的字体

    程序运行结果如下 : 当点击对应单元格实现下载对应的字体. 控制台打印结果如下 : 2015-10-05 11:14:04.132 UIFontDownLoad[12721:86827] state ...

  3. 【ARTS】01_39_左耳听风-201900805~20190811

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  4. F2812 DSP程序运行在片内RAM和FLASH的区别

    F2812 DSP程序运行在片内RAM和片内FLASH的区别 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:F2812是带有内部Flash的DSP,与 ...

  5. Django_03_模板的使用

    {{ }} 变量 list类型用 'lst.索引',且不支持倒序索引,即不能识别lst.-1 dic类型用 'dic.key',去取对应的value,不支持{} 对于实例对象,通常自己重写__str_ ...

  6. 使用自定义Comparator对TreeSet中的数据进行多条件排序

    代码记录(需求:根据店铺等级和店铺到某个点的距离进行排序,其中店铺等级由高到低,距离由近及远) 需要排序的对象Store,Store.java package com.zhipengs.work.te ...

  7. Nuget下载 MySql.Data 连接MySql数据库

    打开VS项目,右键项目选择 右上角搜索框中搜索 MySql.Data 然后可以选择安装,但是可能会出现这个提示 这是因为版本的问题,所以,自己去官网重新下载,我这里选择的是这个版本, 官网地址: ht ...

  8. input文本框禁用历史选择

    这里常用的场景是日期控件使用时,下面这个就很难看了 在input中添加autocomplete="off"就可以了 <input type="text" ...

  9. python学习-39 生成器总结

    总结 1.语法上和函数类似:生成器函数和常规函数几乎是一样的.它们都是使用def语句进行定义,差别在于,生成器使用yield语句返回一个值,常规函数使用return语句返回一个值. 2.自动实现迭代器 ...

  10. python学习-22 字符串格式化

    格式化包括:百分号方式和format方式 1.百分号 - %s   (%.4s   表示截取了4个字符) 传单个值: 例如: print('i am %s sex boy is ljj'%123) 运 ...