当前位置: 首页 > news >正文

LVS详解:构建高性能Linux负载均衡集群

#作者:张桐瑞

文章目录

  • 集群 Cluster
  • 一、集群类型
    • 1、负载均衡集群
    • 2、高可用集群
    • 3、高性能计算集群
  • 二、LVS ------ Linux Virtual Service
    • 1、调度算法 scheduler
    • 2、LVS工作模式
    • 3、NAT模式核心要素
    • 4、NAT模式的工作原理
  • 三、DR模式 ---- Direct Route 直接路由模式
    • 1、核心要素
    • 5、在调度器上配置VIP
    • 6、创建虚拟服务
    • 7、测试访问
  • 四、持久性连接

集群 Cluster

一、集群类型

负载均衡集群Load BalanceLB
高可用集群High AvalibilityHA
高性能计算集群High Performace ComputeHPC

1、负载均衡集群

作用: 提高业务的并发能力
在这里插入图片描述

2、高可用集群

作用: 解决单点故障、提高可用性
可用性:
运行时间/(运行时间+故障修复时间)

在这里插入图片描述

3、高性能计算集群

作用: 提高数据的处理能力
在这里插入图片描述

二、LVS ------ Linux Virtual Service

lvs被集成在linux内核,速度快
ipvsadm管理工具

1、调度算法 scheduler

  1. rr round robin 轮询

  2. wrr 基于权重的轮询 weight

    会话保持方案:
    a. 会话共享存储
    b. 换调度算法

  3. lc least connection 最少连接

  4. wlc 基于权重的最少连接 默认

  5. sh source hash 源hash
    根据客户端IP计算hash值,相同hash值的请求转发到同一个后端服务器
    一定程度可以解决会话保持问题

  6. dh destination hash 目的地址hash
    根据目的IP地址计算hash值,后续所有请求定位同一个目的IP上
    适用于后端是缓存服务器,提升缓存命中率

2、LVS工作模式

NAT模式
在这里插入图片描述
DR模式
在这里插入图片描述
TUN模式

3、NAT模式核心要素

请求、响应都要经过调度器转发
DIP、VIP要分属不同的网络
调度器开启路由转发功能
所有real server网关要指向DIP

# vim /etc/sysctl.conf net.ipv4.ip_forward = 1

4、NAT模式的工作原理

在这里插入图片描述
在这里插入图片描述
案例:基于NAT模式配置web集群
在这里插入图片描述

  1. 所有服务器关闭防火墙、SELinux、时间同步

  2. 在调度器上事先安装ipvsadm、所有real server事先安装httpd用于测试

# yum install -y ipvsadm# yum install -y httpd

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

  1. 在调度器上分别配置VIP、DIP
[root@lvs ~]# ip addr show
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:8f:c3:68 brd ff:ff:ff:ff:ff:ffinet 192.168.146.100/24 brd 192.168.146.255 scope global noprefixroute ens333: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:8f:c3:72 brd ff:ff:ff:ff:ff:ffinet 192.168.177.254/24 brd 192.168.177.255 scope global noprefixroute ens37

在这里插入图片描述

  1. 所有real server配置地址、网关指向DIP
[root@web01 ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.177.10  netmask 255.255.255.0  broadcast 192.168.177.255inet6 fe80::20c:29ff:fe14:788e  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:14:78:8e  txqueuelen 1000  (Ethernet)RX packets 9863  bytes 13214062 (12.6 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3421  bytes 213516 (208.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@web01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.177.254 0.0.0.0         UG    100    0        0 ens33
192.168.177.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
  1. 调度器开启路由转发
[root@lvs ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1
  1. 创建虚拟服务
[root@lvs ~]# ipvsadm -A -t 192.168.146.100:80 -s rr [root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.146.100:80 rr

-A:添加一条新的虚拟服务器记录
-t:说明虚拟服务器提供的是TCP服务
-s:使用的调度算法
-m:指定LVS的工作模式为NAT模式
-g:指定LVS的工作模式为直接路由模式
-D:删除内核虚拟服务器表中的一条虚拟服务器记录
-d:删除一条虚拟服务器记录中的某条真实服务器记录
-a:在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录
-n:输出IP地址和端口的数字形式
-r:真实的服务器
-R:恢复虚拟服务器规则
-S:保存虚拟服务器规则

  1. 添加real server
[root@lvs ~]# ipvsadm -a -t 192.168.146.100:80 -r 192.168.177.10:80 -m   //-m nat模式
[root@lvs ~]# ipvsadm -a -t 192.168.146.100:80 -r 192.168.177.20:80 -m 
  1. 查看负载均衡表
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.146.100:80 rr-> 192.168.177.10:80            Masq    1      0          0         -> 192.168.177.20:80            Masq    1      0          0   
  1. 测试访问
    http://192.168.146.100/
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.146.100:80 rr-> 192.168.177.10:80            Masq    1      0          3         -> 192.168.177.20:80            Masq    1      0          3         [root@lvs ~]# ipvsadm -L -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:14  TIME_WAIT   192.168.146.1:55276 192.168.146.100:80 192.168.177.20:80
TCP 00:30  TIME_WAIT   192.168.146.1:56266 192.168.146.100:80 192.168.177.20:80
TCP 00:55  TIME_WAIT   192.168.146.1:60898 192.168.146.100:80 192.168.177.10:80
TCP 01:01  TIME_WAIT   192.168.146.1:65024 192.168.146.100:80 192.168.177.10:80
TCP 01:52  TIME_WAIT   192.168.146.1:51311 192.168.146.100:80 192.168.177.20:80
  1. 保存、恢复规则
# ipvsadm -S > /opt/web_rule# ipvsadm -R < /opt/web_rule

三、DR模式 ---- Direct Route 直接路由模式

1、核心要素

请求经过调度器、响应由real server发送
real server的网关要指向真实网关,确保网络通畅
VIP、DIP要属于同一网络
在所有real server配置VIP
arp_ignore=1
只让主机回复关于物理网卡的ARP响应
arp_announce=2
让主机以适当的地址发送响应
real server的操作只能是类linux系统

案例:基于DR模式配置web集群
在这里插入图片描述
1、所有real server配置VIP(掩码必须32位 lo虚拟网卡)

[root@lvs ~]# ip addr add dev lo 192.168.140.100/32[root@lvs ~]# ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.140.100/32 scope global lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever

2、所有real server修改arp内核参数

[root@localhost ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2[root@localhost ~]# sysctl -p

3、所有real server安装配置httpd

5、在调度器上配置VIP

[root@lvs ~]# ip addr add dev lo 192.168.140.100/32[root@lvs ~]# ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet 192.168.140.100/32 scope global lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever

6、创建虚拟服务

[root@lvs ~]# yum install -y ipvsadm.x86_64  [root@lvs ~]# ipvsadm -A -t 192.168.140.100:80 -s rr   //调度算法rr[root@lvs ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.140.11:80 -g   //-g  DR模式
[root@lvs ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.140.12:80 -g[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.140.100:80 rr-> 192.168.140.11:80            Route   1      0          0         -> 192.168.140.12:80            Route   1      0          0     

7、测试访问

[root@redis_server ~]# curl 192.168.140.100
<h1> web01</h1>
[root@redis_server ~]# curl 192.168.140.100
<h1> web02 </h1>[root@redis_server ~]# curl 192.168.140.100
<h1> web01</h1>
[root@redis_server ~]# curl 192.168.140.100
<h1> web02 </h1>

四、持久性连接

作用:
在指定的时间范围内, 同一个客户端的请求会被转发到同一个real server
会话持久

[root@lvs ~]# ipvsadm -E -t 192.168.140.100:80 -s rr -p 300[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.140.100:80 rr persistent 300-> 192.168.140.11:80            Route   1      0          0         -> 192.168.140.12:80            Route   1      0          0      
http://www.dtcms.com/a/390648.html

相关文章:

  • 【Linux网络编程】网络层协议-----IP协议
  • 电池AH的定义与WH关系
  • 谙流 ASK 技术解析(四):负载均衡引擎
  • 乾元通渠道商中标国家华中区域应急救援中心应急救援装备采购项目
  • 网络原理补充——NAT/NAPT、代理服务、内网穿透、交换机
  • 深入 HTTP 协议:剖析 1688 商品详情 API 的请求构造与签名机制
  • 共用体union和大小端模式
  • 2022年下半年 系统架构设计师 案例分析
  • LeetCode 面试经典 150_哈希表_有效的字母异位词(42_242_C++_简单)
  • go webrtc - 3 工程演示
  • JVM(五)-- 执行引擎
  • 微算法科技(NASDAQ:MLGO)量子架构搜索技术:突破变分量子算法性能瓶颈,实现量子计算的鲁棒优化
  • 海亮科技亮相第十一届亚教展,“教育 + AI”赋能县域教育振兴
  • JMeter的配置元件
  • Charles与Postman、JMeter结合使用教程:高效接口调试与性能测试方案
  • 【Haddop】Hive的离线分析与Sqoop的数据集成
  • 嵌入式 Linux 基础入门笔记(1)
  • Starlink 2.0与3GPP NTN技术对比分析:颠覆性优势与产业格局重构
  • 鸿蒙Next用户文件管理全解析:安全、高效、跨设备的未来体验
  • 简形电力JX2202 智能测试系统:重构新能源电力检测效率标准
  • AI识别视频中动物与人物的技术深度解析
  • iOS 上架完整流程指南 苹果应用发布步骤、App Store 上架流程
  • MySQL-CRUD 操作及常用查询语法详解
  • 玳瑁的嵌入式日记---0919(ARM)
  • Objective-C —— APIs declaration 自定义
  • 【XTDrone】笔记5:control文件详解
  • 抓包的那些事,抓包的原理、常见场景、工具比较与实战排查流程(抓包步骤、iOS 抓包、HTTPS 抓包技巧)
  • 软件工程实践八:Web 前端项目实战(SSE、Axios 与代理)
  • 【常见集合】ArrayList与LinkedList
  • IPD流程实战:如何跨领域应用IPD思维?