文章目录
一、负载均衡基本概述
在网站创立初期,一般都使用单台机器对台提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。
然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入 www.taobao.com 的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
常用负载均衡工具分为硬件和软件两种。软件负载均衡在互联网领域大量使用。常用的软件负载均衡软件有 Nginx、LVS、HaProxy 等。软件负载解决的两个核心问题是:选谁、转发,其中最著名的是 LVS(Linux Virtual Server)。
二、LVS概述
LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案。使用 LVS 技术要达到的目标是:通过 LVS 提供的负载均衡技术和 Linux 操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。
1. 工作过程
(1)当用户从客户端访问公司的外部负载均衡服务器,用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器。
(2)终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的, 整个集群对用户而言都是透明的。
(3)根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式,TUN模式,DR模式。
2. 调度算法
LVS的调度算法决定了如何在集群节点之间分布工作负荷,当调度器收到来自客户端访问VIP的集群服务的入栈请求时,调度器必须决定那个集群节点应该处理请求。
一般的网络服务,如http,mail,mysql等常用的LVS调度算法为基本轮询调度rr、加权最小连接调度wlc、加权轮询调度wrr。
算法名称 | 说明 |
---|---|
rr | 轮询调度(Round-Robin),将请求一次分配给不同的RS,也就是均摊,适用于处理真实服务器性能相差不大的情况 |
wrr | 加权轮询调度(Weighted Round-Robin),根据不同RS的权值分配任务,权值较高的RS将优先获取任务,分配的连接数比权值低的RS更多,相同权值的RS获得相同数目的连接数 |
wlc | 加权最小连接数调度(weighted leastconnection),会根据连接数和权值的不比值来算,最小比值的真实服务器将会获取下一个链接。 |
3. LVS核心组件与模块
LVS已经集成到了linux内核模块中,但在整个LVS环境又分为内核层和用户层,内核层负责内核算法的实现,用户层需要安装ipsadm工具,通过命令将管理员需要的工作模式与实现算法传递给内核。
4.引入LVS-DR:示例搭载
示例说明:实验环境为RHEL7,LVS工作模式为DR模式
示例目的:用户在外部客户端访问一个IP地址(VIP),通过反复刷新网页,每次出现的网页不同则表示成功。网页的不同可以通过设置两台RS的默认发布页面来实现。
实验设备 | 调度器a | 真实服务器2 | 真实服务器3 | 外部客户端 |
---|---|---|---|---|
IP | 192.168.1.136 | 192.168.1.102 | 192.168.1.103 | 192.168.1.104 |
主机名 | servera | server2 | server3 | workstation |
为了便于观测实验,两台真实服务器上,更改RS的默认发布页面:
1. VS配置
(1)安装ipsadm工具:yum install -y ipvsadm
(2)给网卡上添加一个集群虚拟服务的IP地址,即VIP: