LVS负载均衡群集

第一章

本章结构

  • 理解负载均衡群集的原理
  • 掌握LVS-NAT的部署

企业群集应用概述

群集的含义

Cluster,集群、群集
由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名与IP地址),相当于一台大型计算机。

问题

互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求

解决方法

  • 使用价格昂贵的小型机、大型机
  • 使用普通服务器构建服务群集

通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并以同一个IP地址对外提供相同的服务。

在企业中常用的一种群集技术——LVS (Linux Virtual Server,Linux虚拟服务器)

企业群集分类 2-1

根据群集所针对的目标差异,可分为三种类型

  • 负载均衡群集
  • 高可用群集
  • 高性能运算群集

负载均衡群集(Load Balance Cluster)

提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能

LB的负载分配依赖于主节点的分流算法

访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”"反向代理"等

企业群集分类 2-2

高可用群集(High Availability Cluster)

提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果

HA的工作方式包括双工和主从两种模式

高性能运算群集(High Performance Computer Cluster)

提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力

高性能依赖于"分布式运算"、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

负载均衡群集架构

负载均衡的结构

第一层,负载调度器(Load Balancer或Director)
访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。

第二层,服务器池(Server Pool)
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。

第三层,共享存储(Share Storage)
为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

负载均衡群集工作模式分析

负载均衡群集是目前企业用得最多的群集类型

群集的负载调度技术有三种工作模式

  • 地址转换
  • IP隧道
  • 直接路由

NAT模式

地址转换
Network Address Translation,简称NAT模式
类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口

服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

TUN模式

IP隧道
IP Tunnel,简称TUN模式
采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器

服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

DR模式

直接路由
Direct Routing,简称DR模式
采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络

负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

关于LVS虚拟服务器 3-1

Linux Virtual Server

针对Linux内核的负载均衡解决方案
1998年5月,由我国的章文嵩博士创建
官方网站:http://www.linuxvirtualserver.org/

[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

确认内核对LVS的支持

关于LVS虚拟服务器 3-2

LVS的负载调度算法

轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载

加权轮询(Weighted Round Robin)
根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多

保证性能强的服务器承担更多的访问流量

关于LVS虚拟服务器 3-3

LVS的负载调度算法

最少连接(Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点

加权最少连接(Weighted Least Connections)
在服务器节点的性能差异较大时,可以为真实服务器自动调整权重

性能较高的节点将承担更大比例的活动连接负载

使用ipvsadm工具

LVS群集创建与管理

NFS共享存储服务 3-1

Network File System,网络文件系统

依赖于RPC(远端过程调用)
需安装nfs-utils、rpcbind软件包
系统服务:nfs、rpcbind
共享配置文件:/etc/exports

NFS共享存储服务 3-2

使用NFS发布共享资源

  • 安装nfs-utils、rpcbind软件包
  • 设置共享目录
  • 启动NFS服务程序
  • 查看本机发布的NFS共享目录

NFS共享存储服务 3-3

在客户机中访问NFS共享资源

  • 安装rpcbind软件包,并启动rpcbind服务
  • 手动挂载NFS共享目录
  • fstab自动挂载设置

案例:LVS-NAT部署实战

案例环境

LVS调度器作为Web服务器池的网关,LVS两块网卡,分别连接内外网,使用轮询(rr)调度算法

部署步骤

  • 加载ip_vs模块,安装ipvsadm工具
  • 开启路由转发
  • 新建LVS虚拟服务器并添加节点服务器
  • 配置节点服务器
  • 建立测试网站
  • 挂载NFS共享存储
  • 建立测试网页
  • 保存规则并测试

本章总结

  • 群集的常见类型
  • 负载均衡群集的分层结构、工作模式、调度算法
  • ipvsadm管理工具
  • 构建NFS共享存储服务
  • 构建LVS-NAT负载均衡群集

本章实验:构建LVS-NAT群集 2-1

案例环境

LVS调度器作为Web服务器池的网关
使用轮询(rr)调度算法

本章实验:构建LVS-NAT群集 2-2

需求描述

  • LVS调度器的配置
  • Web节点服务器的配置
  • 访问http://172.16.16.172/,并验证群集分配情况

部署LVS-DR群集

第二章

本章结构

  • 理解LVS-DR工作原理
  • 掌握LVS-DR部署过程

LVS-DR数据包流向分析 5-1

为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-4

LVS-DR数据包流向分析 5-2

Client向目标VIP发出请求,Director(负载均衡器)接收IP包头及数据帧头信息

LVS-DR数据包流向分析 5-3

Director根据负载均衡算法选择RealServer_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送IP包头及数据帧头信息

LVS-DR数据包流向分析 5-4

RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealServer事先绑定了VIP),于是处理这个报文。随后重新封装报文,发送到局域网IP包头及数据帧头信息

LVS-DR数据包流向分析 5-5

Client将收到回复报文。Client认为得到正常的服务,而不会知道是哪一台服务器处理的

注意:如果跨网段,则报文通过路由器经由Internet返回给用户

LVS-DR中的ARP问题 5-1

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址
在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

LVS-DR中的ARP问题 5-2

对节点服务器进行处理,使其不响应针对VIP的ARP请求
使用虚接口lo:0承载VIP地址
设置内核参数arp_ignore=1:系统只响应目的IP为本地IP的ARP请求

LVS-DR中的ARP问题 5-3

RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址
发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址
如:ens33接口

LVS-DR中的ARP问题 5-4

路由器收到ARP请求后,将更新ARP表项
原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址

LVS-DR中的ARP问题 5-5

问题
路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效

解决方法
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

解决ARP的两个问题的设置方法

修改/etc/sysctl.conf文件

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

案例:构建LVS-DR群集 2-1

案例环境

为了进一步提高公司网站的负载能力,公司决定扩展现有的网站平台,基于LVS构筑负载均衡群集。考虑到群集的访问效率,管理员准备采用LVS群集的DR模式,共享存储设备存放在内部专有网络中

案例:构建LVS-DR群集 2-2

需求描述

一台LVS调度器、四台节点服务器,均配置双网卡:第一块网卡ens33连接至Internet,位于192.168.10.0/24网段,第二块网卡ens37连接至内网,位于192.168.7.0/24网段

共享存储由一台Linux服务器承担,将目录/var/www/html发布为NFS可写共享。只允许LVS调度器、节点服务器访问,以root用户挂载时允许写入

Web群集的地址为192.168.10.72,通过此地址访问公司的Web站点

调度器配置操作步骤

  • 为ens33、ens37配置IP地址,为ens33:0配置VIP地址
  • 安装ipvsadm软件包,为VIP创建虚拟服务器,使用rr算法
  • 为虚拟服务器添加四个Web节点,采用DR工作模式,权重均设为1
  • 保存LVS负载分配策略,并通过系统服务ipvsadm进行管理

配置节点服务绑定VIP

LVS-DR中,四台节点服务器要配置绑定VIP地址
VIP地址仅用作Web响应数据包的源地址,并不监听客户机的访问请求
为ens33、ens37配置IP地址,为lo:0配置VIP地址,并添加路由记录,将访问VIP的数据限制在本地

节点服务配置抑制ARP响应

修改/etc/sysctl.conf文件

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

节点服务器配置测试网站

在四台节点服务器上安装配置并启用httpd服务器,分别创建测试网页,测试网页内容要不相同,以区别不同的节点服务器

集群访问测试 3-1

从Internet中访问http://192.168.10.72/,确认访问正常,可使用不同的客户端进行访问测试,可看到网页不一样的情况

在LVS调度器中执行ipvsadm -ln命令查看群集节点状态

在LVS调度器中执行ipvsadm -lnc命令查看负载连接及分配情况

集群访问测试 3-2

配置NFS共享存储

  • 为ens33网卡配置IP地址,创建文件夹/var/www/html
  • 安装ntf-utils、rpcbind软件包
  • 修改/etc/exports配置文件,将/var/www/html发布为可写共享,保持root权限
  • 依次启动rpcbind、nfs服务,确认共享结果

集群访问测试 3-3

将共享目录挂载到本地的/var/www/html目录
在其中一台Web节点中,切换到/var/www/html目录,创建新的测试网页
再次验证对LVS群集的访问,查看页面的访问效果

本章总结

  • LVS-DR数据包流向分析
  • LVS-DR中的ARP问题
  • LVS-DR调度器配置
  • LVS-DR节点服务器配置
  • LVS-DR群集测试

本章实验:构建LVS-DR群集 2-1

实验环境

为了提高网站负载能力,需要构建Web群集平台
网页文档存放在内网,各Web节点公用

本章实验:构建LVS-DR群集 2-2

需求描述

  • 一台LVS调度器、四台节点服务器,均配置双网卡
  • 在内网提供NFS可写共享:/var/www/html
  • Web群集的地址为172.16.16.172

LVS+Keepalived群集

第三章

本章结构

  • 理解Keepalived实现原理
  • 掌握Keepalived的部署
  • 掌握LVS+Keepalived高可用集群部署

Keepalived案例分析

企业应用中,单台服务器承担应用存在单点故障的危险
单点故障一旦发生,企业服务将发生中断,造成极大的危害

Keepalived工具介绍

专为LVS和HA设计的一款健康检查工具

  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)
  • 官方网站:http://www.keepalived.org/

Keepalived实现原理剖析

Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能

VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案
由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

Keepalived案例讲解

Keepalived可实现多机热备,每个热备组可有多台服务器
双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器

实现基于Web服务的双机热备

  • 漂移地址:192.168.10.72
  • 主、备服务器:192.168.10.73、192.168.10.74
  • 提供的应用服务:Web

Keepalived安装与启动

在LVS群集环境中应用时,也需用到ipvsadm管理工具

  • YUM安装Keepalived
  • 启用Keepalived服务

配置Keepalived master服务器 3-1

Keepalived配置目录位于/etc/keepalived/

  • keepalived.conf是主配置文件
  • global_defs {…} 区段指定全局参数
  • vrrp_instance 实例名称 {…} 区段指定VRRP热备参数
  • 注释文字以"!"符号开头
  • 目录samples,提供了许多配置样例作为参考

配置Keepalived master服务器 3-2

常用配置选项

  • router_id HA_TEST_R1:本路由器(服务器)的名称
  • vrrp_instance VI_1:定义VRRP热备实例
  • state MASTER:热备状态,MASTER表示主服务器
  • interface ens33:承载VIP地址的物理接口
  • virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致

配置Keepalived master服务器 3-3

常用配置选项

  • priority 100:优先级,数值越大优先级越高
  • advert_int 1:通告间隔秒数(心跳频率)
  • auth_type PASS:认证类型
  • auth_pass 123456:密码字串
  • virtual_ipaddress { vip}:指定漂移地址(VIP),可以有多个

配置Keepalived slave服务器

Keepalived备份服务器的配置与master的配置有三个选项不同

  • router_id:设为自有名称
  • state:设为BACKUP
  • priority:值低于主服务器

其他选项与master相同

Keepalived双机热备效果测试

测试双机热备的效果
主、备机均启用Web服务,设置不同内容
先后禁用、启用主服务器的网卡

执行的测试

  • 测试1:使用ping检测192.168.10.72的连通性
  • 测试2:访问http://192.168.10.72,确认可用性及内容变化
  • 测试3:查看日志文件/var/log/messages中的变化

案例:负载均衡+高可用群集

Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备

使用Keepalived构建LVS群集更加简便易用

主要优势

  • 对LVS负载调度器实现热备切换,提高可用性
  • 对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入

案例拓扑

在基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,三台以上的节点服务器

配置主调度器

  • 全局配置、热备配置
  • 应为主、从调度器实现热备功能,漂移地址使用LVS群集的VIP地址
  • Web服务器池配置

在Keepalieved的热备配置基础上,添加"virtual_server VIP 端口 { … }"区段来配置虚拟服务器
包括对负载调度算法、群集工作模式、健康检查间隔、真实服务器地址等参数的设置

重新启动Keepalived服务

配置从调度器

从调度器的配置与主调度器基本相同

  • 包括全局配置、热备配置、服务器池配置
  • 只需要调整router_id、state、priority参数

配置完成以后重启Keepalived服务

配置Web节点服务器

在DR模式的LVS集群中,除了需要调整/proc系统的ARP响应参数以外,还需要为虚拟接口lo:0配置VIP地址,并添加一条到VIP的本地路由

测试群集

客户机浏览器中,能够通过群集的VIP地址(192.168.10.72)正常访问Web页面内容

当主、从调度器任何一个失效时,Web站点仍然可以访问

只要服务器池有两台及以上的真实服务器可用,就可以实现访问量的负载均衡

测试群集

通过主、从调度器的/var/log/messages日志文件,可以跟踪故障切换过程

可执行"ipvsadm -ln"、"ipvsadm -lnc"等操作命令查看负载分配情况

本章总结

  • Keepalived的主要功能
  • Keepalived主服务器与从服务器的区别
  • 构建负载均衡+高可用群集

本章实验:LVS+HA网站服务群集

实验环境

优化现有的LVS-DR群集,增加可用性
VRRP

本章实验:LVS+HA网站服务群集

需求描述

  • 改造现有的LVS-DR群集,增加一台备用调度器
  • 主、从调度器实现热备切换
  • 针对Web节点的状态变化启用邮件通知功能
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐