美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

Posted 狸猫技术窝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?相关的知识,希望对你有一定的参考价值。

还没关注?伸出中指点这里



1.1 负载均衡介绍

1.1.1 负载均衡的妙用

负载均衡(Load Balance)集群提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载、带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。


  • 单台计算机无法承受大规模的并发访问或数据流量了,此时需要搭建负载均衡集群把流量分摊到多台节点设备上分别处理,即减少用户等待响应的时间又提升了用户体验;


  • 7*24小时的服务保证,任意一个或多个有限后端节点设备宕机,不能影响整个业务的运行。


1.1.2 为什么要用lvs

工作在网络模型的7层,可以针对http应用做一些分流的策略,比如针对域名、目录结构,nginx单凭这点可利用的场合就远多于LVS了。


最新版本的Nginx也支持4层TCP负载,曾经这是LVS比Nginx好的地方。


n Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一,相反LVS对网络稳定性依赖比较大。


n Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。


那为什么要用lvs呢?

ü 简单一句话,当并发超过了Nginx上限,就可以使用LVS了。

ü 1000-2000W PV或并发请求1万以下都可以考虑用Nginx

ü 大型门户网站,电商网站需要用到LVS


1.2 LVS介绍

LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。该项目在19985月由章文嵩博士组织成立,是中国国内最早出现的自由软件项目之一

1.2.1 相关参考资料

LVS官网:http://www.linuxvirtualserver.org/index.html

相关中文资料

  1. LVS项目介绍

    http://www.linuxvirtualserver.org/zh/lvs1.html

  2. LVS集群的体系结构

    http://www.linuxvirtualserver.org/zh/lvs2.html

  3. LVS集群中的IP负载均衡技术

    http://www.linuxvirtualserver.org/zh/lvs3.html

  4. LVS集群的负载调度

    http://www.linuxvirtualserver.org/zh/lvs4.html

 

1.2.2 LVS内核模块ip_vs介绍

早在2.2内核时, IPVS就已经以内核补丁的形式出现。从2.4.23版本开始,IPVS软件就合并到Linux内核的常用版本的内核补丁的集合。


从2.4.24以后IPVS已经成为Linux官方标准内核的一部分。


美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

ü LVS无需安装

ü 安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive

ü ipvsadm是通过命令行管理,而keepalive读取配置文件管理

ü 后面我们会用Shell脚本实现keepalive的功能


1.3 LVS集群搭建

1.3.1 集群环境说明

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

主机说明

[root@lb03 ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@lb03 ~]# uname -a
Linux lb03 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@lb03 ~]# systemctl status firewalld.service
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

[root@lb03 ~]# getenforce
Disabled


web环境说明

[root@lb03 ~]# curl 10.0.0.17
web03

[root@lb03 ~]# curl 10.0.0.18
web04


web服务器的搭建参照: 

Tomcat:

http://www.cnblogs.com/clsn/p/7904611.html


Nginx: 

http://www.cnblogs.com/clsn/p/7750615.html


1.3.2 安装ipvsadm管理工具

安装管理工具

yum -y install ipvsadm

查看当前LVS状态,顺便激活LVS内核模块。

ipvsadm

查看系统的LVS模块。

[root@lb03 ~]# lsmod|grep ip_vs
ip_vs_wrr 12697 1
ip_vs 141092 3 ip_vs_wrr
nf_conntrack 133387 1 ip_vs
libcrc32c 12644 3 xfs,ip_vs,nf_conntrack


1.3.3 LVS集群搭建

配置LVS负载均衡服务(lb03操作

步骤2:清除当前所有LVS规则(-C

步骤3:设置tcptcpfinudp链接超时时间(--set

步骤4:添加虚拟服务(-A),-t指定虚拟服务的IP端口,-s 指定调度算法 调度算法见man ipvsadm rr wrr 权重轮询 -p 指定超时时间

步骤5:将虚拟服务关联到真实服务上(-a -r指定真实服务的IP端口 -g LVS的模式 DR模式 -w 指定权重

步骤6:查看配置结果(-ln


命令集

ip addr add 10.0.0.13/24 dev eth0
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
ipvsadm -ln


检查结果

[root@lb03 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.13:80 wrr persistent 20
-> 10.0.0.17:80 Route 1 0 0
-> 10.0.0.18:80 Route 1 0 0


ipvsadm参数说明:(更多参照 man ipvsadm)

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?


1.3.4 web浏览器配置操作

步骤2:修改内核参数抑制ARP响应


命令集

ip addr add 10.0.0.13/32 dev lo

cat >>/etc/sysctl.conf<<eof
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p


至此LVS集群配置完毕


1.3.5 进行访问测试

浏览器访问:

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?


  命令行测试:

[root@lb04 ~]# curl 10.0.0.13
web03


抓包查看结果:

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

 

arp解析查看:

[root@lb04 ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
10.0.0.254 ether 00:50:56:e9:9f:2c C eth0
10.0.0.18 ether 00:0c:29:ea:ca:55 C eth0
10.0.0.13 ether 00:0c:29:de:7c:97 C eth0
172.16.1.15 ether 00:0c:29:de:7c:a1 C eth1
10.0.0.17 ether 00:0c:29:4a:ac:4a C eth0

1.4 负载均衡(LVS)相关名词

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

术语说明:

DS:Director Server。指的是前端负载均衡器节点。
RS:Real Server。后端真实的工作服务器。
VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
RIP:Real Server IP,后端服务器的IP地址。
CIP:Client IP,访问客户端的IP地址。


1.4.1 LVS集群的工作模式--DR直接路由模式


DR技术可极大地提高集群系统的伸缩性。但要求调度器LB与真实服务器RS都有一块物理网卡连在同一物理网段上,即必须在同一局域网环境。

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

DR直接路由模式说明:



b)请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高,比Nginx代理模式强于此处。





f)当前,调度器LB支持几乎所有UNIX、Linux系统,但不支持windows系统。真实服务器RS节点可以是windows系统。


g)总之,DR模式效率很高,但是配置也较麻烦。因此,访问量不是特别大的公司可以用haproxy/Nginx取代之。这符合运维的原则:简单、易用、高效。日1000-2000W PV或并发请求1万以下都可以考虑用haproxy/Nginx(LVS的NAT模式)


h)直接对外的访问业务,例如web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:mysql,存储系统RS节点,最好只用内部IP地址。

以上是关于美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?的主要内容,如果未能解决你的问题,请参考以下文章

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

千万级流量架构下的负载均衡解析

面试90%都会翻车的高可用+高并发+负载均衡架构设计 !

面试90%都会翻车的高可用+高并发+负载均衡架构设计 !

面试90%都会翻车的高可用+高并发+负载均衡架构设计 !

设计千万级用户量网站的高并发架构!!!

(c)2006-2024 SYSTEM All Rights Reserved IT常识