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

[经验分享] LVS集群详解

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2019-1-3 10:17:24 | 显示全部楼层 |阅读模式
  一、什么是集群
  LVS(Linux Virtual Server)Linux虚拟服务器,将多台虚拟主机组织起来满足同一个需求。由国人章文嵩开发,通过LVS提供的负载均衡可实现一个高性能、高可用的服务器群集,从而以低成本实现最优的服务性能。
  

  二、集群类型  
      LB:Load balancing    负载均衡集群

      HA:High Availavility    高可用集群

      HP:High Performace     高性能集群
  

  三、lvs的常用集群方式及其详解
  1、lvs是由用户空间命令和工作在内核上的netfilter的INPUT链上钩子函数所组成,可根据用户自定义集群实现转发。
  2、lvs术语
  CIP:客服端使用的IP地址
  VIP:虚拟服务器IP地址
  DIP:director用于和Real server之间进行通信的IP地址
  RIP:后端real server的IP地址
  RS:real server   
  3、lvs类型
  lvs-nat:lvs network address translation :lvs网络地址转换
  lvs-dr:director routing 直连路由   
  lvs-tun:tuneling 隧道
  lvs-fullnat:功能更加强大的网络地址转换  
  

  lvs-nat特性:
      多源ip的目标地址转换,通过将请求报文中的目标地址和目标端口修改为从后端主机中挑选出的某RS的RIP和端口实现转发。
      ①RIP和DIP需在同一个网络中,且需使用私有地址,RS的网关需指向DIP,保证响应报文经过RS进行转发,此模型中VS容易成为单点故障,成为系统的瓶颈。
      ②请求报文和相应报文都经由Director进行转发
      ③支持端口映射
      ④VS需为Linux,RS可以是OS  
  LVS-DR特性:
      通过为请求报文重新封装MAC地址进行转发,源MAC地址是DIP所在接口的MAC地址,目标MAC地址为调度器挑选出来的后端RS的MAC地址,IP首部不会发生改变。

      ①确保前端路由器将目标IP为vip的请求报文发往director
      ②RS的RIP可以是私网地址也可以是公网地址
      ③RS和director必须在同一个网络中
      ④请求报文必须经由调度器,但响应报文则一定不能有调度器转发,而是直接有real server响应客服端请求
      ⑤不支持端口映射,RS可使用OS   
  

  确保前端路由器将目标IP为vip的请求报文发往director
  解决方案:
      ①在路由器上静态绑定VIP和director的MAC地址,禁止real server响应 arp请求,禁止RS的vip通告
      ②arptables
      ③修改RS的内核参数,并将VIP绑定lo的别名上,arp_ignore,arp_announce   
  

  限制响应级别:arp_announce
  0:默认,把本机所有的接口信息向每个接口通告;
  1:尽量避免向非本网络通告
  2:总是避免;符合我们需要
  限制通告级别:arp_ignore
  0:默认使用本地任意接口上配置的地址进行响应
  1:仅在请求的目标ip配置在本地主机的接口报文的接口上是,不给与响应
  

  LVS-tun特性:
      通过转发方式,不修改请求报文的ip首部,源ip为cip,目标ip为VIP,而是在源ip基础之上再封装一个ip首部,源ip为DIP,目标ip为调度器挑选的RS的VIP。

      ①RIP,DIP,VIP全为公网
      ②RS的网关不能指向DIP
      ③请求报文经由director转发,但响应报文直接发往CIP
      ④不支持端口映射
      ⑤RS必须支持隧道功能   
  

  LVS常用的调度算法:
  静态的调度算法:
      RR:Round Robin  #轮询,轮转
      WRR:Weighted Round Robin #加权轮询,根据后端每台real server的能承担的负载进行分配不同的请求个数
      SH:Source Hashing #源地址哈希,将来自于同一台IP地址的请求发往同一台后端的real server服务器

      DH:Destination Hashing #目标地址哈希,将发往同一个目标地址的请求始终发往前端调度器挑选出来的real server   

  动态的调度算法:根据算法及其RS当前负载情况进行调度
      LC:least connections,最少连接
      WLC:weight least connections,加权最少连接

      SED:shortest expections delay   

      NQ:never queue  

      LBLC:基于本地的最少连接

      LBLCR:带复制功能的基于本地的最少连接

  

  ipvs命令:
ipvsadm -A|E -t|u|f service-address [-s scheduler]
               [-p [timeout]] [-M netmask] [-b sched-flags]
       ipvsadm -D -t|u|f service-address
       ipvsadm -C
       ipvsadm -R
       ipvsadm -S [-n]
       ipvsadm -a|e -t|u|f service-address -r server-address
               [-g|i|m] [-w weight] [-x upper] [-y lower]
       ipvsadm -d -t|u|f service-address -r server-address
       ipvsadm -L|l [options]
       ipvsadm -Z [-t|u|f service-address]
       ipvsadm --set tcp tcpfin udp
       ipvsadm --start-daemon state [--mcast-interface interface]
               [--syncid syncid]
       ipvsadm --stop-daemon state
       ipvsadm -h  管理集群服务:增、删、改、查  
  
  ipvsadm -A |E -t |u |f service-address [-s scheduler]
      -A:增加

      -E:修改
      -D:删除

      -L:查看
      -t:tcp,protocol type

      -u:udp,protocol type
      -f:firewall mark
  server-address:
      -t,tcp,vip:port

      -u,udp,vip:port

      -f firewall mark  
      -s:指定调度算法类型,默认为WLC
  ipvsadm -C    #清除所有ipvs
  
  ipvsadm -Z [-t|u|f service-address]
  -Z:清空计数器  
  

  管理集群上的RS:

  ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
      -a:增加
      -e:修改

      -r:real server_ip

      -g,gateway,dr:直连路由

      -m,masquerde,nat,目标地址转换

      -i,ipip,tun,隧道
      -w,权重

  ipvsadm查看的其他子命令:
  ipvsadm -L|l [options]
      -L:查看

      -n:数字格式显示

      --stats:统计数据

      --rate:速率统计

      -c,connetions:显示连接数
      -exact:精确显示
  

  
保存
ipvsadm -S >/path/to/some_rule_file
ipvsadm-save >/path/to/soem_rule_file
恢复:
ipvsadm -R /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
ifconfig lo:0 10.1.10.6 netmask 255.255.255.255 broadcast 10.1.10.6
route add -host 10.1.10.6 dev lo:0  
RS2:
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
ifconfig lo:0 10.1.10.6 netmask 255.255.255.255 broadcast 10.1.10.6
route add -host 10.1.10.6 dev lo:0  Scheduler Server:
  
ifconfig eno1677736:0 10.1.10.6 netmask 255.255.255.255 broadcast 10.1.10.6
ipvsadm -A -t 10.1.10.6:80 -s wrr
ipvsadm -a -t 10.1.10.6:80 -r 10.1.10.4 -g -w 1
ipvsadm -a -t 10.1.10.6:80 -r 10.1.10.5 -g -w 2  

  实验结果图:
  
  

     
  如上述图所示,lvs-dr配置成功,前端调度器根据wrr算法调度后端服务器实现负载均衡调度,lvs配置很简单,但原理非常重要,只有懂了原理,才能真正的掌握好lvs.      
     

  






运维网声明 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.yunweiku.com/thread-658890-1-1.html 上篇帖子: cacti监控LVS 下篇帖子: LVS采用DR方式安装,部署。配置案例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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