lvs四层负载均衡

首先了解七层OSI模型

第一层:物理层			对应硬件设置:负载均衡中F5 readware	
第二层:数据链路层		例:lvs的dr模型中修改mac地址
第三层:网络层			例:ip,icmp
第四层:传输层			例:tcp、udp(个人浅见,lvs本身只做流量分发,本身无流量)
第五层:会话层			例:DNS、smtp
第六层:表示层			例:telnet、snmp(zabbix网页监控中使用了该协议)
第七层:应用层			例:nfs、ftp、tftp、http等

第1层有硬件必会有软件,笔者目前所知有lvs、nginx、haproxy

这7层模型又可分为四层协议结构和五层协议结构

四层协议结构将物理层和数据链路层划为网络接口层,3层4层不变,5层6层7层统称为应用层

五层协议结构1层2层3层4层不变,5层6层7层统称为应用层

个人理解7层模型结构主要点在于

(1)划分层级,用于排错

(2)便于管理

LVS在提供服务时其实划分为三层

(1)DS或LB

(2)RS群

(3)存储区

存储区的理解可认为当在某购物软件进行购物时,你将你喜欢的东西加入了购物车,此时发现当前页面展示的商品已经完毕,需要刷新展示后面的商品内容时,由于lvs的调度算法,此时将你的请求分发给另一台服务器提供,由于没有存储区的原因,购物车的商品随着你的刷新而清空,这是给人非常不爽的体验。存储区的作用其实个人认为两个(1)提供相同的内容,提供相同的服务(2)数据本身存储以及持久化

lvs在设计时分为两部分

(1)ipvs,该部分工作于内核空间,调度代码

(2)ipvsadm,该部分工作于用户空间,个人理解为定义的vip,rs集群节点,调度算法等

调度算法笔者目前接触到的是rr和wrr

静态:rr、wrr、sh、dh

动态:lc、wlc、sed、nq、lblc、lblcr

LVS支持的负载均衡策略分为三种:NAT、DR、TUN

nat(个人理解):LB收到用户请求后,将请求包中的IP地址转换为某个特定RS的ip地址,转发给RS,RS将应答包发送给LB,LB将应答包中的ip转为虚拟服务ip回送给用户

要求:RS与LB在一个网段;请求响应报文均经过LB。对LB的性能要求比较高;支持端口映射(笔者目前没有理解其含义)

nat模式符合lvs在OSI的第三层模型(网络层)的负载均衡策略

DR(个人理解):LB收到用户请求后,将请求包中的mac地址转为某个特定RS的mac地址,转发给RS,RS可直接将应答包回送给客户

 要求:LB与RS在同一个物理段,共享一个虚拟ip;RS的网关不允许指向LB,应为响应报文不通过LB;不支持端口映射(没有理解含义)

DR模式为7层网络模型中的第2层(数据链路层)做负载均衡策略

TUN(个人理解):LB收到用户请求后,根据ip隧道协议封装该包转发给某个特定的RS,RS解出请求信息之后,将应答内容回送给用户

 要求:RS与LB都要支持ip隧道协议

到此四层负载均衡其实已经说完三层,第一层物理层硬件方面,第二层,可理解为DR模式的负载均衡策略,第三层是NAT模式的负载均衡策略,第四层其实就是lvs本身,lvs本身只做分发请求,本身没有流量。

负载均衡个人认为实现三点目的

(1)转发功能,将请求按照调度算法均匀分发给真实的服务节点

(2)故障隔离:将有故障的节点剔除,使用备用节点

(3)恢复添加:人工修复故障节点,ok后自动加入

在LVS的故障隔离与恢复添加不得不说keepalived,keepalived起初主要为lvs设计,后加入vrrp功能

keepalived轻量级高可用集群软件,vrrp虚拟路由冗余协议

在keepalived中核心分为三个模块

(1)core:负责核心启动,配置文件的解析

(2)check:健康检查等

(3)vrrp:故障隔离,恢复添加。选举机制

vrrp(虚拟路由冗余协议)理解:在虚拟路由器中,只有处于master的节点会一直发送vrrp数据包,处于backup节点只接收来自master的报文信息,当master出现故障时,处于backup的节点就收不到来自master的报文信息,认为master出现故障。此时选举一个优先级更高的backup称为新的master,过程迅速,保证服务的持续性。

keepalived配置文件分为三部分

(1)global部分(全局配置),笔者目前对这一部分不太清楚

(2)vrrp部分,主要有互为主备配置等

(3)lvs部分:此部分配置其实做了检查,连接超时,重连次数等;这部分配置好后少了lvs在rs端进行的ipsadm -a vip -r rip -m/g/i (-w) 值;ds端的ifconfig 网卡:0 vip broadcast vip netmask 子网掩码 up;route add -host vip dev 网卡名:0

但arp抑制以及添加网卡路由等操作还要执行

ifconfig lo:0 vip broadcast vip netmask 子网掩码 up (1)
route add -host vip dev lo:0                        (2)
(1)和(2)可替换为ip a a vip/多少位子网掩码 dev lo:0
echo "1" > /proc/sys/net/ipv4/config/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/config/lo/arp_announce 
echo "2" > /proc/sys/net/ipv4/config/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/config/all/arp_announce 

arp抑制可以写入到/etc/sysctl.conf

该配置文件涉及到linux的内核调优。内核调优与数据库参数优化是一项艰巨的任务,参考网络各种大牛文章进行修改

sysctl -p "永久"生效

keepalived高可用中可能出现的问题:脑裂

脑裂:当链接集群线路出现故障时,节点均认为对方出现问题,从而导致可能两边服务均起来,争抢资源,如存储数据等;或两边服务都不起来,服务挂掉。脑裂在HA系统中为非常严重问题。

脑裂可能出现情况:

(1)主节点与服务节点之间链接故障

(2)主节点防火墙策略

(3)节点故障

(4)节点网络配置问题

(5)其他问题,软件bug等

解决方案:

(1)多条线路链接

(2)防火墙配置

(3)节点检查(若检查方案zabbix,注:zabbix的脑裂监控其实监控的是主节点的vip是否存活,但不一定出现脑裂)

(4)网络配置

最后总结LVS的优点:

(1)抗负载能力强,

(2)配置简单,配置好之后不需要认为去过多操作,避免了误操作导致的错误,工作稳定。

出现问题网上大牛的总结大多都在内存、cpu、网络等方面

lvs出错大部分原因还是在于网络问题,笔者在进行试验测试是由于网络问题失败很多次,后查阅各大牛的文章,使用ip a a 绑定后终于成功

(3)仅做请求分发,本身无流量

(4)lvs由于工作在第四层,可对大多数应用做负载均衡

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值