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

C05S08-LVS负载均衡

一、LVS

1. LVS概述

LVS(Linux Virtual Server、Linux虚拟服务)是一种基于Linux系统集群的负载均衡方案,属于四层的负载均衡。

  • 集群:将相同组件部署在不同的服务器上,提供统一的服务,以及同样的功能,各台服务器的性能大致相同。
  • 分布式:把不同组件部署在不同服务器上,组件之间依靠网络通信,实现定制化功能。

2. LVS相关概念

系统性能的扩展方式

  • 单节点扩展:
    • 垂直扩展,向上扩展,提升计算机的性能(硬件性能),性能提升有限。
    • 水平扩展,向外扩展,增加设备的数量提供性能,也就是集群的由来。

集群类型

  • 负载均衡
  • HA(高可用)主要有两种:负载均衡高可用,主备高可用。

系统的可靠性指标

  • MTBF(平均无故障时间)
  • MTTR(平均故障恢复时间)
  • 指标计算方式:MTBF/(MTBF+MTTR)*100%,指标范围越接近1越好。
  • 停机时间通常不会算在故障时间内,计划停机时间不计算在故障范围内,计划外停机时间计算在故障时间内。

LVS常见术语

  • VS(Virtual Server):LVS的逻辑名字,外部访问LVS的IP地址和端口。
  • DS(Director Server):LVS集群的主服务器、调度器,是集群的核心。接受客户端的请求,然后根据负载均衡的算法转发到后端RS。
  • RS(Real Server):LVS集群中的真实服务器,也就是后端服务器,接收调度器转发的请求。
  • CIP(Client IP):客户端的IP地址。
  • VIP(Virtual IP):虚拟IP地址,对外提供服务的IP地址。
  • DIP(Director Server IP):调度器的IP地址。
  • RIP(Real Server IP):后端服务器的IP地址。

LVS负载均衡的模式

  • NAT模式:地址转换模式,是最为常用的模式。
  • DR模式:直连路由模式,性能最佳。
  • TUN模式:隧道模式,通过VPN实现。

3. NAT模式

NAT模式也就是地址转换模式。在这种模式下,LVS中的DS类似一个路由。客户端发出的请求先发送给DS,请求数据包中的目标地址VIP会转换为RIP;RS处理完请求,响应数据包中的源地址RIP会转换成VIP。

这种模式性能较差,后端的真实服务器数量通常在10~30台左右。请求和响应都会经过DS,所以DS的性能会成为整个LVS的性能瓶颈。

4. DR模式

DR模式是直连路由模式,调度器只负责请求的转发,后端服务器的响应会直接返回给客户端。DS和RS属于同一个网络。

5. TUN模式

TUN模式是隧道模式,调度器只负责请求的转发,后端服务器和调度器通过VPN实现互相通信。

6. 三种模式比较

NATDRTUN
优点配置简单性能最好使用VPN
缺点性能低不支持跨网段必须使用VPN
真实服务器配置低要屏蔽ARP响应要配置VPN
支持的网络类型内网内网内网或外网
真实服务器数量10~30100100

7. ipvsadm命令 – 管理Linux虚拟服务器

ipvsadm命令来自英文词组“IPVS administration”的缩写,功能是用于管理Linux虚拟服务器。

ipvsadm [选项] IP地址

常见的选项:

选项功能
-a添加真实服务器
-A添加虚拟服务器
-D删除虚拟服务器
-g设置LVM为DR模式
-i设置LVM为TUN模式
-m设置LVM为NAT模式
-n以数字形式显示IP地址
-r设置真实服务器
-s设置负载均衡算法
-t设置TCP协议的虚拟服务
-w设置权重

二、LVS具体配置

1. LVS NAT模式

1.1 配置DS服务器

  1. 加载系统的LVS内核模块。

    modprobe ip_vs
    
  2. 下载ipvsadm软件包。

    apt -y install ipvsadm
    
  3. 设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。

    ipvsadm -A -t 12.0.0.10:80 -s rr
    
  4. 设置RS服务器,指定LVM为NAT模式。

    ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.129 -m
    ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.130 -m
    
  5. 查看ipvsadm是否成功设置策略。

    ipvsadm -ln
    
  6. 配置服务器的两个网卡。

    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.128/24]ens37:dhcp4: noaddresses: [12.0.0.10/24]
    
  7. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  8. 编辑系统内核文件/etc/sysctl.conf,开启路由转发功能。

    net.ipv4.ip_forward = 1
    
  9. 应用内核配置,使其生效。

    sysctl -p
    
  10. 配置SNAT策略。

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 12.0.0.10
    

1.2 配置RS服务器

  1. 配置两台RS服务器的网卡,设置网关为DS服务器的内网IP(ens33网卡)。

    # 第一台RS服务器
    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.129/24]gateway4: 192.168.1.128# 第二台RS服务器
    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.130/24]gateway4: 192.168.1.128
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 开启两台RS服务器的Nginx服务。

    systemctl start nginx
    

1.3 客户端访问测试

  1. 配置客户端网卡。

    network:ethernets:ens33:dhcp4: noaddresses: [12.0.0.11/24]gateway4: 12.0.0.10
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 访问VIP地址。

    curl 12.0.0.10
    

2. LVS DR模式

2.1 配置DS服务器

  1. 加载系统的LVS内核模块。

    modprobe ip_vs
    
  2. 下载ipvsadm软件包。

    apt -y install ipvsadm
    
  3. 设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。

    ipvsadm -A -t 192.168.1.200:80 -s rr
    
  4. 设置RS服务器,指定LVM为DR模式。

    ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.129 -g
    ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.130 -g
    
  5. 查看ipvsadm是否成功设置策略。

    ipvsadm -ln
    
  6. 配置服务器的两个网卡。

    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.128/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]gateway4: 192.168.1.254
    
  7. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  8. 编辑系统内核文件/etc/sysctl.conf,关闭路由转发相关功能,也就是不将DS服务器作为路由器。

    net.ipv4.ip_forward = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.ens37.send_redirects = 0
    
  9. 应用内核配置,使其生效。

    sysctl -p
    

2.2 配置RS服务器

  1. 配置两台RS服务器的网卡。

    # 第一台RS服务器
    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.129/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]# 第二台RS服务器
    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.130/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 配置两台RS服务器的静态路由。

    route add -host 192.168.1.200 dev ens37
    
  4. 编辑系统内核文件/etc/sysctl.conf,配置ARP响应相关参数。

    net.ipv4.conf.ens37.arp_ignore = 1  
    net.ipv4.conf.ens37.arp_announce = 2
    
  5. 应用内核配置,使其生效。

    sysctl -p
    
  6. 开启两台RS服务器的Nginx服务。

    systemctl start nginx
    

2.3 客户端访问测试

  1. 配置客户端网卡。

    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.5/24]gateway4: 192.168.1.254
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 访问VIP地址。

    curl 192.168.1.200
    
http://www.lryc.cn/news/505258.html

相关文章:

  • C 语言代码诗韵:数字功能的雅集华章
  • ps案例制作
  • 【C++】列表初始化、声明、范围for、array容器
  • C++智能指针详解
  • 基础库正则表达式
  • 【spring专题】spring如何解析配置类和扫描包路径
  • MyBatis框架的入门
  • 代码随想录D22-23 回溯算法01-02 Python
  • 【网络云计算】2024第50周-每日【2024/12/13】小测-理论-写10个Bash Shell脚本-解析
  • MATLAB转换C语言--问题(一)FFT 和 IFFT 的缩放因子
  • 轻松上手:使用 Vercel 部署 HTML 页面教程
  • 如何运用 HTM?
  • 12.16【net】【study】
  • 2023和2024历年美赛数学建模赛题,算法模型分析!
  • Node.js内置模块
  • 测评|携程集团25年社招在线测评北森题库、真题分析、考试攻略
  • 快速启动Go-Admin(Gin + Vue3 + Element UI)脚手架管理系统
  • 数据分流:优化数据处理流程的关键策略
  • RabbitMQ如何构建集群?
  • RNN LSTM Seq2Seq Attention
  • 硬件设计-ADC和低本底噪声为何至关重要
  • 个性化域名配置
  • uniapp中打包应用后,组件在微信小程序和其他平台实现不同的样式
  • MRI脑肿瘤检测数据集,使用500张原始图片标注,支持yolo,coco,voc格式
  • JumpServer开源堡垒机搭建及使用
  • Java 编程旅程(二)
  • 一、springcloud 入门——笔记
  • 思考:VSCode 的宏观工作原理 快速入门 VSCodium (****)
  • C++ day8——模版
  • 【CSS in Depth 2 精译_080】 13.1:CSS 渐变效果(中)——不同色彩空间的颜色插值算法在 CSS 渐变中的应用