LVS-NAT模式

LVS负载均衡群集

群集的定义

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

群集的作用

对于企业服务的的性能提升一般会有两种方式:

纵向扩展: 对服务器的CPU 内存 硬盘 等硬件进行升级或者扩容来实现的 性能上限会有瓶颈,成本昂贵,收效比不高等问题。

横向扩展:通过增加服务器主机数量来应该高并发的场景。

群集的目的

提高性能:计算密集应用。如天气预报,核试验模拟。 降低成本:相对百万美元的超级计算机,价格便宜。 提高可扩展性:只要增加集群节点即可。 增强可靠性:多个节点完成相同功能,避免单点失败。

企业级群集的类型

负载均衡(LB):提高应用系统的响应效率,处理更多的访问请求,减少延迟,提高并发和负载能力。 同时也是如今企业运用最多的群集类型。

高可用(HA): 提高应用系统的可靠性,减少服务中断时间,确保服务的连续性

高性能运算(HPC):将多台主机的硬件计算资源整合到一起实现分布式运用,比如 云计算

LVS的相关话术:

DS:Director Server。指的是前端负载均衡器。

RS:Real Server。节点服务器,后端真实的工作服务器。

VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。

DIP:Director Server IP,主要用于和内部主机通讯的IP地址。

RIP:Real Server IP,后端服务器的IP地址。

CIP:Client IP,访问客户端的IP地址。

LVS的基本原理

1.当用户向负载均衡器(Director Server)发起请求,调度器将请求发送至内核空间。

2.Prerouting链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发送到INPUT链。

3.IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已经定义好的集群服务进行对比,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发送到POSTROUTING链。

4.POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送到后端的服务器。

LVS负载均衡的三种模式

群集的负载调度技术有三种工作模式:地址转换(NAT模式) ,直接路由(DR模式),IP隧道(IP-TUN)。对于商用来说,最常用是NAT模式和DR模式。

NAT(地址转换)
  • Network Address Translation,简称NAT模式

  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机 的访问入口,也是各节点回应客户机的访问出口。

  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两 种方式。

  • 缺点:由于NAT的负载均衡器既作为用户的访问请求入口,也作为节点服务器响应请求的出口,承载两个方向的压力,调度器的性能会成为整个集群的瓶颈。

DR模式(直接路由)
  • Direct Routing,简称DR模式。
  • 采用半开放式的网络结构,与TUN模式的结构类似,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。承载的压力比NAT小。
  • 但各节点并不是分散在各地,而是与调度器位于同一个物理网络。
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。

LVS的负载调度算法

rr:轮询算法(Round Robin)

  • 将请求依次分配给不同的RS节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。
  • 将收到的访问请求安装顺序轮流分配给群集指定各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载。

wrr:加权轮询调度(Weighted Round Robin)

  • 依据不同RS的权重值分配任务。权重值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
  • 保证性能强的服务器承担更多的访问流量。

dh:目的地址哈希调度(destination hashing)

  • 以目的地址为关键字查找一个静态hash表来获得所需RS。

sh:源地址哈希调度(source hashing)

  • 以源地址为关键字查找--个静态hash表来获得需要的RS。

(2)动态调度算法: wlc,lc,1blc

lc:最小连接数调度( Least Connections)

  • ipvs表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
  • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。

wlc:加权最小连接数调度(Weighted Least Connections)

  • 假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次取Ti/Wi为最小的RS作为下一个分配的RS。
  • 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重。
  • 性能较高的节点将承担更大比例的活动连接负载。

lblc:基于地址的最小连接数调度(locality-based least-connection)

  • 将来自同一个目的地址的请求分配给同一-台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

LVS-NAT模式实例

NFS服务器 7-5 192.168.222.105

#关闭防火墙

systemctl stop firewalld

setenforce 0

#安装nfs服务

yum install nfs-utils rpcbind -y

#新建目录,并创建站点文件

cd /opt/

mkdir zhao qian

echo "zhaoqiansunli" >zhao/index.html

echo "zhouwuzhengwang" >qian/index.html

#开启服务

systemctl start rpcbind

systemctl start nfs

#授权

chmod 777 zhao/ qian/

#设置共享策略

vim /etc/exports /opt/fl

192.168.222.0/24(rw,sync) /opt/dl

192.168.222.0/24(rw,sync)

#发布服务

systemctl restart nfs

exportfs -rv

节点服务器1 7-4 192.168.222.104

#关闭防火墙

systemctl stop firewalld
setenforce 0

#安装httpd

yum install -y httpd

#查看nfs服务

showmount -e 192.168.222.105

#挂载站点

#法一:临时挂载
df

mount 192.168.222.105:/opt/zhao /var/www/html/

cat /var/www/html/index.html
#法二:永久挂载
vim /etc/fstab
192.168.222.105:/opt/zhao/  /var/www/html/        nfs     defaults,_netdev 0 0 
mount -a

#开启httpd服务

systemctl start httpd

#指定网关

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
GATEWAY=192.168.222.100
#DNS1=8.8.8.8

#重启网络服务

systemctl restart network

节点服务器2 7-3 192.168.222.103【和7-4操作相同】

负载调度器 7-2 192.168.222.100 需要两块网卡

#关闭防火墙

systemctl stop firewalld

setenforce 0

#安装ipvsadm

yum install -y ipvsadm*

#添加一块网卡,配置网卡,重启网络

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens35

vim ifcfg-ens35 去掉网关、UUID、修改IP

vim ifcfg-ens33 去掉网关

systemctl restart network

#打开路由转发功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

#防火墙做策略

#查看策略

iptables -nL -t nat

#清空策略

iptables -F

#添加策略

iptables -t nat -A POSTROUTING -s 192.168.222.0/24 -o ens35 -j SNAT --to 12.0.0.1

#查看策略

iptables -nL -t nat

#加载LVS内核模块

modprobe ip_vs

cat /proc/net/ip_vs

#开启ipvsadm服务

ipvsadm-save >/etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

#清空策略

ipvsadm -C

#制定策略

#指定IP地址 外网的入口 -s rr 轮询 ipvsadm -A -t 12.0.0.1:80 -s rr

#先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式

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

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

#开启服务 ipvsadm

#查看策略

ipvsadm -ln

客户端主机

修改ip

访问12.0.0.1

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

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

相关文章

测试网页调用本地可执行程序(续:带参数调用)

前篇文章介绍了网页调用本地可执行程序的方式,通过在注册表中注册命令,然后在网页中调用命令启动本地程序。如果需要传递参数,则需要在注册表命令中的command项中设置如下形式的值。 "XXXXXX\XXXXXXX.exe" "%1"&emsp…

【python】Seaborn画热力图,只显示第一行数字---seaborn与matplotlib版本问题

github上有这个讨论:Heatmap only has annotation text in the top row only Issue #3478 mwaskom/seaborn (github.com)翻译过来就是:热图仅在最上面一行有注释文本; 原因就是matplotlib 在2023年9月更新到了 3.8.0版本,改变了…

FPGA project : HCSR04

犯下的错误: 1,由于使用cnt_base 做echo回响信号高电平时间的测量,它的数据应该很大,位宽也很大。也可以采用cnt_us计数器,计算这个高电平时间的。我为了精确计算距离,所以才仍然用的cnt_base计数器。 2&…

什么算泄露公司机密的行为(什么程度算公司泄密行为)

在当今的商业环境中,保护公司的核心竞争力和商业机密是至关重要的。然而,员工可能出于各种原因泄露这些信息,包括对竞争对手的追求、个人利益的驱动或者对工作的不满。在这种情况下,企业需要依赖专业的调查工具来揭示和证明员工的…

【Cpp】位图Bitmap

code #include <iostream> #include <vector> #include <stdio.h> #include <stdint.h>class Bitmap { private:std::vector<uint8_t> data; // 存储位图数据的字节数组uint32_t size; // 位图的大小&#xff08;以位为单位&#x…

Vue路由及Node.js环境搭建

目录 一、Vue路由 1.1 定义 1.2 应用领域 1.3 代码展示 二、Node.js 2.1 定义 2.2 特点 2.3 Node.js安装与配置 2.3.1 下载安装包 2.3.2 手动新建文件夹 2.3.3 注意事项 2.3.4 配置环境变量 2.3.5 检验是否安装配置成功 2.3.6 设置淘宝源 2.3.7 查看全局路径设置…

通用返回结果类ResultVO

1. 定义通用返回结果类 ​ 定义ResultVO类&#xff0c;作返回给前端的对象结构&#xff0c;主要有4个字段 code : 错误码 data : 内容message : 消息description : 具体描述 import lombok.Data; import java.io.Serializable;/*** 通用返回结果类* param <T>*/ Data …

史上最详细的测试用例写作规范

软件测试用例得出软件测试用例的内容&#xff0c;其次&#xff0c;按照软件测试写作方法&#xff0c;落实到文档中&#xff0c;两者是形式和内容的关系&#xff0c;好的测试用例不仅方便自己和别人查看&#xff0c;而且能帮助设计的时候考虑的更周。 一个好的测试用例必须包含…

Tessy 5.0.4

Tessy 5.0.4 Linux 2692407267qq.com&#xff0c;更多内容请见http://user.qzone.qq.com/2692407267/

论文研读-数据共享-大数据流分析中的共享执行技术

Shared Execution Techniques for Business Data Analytics over Big Data Streams 大数据流分析中的共享执行技术 1、摘要 2020年的一篇共享工作的论文&#xff1a;商业数据分析需要处理大量数据流&#xff0c;并创建物化视图以便给用户实时提供分析结果。物化每个查询&#x…

Centos7安装wps无法打开及字体缺失的问题解决

在centos7上安装了最新的wps2019版本的wps-office-11.1.0.11704-1.x86_64.rpm&#xff0c;生成了桌面图标并信任&#xff0c;可以新建文件&#xff0c;但是软件无法打开。在终端执行如下命令&#xff0c;用命令行启动wps&#xff1a; cd /opt/kingsoft/wps-office/office6/ ./…

Learn Prompt- Midjourney 图片生成:基本设置和预设

/settings指令为模型版本、样式值、质量值和升级器版本等常用选项提供切换按钮。 备注 添加到提示末尾的参数将覆盖/settings中的设置。 模型版本​ 1️⃣ MJ Version 12️⃣ MJ Version 23️⃣ MJ Version 34️⃣ MJ Version 45️⃣ MJ Version 5&#x1f308; Niji Mode&a…

zerotier-client

title: “zerotier-client” createTime: 2022-10-10T11:50:5108:00 updateTime: 2022-10-10T11:50:5108:00 draft: false author: “zcb” tags: [“zerotier-plant”,“zerotier-client”,“zerotier”] categories: [“zerotier”] description: “测试的” 1.windows 1.1…

存储管理详解

目录 存储管理&#xff08;1&#xff09; 第一节 存储管理概述&#xff08;内存管理&#xff09; 一、存储体系 二、存储管理的任务 三、地址转换 存储管理&#xff08;2&#xff09; 第二节 分区管理方案 一、固定分区 二、可变分区 三、分区管理方案的优缺点 第…

人类的态势感知可分为先验、似然、后验的三部分

人类的态势感知可以分为先验、似然和后验三个部分。这些部分描述了在不同阶段对环境的感知和理解。先验感知&#xff1a;先验感知基于先前的知识、经验和先验信息来理解环境。它利用已有的知识和模型&#xff0c;进行预测和推断&#xff0c;从而形成对当前环境的初步认知。先验…

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础 第21章 Qt Quick Controls开发基础21.1 Qt Quick Controls概述21.1.1 第一个Qt Quick Controls程序21.1.2 Qt Quick窗体应用程序的构成 21.2 Qt Quick控件21.2.1 概述21.2.2 基本控件21.2.3 高级控件21.2.4 样式定制 2…

通过插件去除Kotlin混淆去除 @Metadata标记

在Kotlin中&#xff0c;Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面&#xff1a; 反射&#xff1a;Metadata可以用于在运行时获取类的信息&#xff0c;包括类的名称、属性、函数等。通过反射&…

Spring面试题5:面试官:为什么说Spring是一个容器?如何给Spring容器提供配置元数据?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:为什么说Spring是一个容器? Spring被称为一个容器,是因为它提供了一个运行环境和管理机制,用于管理应用程序中的对象的生命周期和依赖关系。 …

多维时序 | MATLAB实现WOA-CNN-LSTM-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现WOA-CNN-LSTM-Attention多变量时间序列预测&#xff08;SE注意力机制&#xff09; 目录 多维时序 | MATLAB实现WOA-CNN-LSTM-Attention多变量时间序列预测&#xff08;SE注意力机制&#xff09;预测效果基本描述模型描述程序设计参考资料 预测效果 基本描…

STL-函数对象、谓词、常用算法

函数对象 函数对象概念 重载函数调用操作符的类&#xff0c;其对象常称为函数对象 函数对象使用重载的()时&#xff0c;行为类似函数调用&#xff0c;也叫仿函数 本质&#xff1a; 函数对象&#xff08;仿函数&#xff09;是一个类&#xff0c;不是一个函数 函数对象使用…