高并发场景 LVS 安装及高可用实现(收藏)

本文详细介绍了LVS(Linux Virtual Server)的负载均衡概念、为什么使用LVS,以及LVS的DR(直接路由)模式。通过集群搭建步骤、配置与测试,展示了LVS如何扩展网络设备和服务器的负载能力。此外,文章还探讨了LVS与其他负载均衡方案如Nginx的对比,以及LVS的NAT、TUN和FULLNAT工作模式。最后,提到了LVS与Keepalived结合实现高可用方案,并提供了排错思路和相关资源链接。
摘要由CSDN通过智能技术生成

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/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集群环境说明

主机名

IP地址

软件

系统版本

lb03

10.0.0.15

lvs keepalived

CentOS Linux release 7.4.1708

lb04

10.0.0.16

lvs keepalived

CentOS Linux release 7.4.1708

web03

10.0.0.18

tomcat

CentOS Linux release 7.4.1708

web04

10.0.0.17

tomcat

CentOS Linux release 7.4.1708

主机说明

[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

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)

参数

(短格式)

参数

(长格式)

参数说明

-A

--add-service

在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。

-E

--edit-service

编辑内核虚拟服务器表中的一条虚拟服务器记录。

-D

--delete-service

删除内核虚拟服务器表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值