目录

1. LVS-简介

2. LVS-问题

3. LVS-fullnat

4. LVS-synproxy

5. LVS-cluster

6. LVS-performance

7. LVS-todo list


疑问引入:用户访问淘宝,访问哪台apache服务器

传统做法:DNS服务

四个问题

Q1:apache2 down,remove生效时间不可控

Q2:只支持WRR癿调度策略

Q3:apache间负载不均匀

Q4:攻击防御能力弱

A:  引入Virtual Server

4层Load Balance

– 基亍传输层信息进行 调度

– 调度算法:WRR/WLC 等

– 工作模式:NAT/DR/TUNNEL

– 传输协议:TCP/UDP

NAT

TUNNET

DR

LVS – 内核模块:ip_vs – 实现了负载均衡
• Q – 某台RealServer down了,怎么办? – LVS本身down了,怎么办?

A – 某台RealServer down了,怎么办?

--- 健康检测 – LVS本身down了,怎么办?

---LVS冗余 • Keepalived

– LVS管理软件 – 健康检测:支持4/7监测;

– 主备冗余:采用VRRP协议癿HeartBeat;

– 如何配置?

--- 配置文件
 Keepalived –f /etc/keepalived/keepalived.conf
 
Q:缺少监控系统?LVS具有开源SNMP Patch

问题

LVS在大规模网络中应用存在不足

– 各转发模式,网络拓扑复杂,运维成本高 • 和商用LB设备相比

– 缺少TCP标志位DDOS攻击防御 • 主备部署方式不足

– 性能无法线性扩展

DR模式-不足

1. LVS-RS间必须在同一个VLAN 2. RS上绑定VIP,风险大;

NAT模式-不足

TUNNEL不足

IN:增加1个IP头 OUT:NULL
1. RS配置复杂(IPIP模块等)

2. RS上绑定VIP,风险大

解决办法

LVS各转发模式运维成本高

– 新转发模式FULLNAT:实现LVS-RealServer间跨vlan通讯,并 且in/out流都经过LVS;

• 缺少攻击防御模块 – SYNPROXY:synflood攻击防御模块

– 其它TCP FLAG DDOS攻击防御策略 • 性能无法线性扩展

– Cluster部署模式

FULLNAT是一种新的转发模式 – 主要思想:引入local address(内网ip地址),cip-vip转 换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通 讯; – keepalived配置方式:
 virtual_server 125.76.224.240 {
     lb_kind FNAT/DR/NAT/TUNNEL
         local_address {
                          192.168.1.1
         }

FULLNAT转发模式

NAT实现原理

FULLNAT实现原理

NAT-HOOK点

NETFILTER HOOK点,同iptables
 
为什么是这2个HOOK点?

FULLNAT-HOOK点

NAT-session表

FULLNAT-session表

FULLNAT-获取client address(TOA)

FULLNAT-设计考虑
– TCP OPT-TIMESTAMP • RealServer kernel开启tcp_tw_recycle • 用户A和B,timestamp大癿访问成功,timestamp小癿访问失败
– TCP OPT-MSS • TCP三次握手最后一个ack包为GET请求 • GET请求>1个数据包,toa无法插入
– TCP - Sequence • RealServer上timewait癿socket复用条件:seq递增

SYNPROXY用于防御synflood攻击 – 主要思想:参照linux tcp协议栈中syncookies癿思想, LVS-构造特殊seq癿synack包,验证ack包中ack_seq是否 合法-实现了TCP三次握手代理; – 配置方式
virtual_server 125.76.224.240 {
         syn_proxy
 
 SYNPROXY实现原理

SYNPROXY-设计考虑
– TCP - Sequence • Lvs->client 和 apache->lvs癿syn_ack包中seq不相同
– TCP OPT • Lvs->client syn_ack包中tcp opt支持mss/wsale/sack
– Session reused • 多个用户通过NAT网关用同一个ip/port访问LVS
– Ack Storm • Tcp seq转换导致ack storm

IPVS优化 – 多队列网卡,1个队列绑定到1个cpu核上

– 增大session hash table

– 增大session hash bucket lock个数 – 避免路由cache条目过多
– LOCKLESS – 硬件:Westmere(第二代nehalem)/bios配置

单队列网卡 – 只有一个rx_buffer和一个tx_buffer;

多队列网卡

网卡中断– CPU核 – Cat /proc/interrupts
  54:  188324418       0     IR-PCI-MSI-edge      eth0-TxRx-0
     55:  167573416       0     IR-PCI-MSI-edge      eth0-TxRx-1
 
– 绑定
 echo  01 > /proc/irq/54/smp_affinity  
  echo 02 > /proc/irq/55/smp_affinity

• 软多队列:RPS(receive packet steering)

RPS配置
– cat  /sys/class/net/eth0/queues/rx-0/rps_cpus
 cat  /sys/class/net/eth0/queues/rx-1/rps_cpus
  – 绑定
 echo  01 > /sys/class/net/eth0/queues/rx-0/rps_cpus
  echo 02 > /sys/class/net/eth0/queues/rx-1/rps_cpus

KEEPALIVED优化
– Select->epool – 减少reload时间和开销

系统配置注意点

– 关闭网卡LRO/GRO

– 关闭irqbalance

– 增大proc参数:net.core.netdev_max_backlog

性能指标

– Synflood:350w pps

– Ack/rst/fin-flood:800w pps

– HTTP:150w pps

– New tcp connection:30w

– MAX session:4000w (24G memory) 机器:DELL R610(E5645  @ 2.40GHz), Intel 82599 NIC

• 提高性能

– Ipvs:lockless

– Keepalived:多线程事件驱劢

– 新硬件:sandybridge - DDIO • 完善功能

– 攻击防御:ip黑白名单…..

– 支持GRO(不支持LRO)
 
未来:4/7层合一

LVS在淘宝环境中的应用相关推荐

  1. 『优势特征知识蒸馏』在淘宝推荐中的应用

    作者 | Chilia 方向 | 哥伦比亚大学研究生 搜索推荐方向 整理 | NewBeeNLP 今天分享阿里的一篇将「目标蒸馏-logits方法」应用到推荐系统领域的论文, 其提出的蒸馏技术是工业界 ...

  2. 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定

    原标题:怎么录制淘宝页面中的视频?简单方法,轻松搞定 怎么录制淘宝页面中的视频?当前足不出户,大家就可以在很多的电商平台购买到自己心仪的商品.这其中商机也就产生了,如果不太想上班,或者说想要自己当老板 ...

  3. php提取淘宝URL中ID的代码

    php提取淘宝URL中ID的代码 一段可以提取淘宝URL中ID的PHP代码. 例如: <?php $taobao = 'taobao.com'; $tmall = 'tmall.com'; $g ...

  4. 淘宝url中的spm编码是怎么生成的呢?

    淘宝url中的spm编码是怎么生成的?生成使用了什么技术?是怎么回事呢 越详细越好. 下面是SPM淘宝说明: SPM是淘宝社区电商业务(xTao)为外部合作伙伴(外站)提供的一套跟踪引导成交效果数据的 ...

  5. 求一个手机淘宝直播中抢购的脚本,急

    要求,手机淘宝直播中不管上架什么东西,我都是第一个购买成功的! 天灵灵地灵灵,太上老君急急如律令,大神来>o<

  6. 淘宝UWP中的100个为什么

    从淘宝UWP第一版发布到现在,已经有十个月了,期间收到了用户各种各样的反馈,感谢这些用户的反馈,指导我们不断的修正.完善应用.但是也有一部分需求或建议,由于资源或技术的限制,目前确实无法做到,只能对广 ...

  7. 吴佳明(普空):LVS在大规模网络环境中的应用

    from: http://blog.aliyun.com/1750 9月13日,阿里云课堂第一期在北京准时开课,到场与会人员众多,现场气氛非常热烈.阿里云三位讲师为大家献上了精彩的演讲,参会者也纷纷积 ...

  8. 淘宝“雪藏“中差评,是对还是错?

    淘宝的差评已经成为了过去式. 近日,手机淘宝进行了一次改版.除了对主页进行了一系列的改版之外,最为重要的是,还针对评价系统进行了改版. 此次改版之后,此前的好评.中评和差评三种标签不再单独展示,统一合 ...

  9. 深度语义模型以及在淘宝搜索中的应用

    https://www.toutiao.com/a6685574319969403404/ 传统的搜索文本相关性模型,如BM25通常计算Query与Doc文本term匹配程度.由于Query与Doc之 ...

最新文章

  1. 构建RHEL上的extmail
  2. 互联网公装企业“inDeco领筑智造”完成A+B轮近1.1亿元融资
  3. layer.tips定义弹出的宽度
  4. springboot接口签名统一效验_Python如何接入开放平台?签名验签、加密解密、授权认证测试实战...
  5. mysql获取当前时间,及其相关操作
  6. gitlab 的使用策略和简单介绍
  7. 【英语学习】【Level 07】U05 Best Destination L4 A perfect destination
  8. 【Ajax技术】JQuery的应用与高级调试技巧
  9. android mount --bind挂载目录
  10. ps打开闪退_Photoshop2020安装教程,会安装软件是学ps的前提
  11. 高效办公软件推荐——文件搜索类
  12. Duke的咆哮语录②:我求求你们跟我学一下代码“分层”吧!
  13. JS清除网页历史记录,屏蔽后退按钮
  14. (七)turtlebot3导航包解析
  15. UNR 1 DAY 2 T1 Jakarta Skyscrapers
  16. linux 拼图游戏,2020经典宝石拼图
  17. settimeout一定要清除么?
  18. [杂言] GoodBye,2016
  19. 浏览器截图截取整个页面的方法
  20. 第五节、AHK对话框详解

热门文章

  1. 《转》Ubuntu 12.04常用的快捷键
  2. spring下jndi配置
  3. Razor 也可说是一个asp.net模板引擎,用不着学习 T4 了
  4. 值大于为此列指定的允许精度_电能质量测试精度会受到哪些因素影响?如何解决?...
  5. php table 下拉框,LayerUI的table 里面加 select 下拉框 – Fly社区-Mikel
  6. android应用程序的组件,Android基础之应用程序组件
  7. java资源争夺_所有满足类似需求,争夺同类资源的组织和个人统称为(   )。...
  8. HTML5 requestAnimationFrame( ) 动画API
  9. Linux USB 驱动开发实例(二)—— USB 鼠标驱动注解及测试
  10. int a[5]={}, a+1与(int*)a+1的区别