设为首页 收藏本站
查看: 1410|回复: 0

[经验分享] LVS初步

[复制链接]

尚未签到

发表于 2015-11-21 07:31:30 | 显示全部楼层 |阅读模式
  LVS初步
  一见
目录
  目录 1
  1. 前言 2
  2. 思考 2
  3. 名词解释 2
  4. OSI参考模型 3
  5. LVS架构 4
  5.1. 负载均衡器(Load Balancer 4
  5.2. 服务器集群(Server Cluster 4
  5.3. 后端存储(Storage 5
  6. 区别 5
  6.1. 包层次关系 5
  6.2. IP包头结构 6
  6.3. TCP包头结构 6
  6.4. LVS/DR 7
  6.5. LVS/NAT 7
  6.6. LVS/TUN 8
  7. 配置 8
  7.1. LVS/DR配置 8
  7.1.1. 配置Director 8
  7.1.2. 配置RS 9
  7.2. LVS/NAT配置 10
  7.2.1. 配置Director 10
  7.2.2. 配置RS 10
  7.3. LVS/TUN配置 10
  7.3.1. 配置Director 10
  7.3.2. 配置RS 11
  8. ipvsadm 11
  
1.
前言

  很多人知道LVS,但可能知之不多,希望阅读本文后,能够对LVS有一个基本的感性认识
  LVS是国内最早出现的自由软件之一,由国防科技大学章文嵩博士在19985月创立,章博士目前是淘宝网高级研究员,是淘宝网核心系统负责人。
  LVS首要的是解决路由问题,结果不但解决了耦合问题,实现了网络隔离,而且顺带实现了负载均衡,负载均衡复杂的地方在于不同的均衡策略。常常均衡和路由成对出现,象分布式中的一致性哈希,也是路由和均衡,实际上还达到了容灾的效果,可以说是一举多得。
2. 思考
  一个数据包,是如何从一个机器达到另一个机器的?两个机器可以连接在同一个交换机上;也可以挂在不同的交换机上;甚至可能一个在内网,另一个在外网。
  抓包工具tcpdumpWiresharkSniffer等是如何工作的?Linux内核中的Netfilter原理是什么?最好可以,动手写一个基于RAW SOCKET的抓包工具,按IPTCP/UDP格式解析,并以可视化方式展现出来,甚至可以进一步解析诸于HTTP之类的。
3. 名词解释
  下表中,蓝色字体部分是最基础的名词,其它可最后反过来再细读:
  缩写
  全称
  说明
  LVS
  Linux Virtual Server
  Linux虚拟服务器,它有三种工作模式:NATDRTUN
  IPVS
  IP Virtual Server
  运行在LVS下的,提供负载均衡的一种技术
  NAT
  Network Address Translation
  网络地址转换,也可叫IP地址转换
  DR
  Direct Routing
  直接路由,也可叫MAC地址转换
  TUN
  Tunneling
  隧道
  LD
  LVS Director
  
  LB
  Load Balancer
  负载均衡器
  
  IP Tunneling
  IP隧道
  VS
  Virtual Server
  虚拟服务器
  RS
  Real Server
  真实服务器
  VIP
  Virtual IP
  虚拟IP
  VPN
  Virtual Private Network
  虚拟专用网络,也叫虚拟私有网络,利用加密技术在公网上封装出一个数据通讯隧道
  LAN
  Local Area Network
  本地局域网
  WAN
  Wide Area Network
  广域网
  
  Switch
  交换机
  AS
  Autonomous System
  自治系统,处于一个管理机构控制下的路由器和网络群组,有权自主决定在本系统中采用何种路由协议
  BGP
  Border Gateway Protocol
  边界网关协议,用于AS间的动态路由协议,是一种外部网关协议
  IGP
  Interior Gateway Protocol
  内部网关协议
  EGP
  Exterior Gateway Protocl
  外部网关协议,在AS的相邻两个网关主机间交换路由信息的协议,是一个轮询协议
  GGP
  Gateway to Gateway Protocol
  网关到网关协议
  LSA
  Link State
  链路状态,OSPF接口上的描述信息,例如IP地址、子网掩码、网络类型等
  OSPF
  Open Shortest Path First
  开放式最短路径优先,是一种IGP,用于在单一AS内决策路由,运作于AS内部,是链路状态协议。OSPF路由器间交换的不是路由表,而是LSA
  RIP
  Routing Information Protocol
  路由信息协议,使用最广泛的IGP,但正在被OSPF等所取代
  ARP
  Address Resolution Protocol
  地址解析协议,根据IPMAC的协议
  RARP
  Reverse Address Resolution Protocol
  反向地址解析协议,根据MACIP的协议
  OSI
  Open System Interconnection
  一个开放性的通行系统互连参考模型,是一个协议规范
4. OSI参考模型
DSC0000.jpg
5. LVS架构
DSC0001.jpg
5.1. 负载均衡器(Load Balancer
  它是整个集群对外面的前端机,负责将Client的请求发送到一组服务器上执行,而Client认为服务是来自一个IP地址上的。它可以是用IP负载均衡技术的负载均衡器,也可以是基于内容请求分发的负载均衡器,还可以是两者的结合。
5.2. 服务器集群(Server Cluster
  是一组真正执行Client请求的服务器,执行的服务有WEBMAILFTPDNS等。
5.3. 后端存储(Storage
  它为服务器集群提供一个共享的存储区,这样很容易使得服务器集群拥有相同的内容,以便提供相同的服务。
6. 区别
  
  特点
  适用网络
  LVS/DR
  修改MACRS将响应返回给Client
  LAN,同一物理网段
  LVS/NAT
  修改IPRSIPLD将顺应返回给Client
  私有网络
  LVS/TUN
  不修改IP,但包装一个新的IP头,RS将响应返回给Client
  LANWAN
  
  DR特点导致它不能跨LAN,这个比较容易理解。
  在IP处理上,NAT是修改,而TUN是新增,后者可跨LAN,为何NAT不行?要理解这一点,只需要知道响应是怎么回去的就明白了。
6.1. 包层次关系
DSC0002.jpg
6.2. IP包头结构
DSC0003.jpg
6.3. TCP包头结构
DSC0004.jpg
6.4. LVS/DR
DSC0005.jpg
6.5. LVS/NAT
  从下图,可以看出NAT模式只需要一个公网IP
DSC0006.jpg
6.6. LVS/TUN
DSC0007.jpg
7. 配置
7.1. LVS/DR配置
7.1.1. 配置Director
  在Diector机器上完成下列所有操作:
  1) 为Director配置VIP,此IP用于对外提供服务:
  #ifconfig eth0:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
  
  上述操作,在eth0上绑定了一个虚拟设备eth0:0,同时设置VIP192.168.1.100
  2) 指定eth0:0的路由:
  #route add -host 192.168.1.100 dev eth0:0
  3) 开启包转发,让Director充当路由器角色:
  #echo 1 > /proc/sys/net/ipv4/ip_forward
  
  注意,对于DR,开启包转发不是必须的,但对于NAT是必须的。
  4) 接下来,配置ipvs,执行以下操作:
  ① #ipvsadm -C
  ② #ipvsadm -A -t 192.168.1.100:80 -s rr -p 600
  ③ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -g
  ④ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30:80 -g
  
  上面,第一行是清除内核中的虚拟服务器列表中的所有记录;第二行是添加一条新的VIP记录,这个新的VIP192.168.1.100,同时指定它的持续服务时间为600秒;第三和第四行,是在VIP记录中添加两条RS记录,并且指定LVS的工作模式为DR
  5) 至此,配置完成,即可启动LVS服务:
  #ipvsadm
7.1.2. 配置RS
  在DRTUN两种工作模式下,请求达到RS后,响应直接返回给Client,而不经过Director。因此,需要在每个RS上配置VIP,这个VIPDirector上的相同,这样数据才能直接返回给Client
  
  在所有RS机器上分别完成下列所有操作:
  1) 配置VIP
  #ifconfig lo:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
  2) 指定lo:0的路由:
  #route add -host 192.168.1.100 dev lo:0
  3) 禁止本机的ARP请求:
  ① echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  ② echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  ③ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  ④ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  
  Ø arp_ignore
  定义响应ARP请求的策略:
  值
  作用
  0
  默认值,响应任何对本地IPARP请求
  1
  只响应目标IP是访问本机IPARP请求
  2
  只响应目标IP是访问本机IPARP请求,且源IP和本地IP须在同一子网
  3
  不响应ARP请求
  4-7
  保留未使用
  8
  不响应所有的ARP请求
  Ø arp_announce
  定义响应ARP请求的限制:
  值
  作用
  0
  无论哪块网卡收到ARP请求,只要是本机的MAC,都作出响应
  1
  尽量避免响应MAC不是本网卡的ARP请求
  2
  使用最合适的网卡来响应ARP请求
  
  4) 为使禁止ARP请求生效,执行:
  #sysctl -p
  
  由于VIPDirector和所有RS共享的,如果不禁止,产生ARP请求时,会导致Director和所有RS都应答,从而产生冲突,因此需要禁止RS响应ARP请求。
7.2. LVS/NAT配置
7.2.1. 配置Director
  在Diector机器上完成下列所有操作:
  1) #ifconfig eth0:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
  2) #echo 1 > /proc/sys/net/ipv4/ip_forward
  3) 接下来,配置ipvs,执行以下操作:
  ① #ipvsadm -C
  ② #ipvsadm -A -t 192.168.1.100:80 -s rr
  ③ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -m
  ④ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30:80 -m
  4) 至此,配置完成,即可启动LVS服务:
  #ipvsadm
7.2.2. 配置RS
  在所有RS机器上分别完成下列所有操作:
  1) 配置默认网关为Director,以保证数据可从Director返回:
  #route add default gw 192.168.1.100
7.3. LVS/TUN配置
7.3.1. 配置Director
  在Diector机器上完成下列所有操作:
  1) 设置tunl0(隧道网卡)的IPVIP
  #ifconfig tunl0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
  2) 指定tunl0的路由:
  #route add -host 192.168.1.100 dev tunl0
  3) 接下来,配置ipvs,执行以下操作:
  ① #ipvsadm -C
  ② #ipvsadm -A -t 192.168.1.100:80 -s rr
  ③ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.20:80 -i
  ④ #ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.30:80 -i
  4) 至此,配置完成,即可启动LVS服务:
  #ipvsadm
7.3.2. 配置RS
  在所有RS机器上分别完成下列所有操作:
  1) #ifconfig tunl0 192.168.1.100 netmask 255.255.255.255 up
  2) route add -host 192.168.1.100 dev tunl0
  3) 禁止本机的ARP请求:
  ① echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
  ② echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
  ③ echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  ④ echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  4) 为使禁止ARP请求生效,执行:
  #sysctl -p
8. ipvsadm
  参数
  解释
  -A
  --add-service,往内核VS表添加一个VS
  -a
  --add-server,在内核VS表中添加一个RS
  -t
  --tcp-service,表示VS提供的是TCP服务
  -m
  --masquerading,指定LVS的工作模式为NAT
  -i
  --ipip,指定LVS的工作模式为TUN
  -g
  --gatewaying,指定LVS的工作模式为DR
  -r
  --real-server,指定RS的地址和端口
  -p
  --persistent [timeout],来自同一个Client的多次请求,转发给同一台RStimeout默认为300
  -s
  --scheduler,指定调度策略,有以下几个选项:
  1) rr,轮询方式(Round-Robin
  2) wrr,加权轮询方式(Weighted Round-Robin),按顺序许循环分派请求给RS,但给能力的RS分派更多
  3) lc,最小连接(Least-Connection
  4) wlc,加权最小连接(Weighted Least-Connection
  5) lblc,基于局部性的最少链接(Locality-Based Least-Connection
  6) lblcr,带复制的基于局部性最少链接(Locality-Based Least-Connection with Replication),某页面缓存在服务器A上,被访问次数极高,而其它服务器负载较低,监视是否访问同一页面,如果是则把请求转发给其它服务器
  7) dh,目标地址散列(Destination Hash),对目标IP进行hash,将同一目标IP的请求转发给相同的RS
  8) sh,源地址散列(Source Hash),与dh刚好相反,基于源IP
  9) sed,最短预期延时(Shortest Expected Delay
  10) nq,不排队(Never Queue),如果某RS连接数为0,则直接分配
  默认的调度策略为wlc
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-141669-1-1.html 上篇帖子: linux下LVS的实现 下篇帖子: LVS配置脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表