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

[经验分享] Linux集群入门之:正明的lvs

[复制链接]

尚未签到

发表于 2019-1-5 06:13:01 | 显示全部楼层 |阅读模式
  一、集群
  1. HA:高可用性,衡量标准,平均无故障时间
  平均无故障时间/(平均无故障时间+平均修复时间)---à 95%, 99%, 99.9%, 99.99%, 99.999%
  四层交换,工作在tcp/ip的第四层。无法根据应用层转发。
  七层转发,七层负载均衡。可以使用应用层来控制。
  2. 集群类型

  3. LB
  硬件解决方案:F5 BIG-IP / Citrix Netscaler / A10 A10 / Array / Redware
  软件解决方法之lvs
  类型   
  NAT
  1、 RS应该使用私用地址
  2、 RS网关必须指向DIP
  3、 RIP和DIP必须要在同一网段内
  4、 请求和响应的报文都要经过Director。在负载场景中,Driector很可能成为性能瓶颈
  5、 支持端口映射
  6、 RS可以使用任意支持几乎服务的OS
  10个RS情况下使用
  小知识:cip请求到达vip,vip将报文经过DNAT (服务器发布)转发给RS,RS进行处理,然后RS将网关指向DIP,这样,再经过目标地址转换,将处理的请求发送给cip。Director处理达大量的数据,因此负压较大
  DR
  直接路由(Direct Routing)。DR是为了解决NAT模式下Driector负载了接受请求,返回请求的双重任务。将返回请求的工作解放出来,由RS自己来处理,自己来返回。
  让前端路由将请求发往VIP时,只能是Director上的VIP。禁止RS响应对VIP的ARP的广播请求。解决方案:
  1)静态地址绑定:未必有路由器的配置权限;故障转移时,无法更新绑定
  2)在RS上安装arptables,自写规则
  3)RS必须是Linux,修改Linux内核参数,将RS上的VIP配置为lo接口别名,限制Linux仅对对应的ARP请求响应
  1、 RS可以使用私有地址,也可以使用公网地址,此时可以直接通过互联网连入RS实现监控、配置等
  2、 RS的网关不能指向DIP
  3、 RS需跟Director在同一物理网络内(不能由路由器分隔)
  4、 请求报文经过Director,但响应报文一定不经过Director
  5、 不支持端口映射
  6、 RS可以使用大多数的操作系统(可以配置VIP等)
  一些小知识点:有两种情况A,vip dip rip不在同一网络内,dip rip在同一个局域网内,vip为i外网IP。在Director中通过广播维护有RS的mac:ip地址对应表,当请求报文到来之后,更改了目标vip的mac地址,在物理网络内由于是通过mac地址通信,因此可以正确找到对应的RS服务器。在对应的RS服务器内,配置有vip,这样,通过vip处理,得到响应数据包源地址vip,目标地址cip。这个时候,只能通过RS的网卡进行通信(虽然在RS中有vip,但是这个只能修改响应报文的源IP,不能与外部主机进行通信),这样,RS就不能接入与vip相同的路由器,因为他们不在同一个网段。这个时候就需要给RS提供一个单独的路由器,然后与cip进行通信
  B,vip dip rip在同一个网段内,都是互联网IP,这样,vip接受报文请求,转发至RS,RS处理后直接通过相同的路由器设备就可以与cip通信
  TUN
  IP隧道
  1、 RIP DIP VIP 都需要为公网地址
  2、 RS网关不会指向也不可能指向DIP
  3、 请求报文经过Director,但响应报文一定不经过Director
  4、 不支持端口映射
  5、 RS的os必须支持隧道功能
  FULLNAT
  需给内核打补丁

  lvs调度方法(scheduling method)

  session管理
  1、 session绑定:始终将同一个请求这的连接定向至同一个RS(第一此请求时仍由调度方法选择),没有容错能力
  
  2、 session复制:在RS之间同步session,因此,每个RS持有集中中所有的session,对与大规模的集群环境不使用,反集群
  
  3、 session服务器:利用单独部署的服务器统一存储管理session,需要使用高可用的方法实现。
  4. 什么是lvs集群服务

  LVS :Linux Virtual Server
  基本概念:lvs无法监控后台服务器的健康状况。工作在内核,数据不用进入用户空间,已经脱离了套接字的限制,效率高,使用于大型网站。IPVS与iptables不能同时使用
  四层交换:四层路由
  ipvs根据请求目标套接字(包括端口的协议类型tcp,udp)来实现转发。
  ipvs依靠ipvsadm书写规则实现功能
  系统默认支持ipvs,但默认的管理工具ipvsadm需要安装。


  5、NAT模式

         
  在NAT模式中,请求从CIP发出,vip接受到请求报文时,源IP为cip,目标IP为vip。经过lvps,使用目标地址转换,报文头发生改变,源IP为cip,目标IP为rip。在RS处理之后,再封装成报文,此时报文rip为源地址,vip为目标地址,指定RS的默认网关为dip。
  经过Director的DNAT功能,出去之后的源IP地址为vip,目标地址cip。这样cip就可以得到自己想要要的响应。
  因此,主要的配置如下:
  基本的配置思路:在Director上设定vip(这里vip是一个浮动的IP地址,设置成eth0的别名)。设置dip(dip作为rip的默认网关)。在RS上设置好各自的ip地址即可。这些设置好后,在Driector上打开转发(不同的IP之间的数据转发),然后设置ipvs的规则即可。设置完成后可以测试。
  6、DR模式


  在DR模式下,Director有两个IP,vip和dip。RS也有两个IP,vip和rip。
  为什么要给RS vip?
  为了分摊Director的负担,将响应的工作给了RS。这样出去的报文要由DR来承担发送。不考虑别的问题,RS处理了Director发过来的请求,如果不做任何改变,仍然以自己的IP地址作为源IP,那么报文将不能正确响应cip。因此,需要给RS分配vip地址,数据报的格式包装成源IP为vip,目标Ip为cip。
  怎样实现Driector转发给RS,并且目标IP是vip?
  当用户请求的报文到达网络后,用arp协议请求vip的物理位置,这个时候一定要认为屏蔽掉RS的vip响应请求报文,确保请求报文能正确找到Director,到达Director之后,经过调度将请求转发给RS,根据上述问题,如果将整个时候的目标地址更改为rip,最后报文将不能正确响应客户端。因此在上图3位置,不能使用rip作为目标地址,仍然使用vip。为了能够找到RS,Director维护了一张RS的IP与mac地址对应表,此处处理后,将vip的mac地址更换为rip的mac地址,就可以正确找到RS了。
  具体的流程是什么?
  如上图所示,解析之:当客户端的请求过来,源IP为cip,目标ip为vip。到达内部的物理网络后,广播请求知道vip所在的物理位置,这个时候一定要屏蔽掉RS上的vip对此请求的回应(此处包含两层含义:在广播请求IP的时候,设置RS上的vip广播地址为自己,不响应这个广播;在arp层面上,设置不响应不通告arp(由于Linux特性,会主动通报接受主机上所有的网卡信息)),请求报文正确到达Director,经过处理,替换vip的mac地址为RS的mac地址,找到RS。在RS上处理之后,封装为源IP是vip,目标IP是cip的报文响应客户端。在从RS出去之后,有两种情况需要考虑。如果RS同vip一样,在同一个网段,都是公网IP,那么可以直接连接同一个路由器直接转发出去;如果RS仅仅是内部的IP地址,这个时候,由于不和ip在同一个网段不能使用同一个路由器,必须使用另外的路由器做转发。
  关联知识

  当rip、dip、vip在同一网段中时:

  配置过程:
  1、 配置Director上IP信息
  1) 配置vip为eth0:0 172.16.37.10
  2) 设置主机路由
  # route add -host 172.16.37.11 dev eth0:0 ?这一步有必要吗?
  打开转发功能
  echo "1" > /proc/sys/net/ipv4/ip_forward
  2、 配置RS上IP
  1) 设置rip:设置ip为 172.16.37.2 172.16.37.3
  2) 设置arp规则
  # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
  # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
  3) 设置vip在lo上:
  # ifconfig lo:0 172.16.37.10 netmask 255.255.255.255 broadcast 172.16.37.11 up
  4) 设置lo的主机路由
  # route add -host 172.16.37.10 dev lo:0
  3、 配置Director上规则
  # ipvsadm -A -t 172.16.37.10:80 -s rr
  # ipvsadm -a -t 172.16.37.10:80 -r 172.16.37.2 -g
  # ipvsadm -a -t 172.16.37.10:80 -r 172.16.37.2 –g
  vip与dip、rip不在同一网段时
  

  这里,使用的客户端是172.16.37.100。192.168.0.1与172.16.0.1之间能互相转发。这里还有一个dip 192.168.37.100,但是似乎没有使用上使用
  1、 配置各IP地址
  1) 配置Director上的vip:
  ifconfig eth0:0 172.16.37.10 netmask 255.255.255.255 broadcast 172.16.37.10 ?
  route add –host 172.16.37.10 dev eth0:0
  2) 配置RS上的IP
  ipconfig eth0 192.168.0.2/24
  ipconfig eth0 192.168.0.3/24
  确认他们的网关是192.168.0.254
  route add default gw 172.168.0.254
  2、 配置RS上的内核参数
  # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
  # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
  3、 配置RS上的lo:0及主机路由:
  ifconfig lo:0 172.16.37.10 netmask 255.255.255.255 broadcast 172.16.37.10
  route add –host 172.16.37.10 dev lo:0
  4、 配置RS上规则
  # ipvsadm -A -t 172.16.37.10:80 -s rr
  # ipvsadm -a -t 172.16.37.10:80 -r 192.168.0.2 -g
  # ipvsadm -a -t 172.16.37.10:80 -r 192.168.0.3 –g
  转发功能打开echo "1" > /proc/sys/net/ipv4/ip_forward
  (这个不是持久有效的)
  7、LVS持久性
  连接模板:ipvsadm –L –C
  在Director中的连接模板,记录了连接信息,包括timeout。根据用户模版,追踪用户请求,设置请求时间。
  持久连接类型      
  PCC
  将来自于同一个客户端发往VIP的所有请求同一定向至同一个RS
  定义规则时 ipvsadm –A –t 172.16.37.10:80 –p 120
  ipvsadm –A –t 172.16.37.10:0
  PPC
  将来自同一个客户端发往某VIP的某端口的所有请求同一定向至同一个RS
  定义规则时
  ipvsadm –A –t 172.16.37.10:22
  PFMC
  端口绑定:port affinity。能够实现基于防火墙标记,将两个或以上的端口绑定为同一个服务。

  若超时,则默认续订2分钟
  主要介绍:PFMC,这里使用iptables给防火墙打标记。然后再编写规则

  RS设置同DR。主要是在Director上设置有所不同。
  设置防火墙标记:# iptables -t mangle -A PREROUTING -d VIP -p tcp --dport CS_Port -j MARK --set-mark # (0-99)
  定义集群规则:# ipvsadm -A -f #
  [root@localhost ~]# iptables -t mangle -A PREROUTING -d 172.16.37.10 -p tcp --dport 80 -j MARK --set-mark 10
  [root@localhost ~]# iptables -t mangle -A PREROUTING -d 172.16.37.10 -p tcp --dport 443 -j MARK --set-mark 10
  [root@localhost ~]# service iptables save
  iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
  [root@localhost ~]# ipvsadm -A -f 10 -s rr
  [root@localhost ~]# ipvsadm -a -f 10 -r 192.168.0.2 –g
  [root@localhost ~]# ipvsadm -a -f 10 -r 192.168.0.3 –g
  小结: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.iyunv.com/thread-659413-1-1.html 上篇帖子: LVS负责均衡配置 下篇帖子: lvs群集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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