LVS负载均衡群集

LVS 负载均衡群集


前言:在庞大的互联网中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡以及高可用的性能需求;除了使用使用价格昂贵的小型或大型服务器来运行;使用多台相对廉价的普通服务器搭建服务群集,通过整合多台服务器使用LVS来达到服务器高可用和负载均衡,并于同一个IP地址对外提供相同服务

实验数据流向,部署一个NFS共享存储,

一、群集的含义

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

1.集群概述
  • Cluster,集群、群集为解决某个特定问题将多台计算机组合起来形成的单个系统
  • 由多台主机,但对外只表现为一个整体
2.LVS模型

在这里插入图片描述

在这里插入图片描述

3.系统性能扩展方式

应用场景出现高并发的解决方案

①:添加配置:加CPU、内存、带宽、SSD向上扩展只能解决一时问题,不能解决持久的 纵向

②、添加服务器:可添加多台服务器,例:4台服务器,使用多台服务器同时为用户提供服务,而这一种解决方法则称为横向扩展或向外扩展 横向

  • Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务器
  • Scale Oute:向外扩展,增加设备,并行地运行多个服务调度分配问题,Cluster

单台计算机的性能是有上限的,不可能无限制地垂直扩展,多核CPU意味着即使是单台计算机也可以并行的

4.1企业群集分类
  • 负载均衡群集(代理前端 nginx)
  • 高可用群集(单点故障 冗余)
  • 高性能运算群集(分布式)
4.2负载均衡群集(LB)

LB:Load Balancing 负载均衡,由多个主机组成,每个主机只承担一部分访问请求

  • 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
  • LB的负载分配依赖于主节点的分流算法

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

4.3 高可用群集
  • 提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务器的连续性,达到高可用(HA)的容错效果
  • HA的工作方式包括双工和主从两种模式
4.4高性能运算群集
  • 提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
  • 高性能依赖于"分布式运算"、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

二、负载均衡群集

1.负载均衡的结构

①、第一层,负载调度器(Load Balancer或Director)

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

②、第二层服务器池(Server Pool)

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

后端的真实服务器(服务池);upstream tomcat_server{ip:port}+location 进行匹配跳转到upstream地址池中也是服务器池所映射的后端节点tomcat

③、共享存储(Share Storage)

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

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

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

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

地址转换(NAT模式)

IP隧道(TUN模式)

直接路由(DR模式)

3.NAT模式(地址转换)

在这里插入图片描述

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
4.TUN模式
  • IP Tunnel,简称TUN模式
  • 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
  • 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
5.DR模式
  • Direct Routing,简称DR模式
  • 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而实与调度器位于同一个物理网络
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道
NAT模式:只需要一个公网IP地址,是最易用的一种负载模式,安全行较好
TUN模式和DR模式:负载能力强大、适用范围广、节点安全行较差

三、LVS虚拟服务器

LVS:LVS是Linux Virtual Server的简写,也就是Linux虚拟服务器,是一个虚拟的服务器集群系统,针对Linux内核的负载均衡解决方案,1998年5越有我国的章文嵩博士创建;

1.LVS的组成及作用

①ipvs(ip virtual server):LVS是基于内核态的netfilter框架实现的IPVS功能,工作在内核态,用户配置VIP等相关信息并传递到IPVS就需要用到ipvsadm工具

②ipvsadm:ipvsadm是LVS用户态的配套工具,可以实现VIP和RS的增删改查功能,是基于netlink或rw socket方式与内核LVS进行通信的,如果LVS类比于netfilter,那么ipvsadm就是类似iptables工具的地位

作用:

  • 主要用于多服务器的负载均衡;
  • 工作在网络层,可实现高性能,高可用的服务器集群技术;
  • 廉价,可把许多低性能的服务器组合在一起形成一个超级服务器;
  • 易用,配置简单,有多种负载均衡的方法;
  • 稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果
  • 可扩展性好;
2.LVS与Nginx功能对比

①LVS比Nginx具有更强的抗负载能力,性能高,对内存和CPU资源消耗较低;

②LVS工作在网络层,具体流量由操作系统内核进行处理,Nginx工作在应用层,可针对HTTP应用实施一些分流策略;

③LVS安装配置比较复杂,网络依赖性大,稳定性高,Nginx安装配置较简单,网络依赖性小;

④LVS不支持正则匹配处理,无法实现动静分离效果,Nginx可实现这方面的功能

⑤LVS适用的协议范围广,Nginx仅支持HTTP、HTTPS、Email协议,适用范围小;

3.软件负载均衡的种类

①Nginx:支持4层/7层负载均衡,支持HTTP、Email协议;

②LVS:纯4层负载均衡,运行在内核态,性能是软件负载均衡中最高的

③HAproxy:是7层负载均衡软件,支持7层规则的设置,性能也不错

优点:简单、灵活(直接在Linux操作系统上安装上述所使用的软件负载均衡,部署及维护较简单,4层和7层负载均衡可根据业务进行选择也可根据业务特点,比较方便进行扩展及定制功能);

四、LVS的负载调度算法

**轮询(Round Robin):**将收到的访问请求顺序轮流分配给群集中的各节点真实服务器中,不管服务器实际的连接数和系统负载

**加权轮询(Weighted Round Robin):**根据真实服务器的处理能力轮流分配收到的访问请求,调度器可自动查询各节点的负载情况,并动态跳转其权重,保证处理能力强的服务器承担更多的访问量

**最少连接(Least Connections):**根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数少的节点,如所有服务器节点性能都均衡,可采用这种方式更好的均衡负载

**加权最少连接(Weighted Least Connections):**服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大的活动连接负载

五、LVS涉及相关的术语及说明

DS(Director Server)前端负载均衡节点服务器
RS(Real Server)后端真实服务器
CIP(Client IP)客户端IP地址
VIP(Virtual IP)负载均衡对外提供访问的IP地址,一般负载均衡IP都会通过Virtual IP实现高可用
RIP(RealServer IP)负载均衡后端的真实服务器IP地址
DIP负载均衡与后端服务器通信对的IP地址
CMAC客户端MAC地址,LVS连接的路由器的MAC地址
VMAC负载均衡LVS的VIP对应的MAC地址
DMAC负载均衡LVS的DIP对应的MAC地址
RMAC后端真实服务器的RIP地址对应的MAC地址

六、ipvsadm工具

LVS集群创建与管理

创建虚拟服务器–>添加、删除服务器节点–>查看群集及节点情况–>保存负载分配策略

ipvsadm功能与选项说明
ipvsadm功能与选项说明
选项功能
-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a表示添加真实服务器(节点服务器)
-d删除某一个节点
-t指定VIP地址及TCP端口
-r指定RIP地址及TCP端口
-m表示使用NAT群集模式
-g表示使用DR模式
-i表示使用TUN模式
-w设置权重(权重为0时表示暂停节点)
-p 60表示保持长连接60秒
-l列表查看LVS虚拟服务器(默认为查看所有
-n已数字形式显示地址、端口等信息,常与"-l"选项组合使用,ipvsadm -lnjiu

七、NAT模式LVS负载均衡群集部署

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

主机操作系统IP地址工具/软件/安装包
负载均衡器CentOS7内网:192.168.50.128
外网:10.0.0.1
iptables、iptables-untils、ipvsadm
NFS服务器CentOS7192.168.50.158rpcbind、nfs-utils
Web节点服务器1CentOS7192.168.50.168rpcbind、nfs-utils、httpd
Web节点服务器2CentOS7192.168.50.188rpcbind、nfs-utils、httpd
客户端Windows1010.0.0.12

在这里插入图片描述

1.部署共享存储(NFS服务器:192.168.50.158)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind

systemctl start rpcbind.service
systemctl start nfs.service

systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/lic
mkdir /opt/kiki

chmod 777 /opt/lic 
chmod 777 /opt/kiki

vim /etc/exports
/usr/share *(ro,sync)
/opt/lic 192.168.223.0/24(rw,sync)
/opt/kiki 192.168.223.0/24(rw,sync)

exportfs -rv

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.配置Web节点服务器(192.168.50.168、192.168.50.188)
两台机器一样的配置

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

yum -y install nfs-utils rpcbind
showmount -e 192.168.223.10

systemctl start rpcbind
systemctl enable rpcbind

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.Web1 配置(192.168.50.188)
 mount.nfs 192.168.50.158:/opt/boss /var/www/html
 df -h
 
 echo "this is boss" > /var/www/html/index.html
 cat /var/www/html/index.html

在这里插入图片描述

在NFS共享服务器192.168.50.158的/opt/boss目录下可以看到index.html文件,以及同步后的内容
在这里插入图片描述

修改网卡信息

在这里插入图片描述

4.web2(192.168.50.168)
mount.nfs 192.168.50.158:/opt/zxc /var/www/html
 df -h
 
 echo "this is zxc" > /var/www/html/index.html
 cat /var/www/html/index.html

在这里插入图片描述
在这里插入图片描述

5.配置负载调度器(内网关ens33:192.168.50.128,外网关ens37:10.0.0.1)
5.1下载所需工具并配置网卡
#下载工具包
yum install -y iptables iptables-utils
yum install -y ipvsadm

#修改网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/sysconfig/network-scripts/ifcfg-ens37

#关闭防火墙和增强机制
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
或
echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.223.0/24 -o ens37 -j SNAT --to-source 10.0.0.1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.加载LVS内核模块
modprobe ip_vs          #加载 ip_vs模块
cat /proc/net/ip_vs       #查看 ip_vs版本信息

在这里插入图片描述

6.2安装ipvsadm管理工具
yum -y install ipvsadm

在这里插入图片描述

6.3启动服务器前必须保存负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
或
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

在这里插入图片描述

6.4配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C          #清除原有策略
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.184.30:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.184.40:80 -m
ipvsadm           #启用策略

ipvsadm -ln         #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm           #保存策略

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.浏览器测试

在一台IP为10.0.0.12的客户机使用浏览器访问http://10.0.0.1,不断刷新浏览器测试负载均衡效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

上述文章内容,可以简单认识到LVS、LVS的组成及作用,LVS负载均衡集群的类型、等等;最后做了一个LVS的NAT模式负载均衡的群集部署,可以作为一个参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值