LVS(Linux Virtual Server)集群,(1)NAT模式

news2024/12/29 22:54:59

Cluster:集群,为了解决某个特定问题将多台计算机组合起来形成的单个系统。

集群分为三种类型:

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

HA(High Availiablity),高可用,避免单点故障

HPC(High-performance computing),高性能

LVS一共有三种工作模式:DR,Tunnel,NAT

轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各节点。

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

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

加权最少连接数(Weighted Least Connections):在服务器节点的性能差异较大的情况下,调度器根据节点服务器负载自动调整权重。

集群:同一个业务系统,部署在多台服务器上。

集群设计原则:

可扩展性—集群的横向扩展能力

可用性—无故障时间

性能—访问响应时间

容量—单位时间内的最大并发吞吐量

软件:

lvs:阿里四层SLB使用四层的nginx负载均衡软件,内核中的功能性能强,功能少,百万级别的并发。

nginx:支持七层调度,阿里七层SLB使用Tengine,4层,3-6w并发

haproxy:支持七层调度,反向,十万级别(不太会用到)

LVS:调度器,负载均衡软件,类似于nginx,4层协议的代理

IPVS sheduler调度算法

LVS,负载调度器,内核集成。阿里的四层SLB是基于LVS+keepalived实现。

LVS集群中的术语:

VS(Virtual Server,VS)代理服务器,DS(Director Server),Dispatcher调度器

RS(real Server,RS)真实服务器:upstream server(nginx),backend server(paproxy),真实服务器

CIP(Client IP):客户机IP

VIP(Virtual Server IP):代理服务器的IP,外网IP

DIP(Director IP)VS内网的IP,代理服务器的IP

RIP(Real server IP):真实服务器的IP地址

LVS调度算法,调度算法分为两种,静态方法和动态方法。

静态方法就是不管后端真实服务器的状态,根据自身算法进行调度。

动态方法是会根据后端服务器的状态来进行调度。

仅根据算法本身进行调度。

静态:

RR:RoundRobin,轮询,常用
WRR:加权轮询,常用,先算总权重,再用自己的权重去除以总权重

SH,实现session sticky,源IP地址hash,将来自于同一个IP地址的请求始终发往第一次挑中的RS,从而实现会话绑定

DH,目的地址哈希,第一次轮询调度至RS

动态:

一个参考值来确定服务器是否忙,值越小代表服务器越空闲,就会优先调度个空闲的服务器
根据RS当前的负载状态及调度算法进行调度Overhead=value值,小的值被调度

1.LC:适用于长连接应用,最小连接数,不考虑权重

公式:Overhead=activeconns*256+inactiveconns

值=活动连接*256+非活动连接。没有权重

2.WLC:带权重的,weight,默认调度,加权最小连接数,第一轮不合理,都是一样的优先级

公式:Overhead=(activeconns*256+inactiveconns)/weight

值=(活动连接*256+非活动连接)/权重。有权重

3.SED:初始连接高权重优先,只检查活动连接,而不考虑非活动连接,权重小的,空闲的
公式:Overhead=(activeconns+1)*256/weight

值=(活动连接+1)*256/权重。

4.NQ:第一轮均匀分配,后续SED

ipvsadm 工具,选项说明

-A:添加虚拟服务器

-D:删除整个虚拟服务器

-s:指定负载调度算法

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

-d:删除某一个节点

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

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

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


ipvsadm -C #清空

ipvsadm -R #重载
ipvsadm -A -t 12.0.0.1:80 -s rr   #添加虚拟服务器,代理服务器

#添加真实服务器

ipvsadm -a -t 12.0.0.1:80 -r 192.168.114.20:80 -m

ipvsadm -a -t 12.0.0.1:80 -r 192.168.114.30:80 -m

通过yum安装:
yum install ipvsadm -y
 

NAT模式,LVS负载均衡部署

需要四台机子

7-1作为LVS是调度服务器,7-2作为真实服务器1,7-3作为真实服务器2,7-4作为客户端。

一次访问可能是192.168.114.20,那么下一次可能是192.168.114.30

systemctl stop firewalld

setenforce 0

在7-2和7-3真实服务器上配置httpd,准备主页文件。和指定网关

[root@Node3 ~]#:yum install -y httpd

[root@Node3 ~]#:systemctl start httpd
[root@Node3 ~]#:echo "7-3" > /var/www/html/index.html

7-2同理:

[root@Node2 ~]#:yum install -y httpd

[root@Node2 ~]#:systemctl start httpd
[root@Node2 ~]#:echo "7-2" > /var/www/html/index.html

这里,网页主页就配置好了,还需要修改两台的网关,设置为调度服务器的ens33网卡的地址

[root@Node3 ~]#:vim /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR=192.168.114.30
NETMASK=255.255.255.0
GATEWAY=192.168.114.10

[root@Node3 ~]#:systemctl restart network

7-2同理:

[root@Node2 ~]#:vim /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR=192.168.114.20
NETMASK=255.255.255.0
GATEWAY=192.168.114.10

[root@Node2 ~]#:systemctl restart network

总结:httpd服务,主页面配置。网络配置,指定网关。

7-1上LVS调度服务器

添加一块网卡,设为仅主机模式

修改ens36网卡:(刚添加的网卡,我这里叫ens36)

[root@Node1 ~]#:cd /etc/sysconfig/network-scripts/

[root@Node1 network-scripts]#:cp ifcfg-ens33 ifcfg-ens36 -a

[root@Node1 network-scripts]#:vim ifcfg-ens36

#把UUID删了,修改网卡名称为ens36
IPADDR=12.0.0.1
NETMASK=255.255.255.0
GATEWAY=12.0.0.1

[root@Node1 network-scripts]#:systemctl restart network

#开启路由转发:

[root@Node1 network-scripts]#:vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p[root@Node1 network-scripts]#:sysctl -p
net.ipv4.ip_forward = 1


#添加真实服务器和虚拟服务器(节点服务器)

[root@Node1 ~]#:yum install -y ipvsadm

[root@Node1 ~]#:systemctl start ipvsadm
Job for ipvsadm.service failed because the control process exited with error code. See "systemctl status ipvsadm.service" and "journalctl -xe" for details.

#需要这个文件目录
[root@Node1 ~]#:ipvsadm-save > /etc/sysconfig/ipvsadm 
[root@Node1 ~]#:systemctl start ipvsadm

#添加虚拟服务器:

[root@Node1 ~]#:ipvsadm -A -t 12.0.0.1:80 -s rr

#添加两个真实服务器:

[root@Node1 ~]#:ipvsadm -a -t 12.0.0.1:80 -r 192.168.114.20:80 -m
[root@Node1 ~]#:ipvsadm -a -t 12.0.0.1:80 -r 192.168.114.30:80 -m

7-4作为客户端

改成主机模式:点确定

[root@Node4 ~]#:vim /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR=12.0.0.100
NETMASK=255.255.255.0
GATEWAY=12.0.0.1

#重启网络

[root@Node4 ~]#:systemctl restart network

测试:

实现NAT模式LVS负载均衡

------end------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网工内推 | H3C工程师,大专可投,无责底薪加提成

01 内蒙古华贸信息科技有限公司 🔷招聘岗位:H3C工程师 🔷岗位职责: 1、负责核心网络的7*24小时网络运维,可持续对网络进行优化,提供高质量的网络服务; 2、能够独立运维高端核心设备和楼层接入网…

Premiere Pro 关键帧的运用(光盘滚入盘盒)

制作“光盘滚入盘盒”效果,步骤如下: 1.新建项目>新建序列,项目名称为“光盘滚入盘盒”,序列设置如下图所示。 2.导入素材到项目面板中。 3.新建“颜色遮罩 ”。在项目面板中,右键【新建项目】-【颜色遮罩】-【视…

idea2023开发插件入门

idea2023开发插件入门 创建工程 通过 idea plugin 来创建工程 修改 开发语言 默认创建的工程是用scala开发的,但是我不会,就会java,所以改成java创建 build.gradle.kt 为 build.gradlesettings.gradle.kt 为 settings.gradle build.gradle修改为以…

css实现多行文本的展开收起

背景 在我们写需求时可能会遇到类似于这样的多行文本展开与收起的场景: 那么,如何通过纯css实现这样的效果呢? 实现的难点 (1)位于多行文本右下角的 展开收起按钮。 (2)展开和收起两种状态的…

Linux--视频推流及问题

方案一: mjpg-streamer,它运行在ARM板上 在手机上使用浏览器直接观看视频 方案二: 推流端(Fmpeg)--rtmp-->Nginx(流媒体服务器)--rtmp/httpflv/hls-->浏览器、播放器 此篇文章记录方案二的具体细…

理解HTTP请求格式

HTTP概念 HTTP全称HyperTextTransfer Protocol(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议;HTTP是一个客户端(用户)和服务端(网站)之间请求和响应的标准。 HTTP 协议是以 ASCII 码传输&…

IDEA 运行 ‘xxx‘ 时出错. 命令行过长. 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行.

IDEA 运行 ‘xxx’ 时出错. 命令行过长. 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行. 目录 IDEA 运行 xxx 时出错. 命令行过长. 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行.报错解决方案jar清单jar清单 报错原因:1.使…

可预约上门服务的在线DIY预约小程序源码系统 带完整的安装代码包以及搭建教程

系统概述 这款可预约上门服务的在线 DIY 预约小程序源码系统是为满足各类上门服务需求而设计的。它允许用户通过小程序方便地预约各种服务,如家政服务、维修服务、美容美发服务等。同时,商家可以在后台管理系统中方便地管理预约信息、服务项目、员工信息…

数据链路层知识分享【计算机网络】【以太网帧 | MTU的影响 | ARP技术】

博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 前文 一, 以…

贝叶斯优化、高斯过程相关概念总结

目录 贝叶斯优化 高斯过程 采集函数 贝叶斯优化 贝叶斯优化 &#xff5c; 黑盒优化全局最优方法 &#xff5c; Bayesian Optimization_哔哩哔哩_bilibili 贝叶斯优化用于解决寻找某个函数的最大值/最小值&#xff0c;在自变量维度比较小时(<20)表现的非常好。 适用…

嵌入式系统软件开发环境_2.一般架构

1.Eclipse框架 嵌入式系统软件开发环境是可帮助用户开发嵌入式软件的一组工具的集合&#xff0c;其架构的主要特征离不开“集成”问题&#xff0c;采用什么样的架构框架是决定开发环境优劣主要因素。Eclipse框架是当前嵌入式系统软件开发环境被普遍公认的一种基础环境框架。目…

OCC介绍及框架分析

1.OCC介绍 Open CASCADE &#xff08;简称OCC&#xff09;是一开源的几何造型引擎&#xff0c;OCCT库是由Open CASCADE公司开发和市场运作的。它是为开源社区比较成熟的基于BREP结构的建模引擎&#xff0c;能够满足二维三维实体造型和曲面造型&#xff0c;国内研究和使用它的单…

NodeJs 连接本地 mySql 数据库获取数据

写在前面 今天把 nodejs 连接本地数据库的坑简单的踩一下&#xff0c;为后续写接口做个铺垫 安装 mySql &#xff08;mac举例子&#xff09; 安装地址 安装完成大概这个样子&#xff0c;起动起来就行 安装本地数据库连接工具&#xff08;navicat举例子&#xff09; 安装地…

RISC_CPU模块的调试

代码&#xff1a; cpu.v include "clk_gen.v" include "accum.v" include "adr.v" include "alu.v" include "machine.v" include "counter.v" include "machinectl.v" include "register.v&quo…

探索Linux命令的新利器:linux-command

在Linux操作系统中&#xff0c;熟练掌握各种命令是成为一名高效开发者或管理员的关键。然而&#xff0c;即使是经验丰富的用户&#xff0c;有时也会遇到命令用法不熟悉或者记忆模糊的情况。这时&#xff0c;一个功能强大的命令搜索工具就显得格外重要。最近在逛github的时候正好…

Qemu虚拟机在线迁移到VMware

libvirt版本&#xff1a;libvirt-10.0.0qemu版本&#xff1a;qemu-8.2.0 在生产环境中&#xff0c;大多数的场景是 vmware 虚拟机迁移到 qemu 环境&#xff0c;一般是通过关机然后导出、导入磁盘镜像来实现。 如果要将 qemu 环境虚拟机迁移到 vmware 怎么办呢&#xff1f;要求…

Ruby on Rails Post项目设置网站初始界面

在构建了Ruby的Web服务器后&#xff0c;第三步就可以去掉框架的官方页面&#xff0c;设置自己的网页初始页了。 Linux系统安装Ruby语言-CSDN博客 、在Ubuntu中创建Ruby on Rails项目并搭建数据库-CSDN博客、 Ruby语言建立Web服务器-CSDN博客 了解Ruby onRails项目中的主要文件…

go语言对接S3存储的SDK(支持minio和OSS)

背景 在某个项目中&#xff0c;客户要求支持S3协议的存储&#xff0c;因为之前的项目是go来开发的支持的oss和minio 。 但并不一定支持S3的协议&#xff0c;而且使用了二种SDK&#xff0c;感觉比较麻烦。 既然客户提出来了要求。那我们改一下就是了。 操作 引入 go语言中有对…

《计算机英语》Unit1 计算机概述

期末试卷组成 1、选择20道 2、判断20道 3、词汇翻译&#xff08;单词词组&#xff0c;参照课后习题&#xff09; 4、翻译2道&#xff08;一道原题&#xff0c;参照作业&#xff09; Unit One Computer Overview 单元1 计算机概述 algorithm n. 算法 operate …

Python之scapy(1)基础使用

Python之scapy(1)基础使用 Author: Once Day Date: 2024年6月4日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Python开发_Once-Day的博客-CSDN博…