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

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

集群

集群:将多台主机作为一个整体,然后对外提供相同的服务

集群使用场景:高并发的场景

集群的分类

    1.负载均衡器集群
        减少响应延迟,提高并发处理的能力
    2,高可用集群
        增强系统的稳定性可靠性,减少服务器的中断时间,减少损失
    3,高性能集群
        高性能的运算能力,做分布式提高CPU的运算速度,做并发处理

负载均衡集群架构

   第一层:负载调度器
        通过调度算法以及RIP发送
    第二层:服务池
        所有服务器使用的资源
    第二层:共享存储
        提供网站,存储资源

负载均衡器的群集工作模式

NAT模式(地址转换)
        调度器作为网关,是访问请求的入口,同样是响应请求的出口,可以提高安全性但是在高并发场景下负载压力很高


 TUN模式(IP隧道)
        访问请求的入口,响应不经过调度器,但是需要大量的公网IP。还需要建立专用的IP隧道,成本太高,数据的转发受IP隧道的额外影响

 DR模式(直接路由)
        仅是访问请求的入口,响应数据不经过调度器,但是节点服务器和调度器在一个物理网络中,数据进行转发不受额外的影响

LVS虚拟服务器
    确认是否支持LVS------modprobe  ip_vs  

LVS负载均衡集群架构

LVS的基本概念

LVS(Linux Virtual Server)集群架构是一种基于Linux操作系统的负载均衡解决方案。它通过将负载均衡功能实现在操作系统内核层面,将客户端请求分发到后端服务器集群,以提高系统的性能、可靠性和可扩展性。

LVS集群架构具有高性能、高可靠性和可扩展性的特点,可以通过增加后端服务器来扩展系统的处理能力。此外,LVS还支持会话保持、健康检查、故障切换等功能,以提供更好的用户体验和系统可用性。

LVS集群架构的组件

  1. 负载均衡器(Load Balancer):负载均衡器是LVS集群的核心组件,它接收来自客户端的请求,并根据预定义的负载均衡算法将请求转发给后端服务器。负载均衡器可以是一台物理服务器或者一组虚拟服务器。

  2. 调度器(Scheduler):调度器是负载均衡器的一部分,负责根据负载均衡算法选择合适的后端服务器来处理客户端请求。常见的调度算法包括轮询、加权轮询、最小连接数等。

  3. 后端服务器(Real Server):后端服务器是实际处理客户端请求的服务器。它们可以是一组物理服务器或者虚拟服务器,通过负载均衡器接收请求并返回响应。

  4. 网络设备:LVS集群架构通常还涉及网络设备,如交换机、路由器等,用于连接负载均衡器和后端服务器,以及处理网络流量。

LVS集群架构的工作流程

  1. 客户端发送请求到负载均衡器。

  2. 负载均衡器接收到请求后,通过调度器选择一个后端服务器。

  3. 负载均衡器将请求转发给选定的后端服务器。

  4. 后端服务器处理请求并生成响应。

  5. 后端服务器将响应发送回负载均衡器。

  6. 负载均衡器将响应返回给客户端。

LVS的作用

  1. 主要用于多服务器的负载均衡

  2. 工作在网络层,可实现高性能,高可用的服务集群技术

  3. 廉价, 可以把许多低性能服务器组合在一起形成一个超级服务器

  4. 易用,配置简单,有多种负载均衡的方式

  5. 稳定可靠,即使在集群的服务器中某台服务器无法正常工作也不会影响整体效果

  6. 可扩展性好

 LVS负载均衡器的调度算法

  轮询
        平等的对待每一台服务器
  加权轮询
        根据调度器设置的权重值来分发请求,权重值越高,被分发的请求越多,主要是为了保证性能比较强的服务器接受的请求最多
 最少连接
        根据服务器的已建立的连接数确定分发,收到的请求分发给连接数少的节点
 加权最少连接
        在服务器节点性能有差异时,性能较高的节点承担更多比例的请求

LVS基于内核态的netfilter框架实现的IPVS功能,工作在内核态用户配置vip等相关信息并且传递

IPVS,就需要用到IPVSadm工具

ipvsadm: IPVSadm是lvs用户态的配套的工具,可以实现VIP和RS 增删改查

ipvsadm工具

工具选项
-A:添加虚拟服务器

-D:删除整个虚拟fuwq

-s:指定负载调度算法(轮询,加权轮询,最少连接,加权最少连接,wlc)

-a:表示添加真实服务器(节点服务器)

-d:删除某一个节点

-t:指定VIP地址及TCP端口

-r:指定RIP地址及TCP端口

-m:表示使用NAT群集模式

-g:表示使用DR模式

-i:表示使用TUN模式

-w:设置权重(权重为0时表示暂停节点)

-p60:表示保持长连接60秒

-l:列表查看LVS虚拟服务器(默认为查看所有)

-n:以数字形式显示地址,端口等信息,常与“-l”选项组合使用

LVS-NAT部署实战

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

LVS负载调度器:ens33:20.0.0.50 ens37:10.0.0.1(vmnet3)(添加一个新的网卡进行配置)
Web1 节点服务器1:20.0.0.60
Web2 节点服务器2:20.0.0.70
NFS服务器:20.0.0.80
客户端(win10):10.0.0.12 (Vmnet3)

注意:① win10虚拟机(客户端)网关设置为10.0.0.1
           ② web服务器 网关设置为 20.0.0.50

部署共享存储(NFS服务器:20.0.0.80)

#关闭安全机制
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0#安装服务
yum install -y nfs-utils rpcbindsystemctl start nfs.service 
systemctl start rpcbind.service
systemctl enable nfs.service 
systemctl enable rpcbind.service#创建共享目录
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)      
# 这一行指定了 /usr/share 目录的共享设置。* 表示允许任何客户端访问,(ro,sync) 表示只读权限,并且同步写入/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)  
# 指定了 /opt/benet 目录的共享设置,只允许 20.0.0.0/24 网段的客户端访问,具有读写和同步写入。#发布共享
exportfs -rv
showmount -e

配置节点服务器(后端服务器)

20.0.0.60 20.0.0.70
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0#修改网卡网关为LVS服务器
需要将两个节点服务器60和70的网关设置为调度器的地址20.0.0.50
20.0.0.60
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.60
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart network20.0.0.70
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.70
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart networkyum install -y httpd
systemctl start httpd.service 
systemctl enable httpd.serviceyum install -y nfs-utils rpcbindsystemctl start rpcbind.service
systemctl enable rpcbind.serviceshowmount -e 20.0.0.80#web1:20.0.0.60
mount.nfs 20.0.0.80:/opt/kgc /var/www/html/
#用于将远程的NFS共享目录挂载到本地目录echo 'this is kgc' > /var/www/html/index.html#永久配置方法
vim /etc/fstab 
20.0.0.80:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a#web2:20.0.0.70
mount.nfs 20.0.0.80:/opt/benet /var/www/html/echo 'this is benet' > /var/www/html/index.html#永久挂载
vim /etc/fstab 
20.0.0.80:/opt/benet /var/www/html nfs defaults,_netdev 0 0mount -a

 配置负载调度器LVS

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0------(1)、配置SNAT转发规则-------
vim /etc/sysctl.conf
net.ipv4.ip_forward=1sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forwardiptables -t nat -F
iptables -F
iptables -t nat -nLiptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
#将源IP地址为20.0.0.0/24的数据包的源地址转换为10.0.0.1 指定接口为ens37转发-------(2)、加载LVS内核模块-------------
modprobe ip_vs   #手动加载ip_vs模块
cat /proc/net/ip_vs    #查看ip_vs版本信息-------(3)、安装ipvsadm管理工具-------------
yum install -y ipvsadm#注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service------(4)、配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)-------------
ipvsadm -C     #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.60:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.70:80 -m -w 1
#添加一个虚拟服务器的转发规则
#将来自10.0.0.1:80的请求转发到20.0.0.60:80的实际服务器上,并使用NAT模式进行转发。同时,使用权重1来进行负载均衡ipvsadm     #启动策略ipvsadm -ln    #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略

相关文章:

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

集群 集群:将多台主机作为一个整体,然后对外提供相同的服务 集群使用场景:高并发的场景 集群的分类 1.负载均衡器集群 减少响应延迟,提高并发处理的能力 2,高可用集群 增强系统的稳定性可靠性&…...

C++学习笔记总结练习:effective 学习日志

准则 1.少使用define define所定义的常量会在预处理的时候被替代,出错编译器不容易找到错误。而且还没有作用范围限制,推荐使用constdefine宏定义的函数,容易出错,而且参数需要加上小括号,推荐使用inline有的类中例如…...

Vue教程(五):样式绑定——class和style

1、样式代码准备 样式提前准备 <style>.basic{width: 400px;height: 100px;border: 1px solid black;}.happy{border: 4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg, yellow, pink, orange, yellow);}.sad{border: 4px …...

开放网关架构演进

作者&#xff1a;庄文弘&#xff08;弘智&#xff09; 淘宝开放平台是阿里与外部生态互联互通的重要开放途径&#xff0c;通过开放的产品技术把阿里经济体一系列基础服务&#xff0c;像水、电、煤一样输送给我们的商家、开发者、社区媒体以及其他合作伙伴&#xff0c;推动行业的…...

torch一些操作

Pytorch文档 Pytorch 官方文档 https://pytorch.org/docs/stable/index.html pytorch 里的一些基础tensor操作讲的不错 https://blog.csdn.net/abc13526222160/category_8614343.html 关于pytorch的Broadcast,合并与分割,数学运算,属性统计以及高阶操作 https://blog.csd…...

ICCV23 | Ada3D:利用动态推理挖掘3D感知任务中数据冗余性

​ 论文地址&#xff1a;https://arxiv.org/abs/2307.08209 项目主页&#xff1a;https://a-suozhang.xyz/ada3d.github.io/ 01. 背景与动因 3D检测(3D Detection)任务是自动驾驶任务中的重要任务。由于自动驾驶任务的安全性至关重要(safety-critic)&#xff0c;对感知算法的延…...

软件工程模型-架构师之路(四)

软件工程模型 敏捷开发&#xff1a; 个体和交互 胜过 过程和工具、可以工作的软件 胜过 面面俱到的文件、客户合作胜过合同谈判、响应变化 胜过 循序计划。&#xff08;适应需求变化&#xff0c;积极响应&#xff09; 敏捷开发与其他结构化方法区别特点&#xff1a;面向人的…...

ubuntu20.04共享文件夹—— /mnt/hgfs里没有共享文件夹

参考文章&#xff1a;https://blog.csdn.net/Edwinwzy/article/details/129580636 虚拟机启用共享文件夹后&#xff0c;/mnt/hgfs下面为空&#xff0c;使用 vmware-hgfsclient 查看设置的共享文件夹名字也是为空。 解决方法&#xff1a; 1. 重新安装vmware tools. 在菜单…...

Redis中的有序集合及其底层跳表

前言 本文着重介绍Redis中的有序集合的底层实现中的跳表 有序集合 Sorted Set Redis中的Sorted Set 是一个有序的无重复值的集合&#xff0c;他底层是使用压缩列表和跳表实现的&#xff0c;和Java中的HashMap底层数据结构&#xff08;1.8&#xff09;链表红黑树异曲同工之妙…...

js 小程序限流函数 return闭包函数执行不了

问题&#xff1a; 调用限流 &#xff0c;没走闭包的函数&#xff1a; checkBalanceReq&#xff08;&#xff09; loadsh.js // 限流 const throttle (fn, context, interval) > {console.log(">>>>cmm throttle", context, interval)let canRun…...

【数据结构】堆的初始化——如何初始化一个大根堆?

文章目录 源码是如何插入的&#xff1f;扩容向上调整实现大根堆代码&#xff1a; 源码是如何插入的&#xff1f; 扩容 在扩容的时候&#xff0c;如果容量小于64&#xff0c;那就2倍多2的扩容&#xff1b;如果大于64&#xff0c;那就1.5倍扩容。 还会进行溢出的判断&#xff0c…...

【韩顺平 零基础30天学会Java】程序流程控制(2days)

day1 程序流程控制&#xff1a;顺序控制、分支控制、循环控制 顺序控制&#xff1a;从上到下逐行地执行&#xff0c;中间没有任何判断和跳转。 Java中定义变量时要采用合法的前向引用。 分支控制if-else&#xff1a;单分支、双分支和多分支。 单分支 import java.util.Scann…...

从入门到精通Python隧道代理的使用与优化

哈喽&#xff0c;Python爬虫小伙伴们&#xff01;今天我们来聊聊如何从入门到精通地使用和优化Python隧道代理&#xff0c;让我们的爬虫程序更加稳定、高效&#xff01;今天我们将对使用和优化进行一个简单的梳理&#xff0c;并且会提供相应的代码示例。 1. 什么是隧道代理&…...

19万字智慧城市总体规划与设计方案WORD

导读&#xff1a;原文《19万字智慧城市总体规划与设计方案WORD》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 感知基础设施 感知基础设施架构由感知范围、感知手…...

[赛博昆仑] 腾讯QQ_PC端,逻辑漏洞导致RCE漏洞

简介 !! 内容仅供学习,请不要进行非法网络活动,网络不是法外之地!! 赛博昆仑是国内一家较为知名的网络安全公司&#xff0c;该公司今日报告称 Windows 版腾讯 QQ 桌面客户端出现高危安全漏洞&#xff0c;据称“黑客利用难度极低、危害较大”&#xff0c;腾讯刚刚已经紧急发布…...

python Requests

Requests概述 官方文档&#xff1a;http://cn.python-requests.org/zh_CN/latest/,Requests是python的HTTP的库&#xff0c;我们可以安全的使用 Requests安装 pip install Requests -i https://pypi.tuna.tsinghua.edu.cn/simple Requests的使用 Respose的属性 属性说明url响…...

【深入解析:数据结构栈的魅力与应用】

本章重点 栈的概念及结构 栈的实现方式 数组实现栈接口 栈面试题目 概念选择题 一、栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数…...

安卓机显示屏的硬件结构

显示屏的硬件结构 显示屏的硬件结构主要由背光源、液晶面板和驱动电路构成。可以将液晶面板看成一个三明治的结构&#xff0c;即在两片偏振方向互相垂直的偏光片系统中夹着一层液晶层。自然光源通过起偏器&#xff08;偏光片之一&#xff09;后&#xff0c;变成了垂直方向的偏…...

基于swing的超市管理系统java仓库库存进销存jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的超市管理系统 系统有3权限&#xff1a;管…...

常用系统命令

重定向 cat aa.txt > bbb.txt 将输出定向到bbb.txt cat aaa.txt >> bbb.txt 输出并追加查看进程 ps ps -ef 显示所有进程 例⼦&#xff1a;ps -ef | grep mysql |&#xff1a;管道符 kill pid 结束进程&#xff0c; 如 kill 3732&#xff1b;根据进程名结束进程可以先…...

【Spring专题】Spring之Bean生命周期源码解析——阶段四(Bean销毁)(拓展,了解就好)

目录 前言阅读建议 课程内容一、Bean什么时候销毁二、实现自定义的Bean销毁逻辑2.1 实现DisposableBean或者AutoCloseable接口2.2 使用PreDestroy注解2.3 其他方式&#xff08;手动指定销毁方法名字&#xff09; 三、注册销毁Bean过程及方法详解3.1 AbstractBeanFactory#requir…...

配置Docker,漏洞复现

目录 配置Docker 漏洞复现 配置Docker Docker的配置在Linux系统中相对简单&#xff0c;以下是详细步骤&#xff1a; 1.安装Docker&#xff1a;打开终端&#xff0c;运行以下命令以安装Docker。 sudo apt update sudo apt install docker.io 2.启动Docker服务&#xff1a;运…...

微信小程序 游戏水平评估系统的设计与实现_pzbe0

近年来&#xff0c;随着互联网的蓬勃发展&#xff0c;游戏公司对信息的管理提出了更高的要求。传统的管理方式已无法满足现代人们的需求。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;随着各行业的不断发展&#xff0c;使命召…...

moba登录不进去提示修改问题问题解决方式

问题&#xff1a; 安装moba后&#xff0c;运行时运行不起来&#xff0c;提示输入密码&#xff0c;安装、卸载多个版本都不行 方法&#xff1a; 使用ResetMasterPassword工具进行重置主密码 官网下载地址&#xff1a; MobaXterm Xserver and tabbed SSH client - resetmaster…...

Unsafe upfileupload

文章目录 client checkMIME Typegetimagesize 文件上传功能在web应用系统很常见&#xff0c;比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后&#xff0c;后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等&#xff0c;然后将其按…...

机器人制作开源方案 | 滑板助力器

我们可以用一块废滑板做些什么呢&#xff1f; 如今&#xff0c;越来越多的人选择电动滑板作为代步工具或娱乐方式&#xff0c;市场上也涌现出越来越多的电动滑板产品。 &#xff08;图片来源&#xff1a;Backfire Zealot X Belt Drive Electric Skateboard– Backfire Board…...

飞机打方块(二)游戏界面制作

一、背景 1.新建bg节点 二、飞机节点功能实现 1.移动 1.新建plane节点 2.新建脚本GameController.ts,并绑定Canvas GameControll.ts const { ccclass, property } cc._decorator;ccclass export default class NewClass extends cc.Component {property(cc.Node)canvas:…...

自我理解:精度(precision)和召回(recall)

1、精度(precision) 精度是用于评估分类模型的一个重要指标。它反映了模型预测为正例的样本中&#xff0c;实际真正为正例样本的比例。 【注】正例样本指在二分类问题中&#xff0c;被标注为正类的样本。 例如&#xff1a;在垃圾邮件分类任务中&#xff0c;正例样本就是真实的…...

Nginx 使用 HTTPS(准备证书和私钥)

文章目录 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09;准备证书和私钥 Nginx生成自签名证书和配置Nginx HTTPS&#xff08;准备证书和私钥&#xff09; 准备证书和私钥 生成私钥 openssl genrsa -des3 -out server.key 2048这会生成一个加密…...

Java:集合框架:Set集合、LinkedSet集合、TreeSet集合、哈希值、HashSet的底层原理

Set集合 创建一个Set集合对象&#xff0c;因为Set是一个接口不能直接new一个对象&#xff0c;所以要用一个实现类来接 HashSet来接 无序性只有一次&#xff0c;只要第一次运行出来后&#xff0c;之后再运行的顺序还是第一次的顺序。 用LinkedSet来接 有序 不重复 无索引 用Tree…...