高薪Linux必备之高并发场景 LVS 简快入门实战(万字长文)

 

看完本文,高可用不再难了...


随着移动互联网的加速,应用大规模同时使用的情况成为了常态,如微博、知乎、今日头条等大型应用,作为Linux运维从业者,高并发场景的解决能力成为了高薪的关键。

今天我们特别邀请了资深的Linux运维老司机惨绿少年Linux来给大家普及高并发场景 LVS的实现过程,助你高薪之路顺畅。

作者:惨绿少年Linux,马哥Linux原创作者社群特约作者,资深Linux运维工程师,作者博客:www.nmtui.com,擅长虚拟化、OpenStack等前沿技术。


1.1 负载均衡介绍

1.1.1 负载均衡的妙用

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

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

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

1.1.2 为什么要用lvs

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

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

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

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

那为什么要用lvs呢?

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

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

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

1.2 LVS介绍


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

1.2.1 相关参考资料

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

相关中文资料

LVS项目介绍           http://www.linuxvirtualserver.org/zh/lvs1.html

LVS集群的体系结构     http://www.linuxvirtualserver.org/zh/lvs2.html

LVS集群中的IP负载均衡技术  http://www.linuxvirtualserver.org/zh/lvs3.html

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操作)

步骤1:在eth0网卡绑定VIP地址(ip)

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

步骤3:设置tcp、tcpfin、udp链接超时时间(--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浏览器配置操作

步骤1:在lo网卡绑定VIP地址(ip)

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

命令集:

ip addr add 10.0.0.13/32 dev lo

cat >>/etc/sysctl.conf RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.0.13:80 wrr persistent 50

-> 10.0.0.17:80                 Route   1      0          0

-> 10.0.0.18:80                 Route   1      0          0
# 检查虚拟ip
[root@lb03 ~]# ip a s eth0
2: eth0:

mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:de:7c:97 brd ff:ff:ff:ff:ff:ff

inet 10.0.0.15/24 brd 10.0.0.255 scope global eth0

valid_lft forever preferred_lft forever

inet 10.0.0.13/24 scope global secondary eth0

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fede:7c97/64 scope link

valid_lft forever preferred_lft forever

1.8.5 在web服务器上进行配置

(在web03/web04同时操作下面步骤)
步骤1:在lo网卡绑定VIP地址(ip)
步骤2:修改内核参数抑制ARP响应
ip addr add 10.0.0.13/32 dev lo

cat >>/etc/sysctl.conf


    关注 马哥Linux运维


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册