lvs负载均衡集群(NAT模式)

news2024/10/5 17:18:56

lvs负载均衡集群:
在这里插入图片描述
在这里插入图片描述

1.什么是集群(含义):就是将多台主机作为一个整体,对外提供相同的服务
2.集群使用在哪一个场景:高并发
并发量过大时候加服务器的方式就是向外扩展(横向扩展),就是集群。
在这里插入图片描述
3.集群的分类:
可以根据集群所针对的目标差异,分为三种类型:
负载均衡器:减少响应延迟,提供并发处理能力
高可用集群:系统的稳定性,减少服务器中断的时间,减少损失。
(HA 表示高可用–(主要作用于)–>冗余、备份、解决单点故障)
高性能运算集群:高性能运算能力,作为分布式 并发处理。
4.负载均衡集群的架构:
数据流向:用户---->通过----->vrrp----->访问
第一层:负载调度器(代理服务器):通过调度算法,以及RIP(真实ip地址)进行发送。
第二层:节点服务器池:所有服务器用的资源通过。
第三层:共享存储:提供网站,存储资源。
5.负载均衡器的集群的工作模式:
1.地址转换(NAT模式)
调度器作为网关,是访问请求的入口,也是响应访问的出口,在高并发场景当中,负载压力很高,NAT转换可用提高安全性

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

3.直接路由(DR模式)(使用较多)
仅是访问请求入口,响应数据不经过调度器,节点服务器和调度器在一个物理网络中数据进行转发不受影响。
6.关于LVS虚拟服务器
确认是否支持LVS:使用modprobe ip_vs查看
7.LVS负载均衡器调取算法
轮询算法(rr):
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器) ,均等地对待每一台服务器 ,而不管服务器实际的连接数和系统负载
加权轮询算法(wrr):
根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多,保证性能强的服务器承担更多的访问流量
最少连接(lc):
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
加权最少连接(wlc):
在服务器节点的性能差异较大时,可以为真实服务器自动调整权重, 性能较高的节点将承担更大比例的活动连接负载

在这里插入图片描述

创建集群的流程:
在这里插入图片描述

lvs组成 作用
组成:
1.lvs是基于内核态的netfilter框架实现的IPVS功能,工作在内核态用户配置VIP等相关信息并且传递到IPVS 就需要用到IPVSadm工具
2.ipvsadm:IPVSadm是lvs用户态的配套工具,它可以实现VIP和RS的增删改查,IPVSadm就是一个类似于iptables工具的地位

作用:
1.主要用于多服务器的负载均衡
2,是一个工作在网络层,可实现高性能,高可用的服务集群技术
3.廉价,可以把许多低性能的服务器组合在一起形成一个超级设备(服务器)
4.易用 配置简单 有多重负载均衡的方式
5.稳定可靠,即使在集群的服务器中,某一台服务无法正常工作,也不会影响整体效果。
6.可扩展性好。

案例LVS—NAT部署实战:
在这里插入图片描述

LVS负载调度器:ens33:20.0.0.104 ens37:10.0.0.1(vmnet3)
Web1 节点服务器1:20.0.0.102
Web2 节点服务器2:20.0.0.103
NFS服务器:20.0.0.101
客户端(win10):10.0.0.10 (Vmnet3)

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

1、部署共享存储(NFS服务器:20.0.0.101)

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

yum install -y nfs-utils rpcbind

systemctl 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/benet

vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)

#发布共享

exportfs -rv
showmount -e

2、配置节点服务器(后端web服务器)

20.0.0.10220.0.0.103
systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

#修改网卡网关为LVS服务器

yum install -y httpd
systemctl start httpd.service 
systemctl enable httpd.service

yum install -y nfs-utils rpcbind

systemctl start rpcbind.service
systemctl enable rpcbind.service
showmount -e 20.0.0.104

#web1:20.0.0.102

mount.nfs 20.0.0.104:/opt/kgc /var/www/html/

echo 'this is kgc' > /var/www/html/index.html

vim /etc/fstab 
20.0.0.104:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a

#web2:20.0.0.103

mount.nfs 20.0.0.104:/opt/benet /var/www/html/

echo 'this is benet' > /var/www/html/index.html

vim /etc/fstab 
20.0.0.104:/opt/benet /var/www/html nfs defaults,_netdev 0 0

mount -a

######配置负载调度器LVS(ens33:20.0.0.104 ens37:10.0.0.1)

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

------(1)、配置SNAT转发规则-------

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

sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forward
 
iptables -t nat -F
iptables -F
[root@lvs ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination  


iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens37 -j SNAT --to-source 10.0.0.1

nat表:修改数据包中的源、目标IP地址或端口
POSTROUTING: 在进行路由判断之"后"所要进行的规则(SNAT/MASQUERADE)
PREROUTING: 在进行路由判断之"前"所要进行的规则(DNAT/REDIRECT)
-A: 在规则链的末尾加入新规则
-s: 匹配来源地址IP/MASK.
-o 网卡名称匹配从这块网卡流出的数据
-i 网卡名称匹配从这块网卡流入的数据
-j 控制类型

-------(2)、加载LVS内核模块-------------

modprobe ip_vs   #手动加载ip_vs模块
cat /proc/net/ip_vs    #查看ip_vs版本信息

-------(3)、安装ipvsadm管理工具-------------

yum install -y ipvsadm

#注意:启动服务前必须保存负载分配策略,否则将会报错

ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadm

systemctl 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.102:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.103:80 -m -w 1

-A	添加虚拟服务器
-s	指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a	表示添加真实服务器 (后端节点服务器)
-t	指定 VIP地址及 TCP端口
-m	表示使用 NAT群集模式.
-w	设置权重 (权重为 0 时表示暂停节点)

ipvsadm     #启动策略
ipvsadm -ln    #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略

删除时候使用:

ipvsadm -d -t 10.0.0.1:80 -r 20.0.10.102:80 -m -w 1     #删除群集中某一节点服务器
ipvsadm -D -t 10.0.0.1:80     #删除整个虚拟服务器
systemctl stop ipvsadm     #停止服务(清除策略)
systemctl start ipvsadm    #启动服务(重建规则)
ipvsadm-restore > /etc/sysconfig/ipvsadm      #恢复LVS策略

配置调度器的网关:

web01
vim /etc/sysconfig/network-scripts/ifcfg-ens33 
注释掉DNS,将lns(lb负载调度器)的ip配置成web01的网关
同理web02一致
systemctl restart network  重启网络

测试:

在win10上使用浏览器访问10.0.0.1,刷新浏览器测试负载均衡
PS:刷新间隔时间需要稍长一点

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

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

相关文章

HoudiniVex笔记_P24_ForceBasics力基础

原视频:https://www.youtube.com/playlist?listPLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili Houdini版本:19.5 1、什么是Force 本章主要讲重力、弹力、速度与质量、…

强训第33天

选择 C A ping是TCP/IP协议族的一部分,使用ICMP协议,ICMP底层使用IP协议。如果要ping其他网段,则需要设置网关。 如果是二层交换机故障,则ping同网段的也会不通。 C Dos攻击被称之为“拒绝服务攻击”,其目的是使计算机…

网页设计详解(一)-HTML简介

本文作为博主学习笔记:2023-05-04星期四 一、网页介绍 网页是构成网站的基本元素,它是一个包含HTML标签的纯文本文件,是超文本标记语言格式(文件扩展名为.html或.htm)。网页通常用图像档来提供图画,通过浏览器来阅读。 超文本介…

C#__Action和Func委托的基本用法

// 类 class DelegateC{// Action,内置的委托类型,引用了一个void返回值类型的方法,T表示方法参数public static void AText1(){Console.WriteLine("Atext1");}public static void AText2(int x){Console.WriteLine("Atext2&…

【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

目录 一、问题背景二、修改方法2.1 修改种子2.2 使用linux中的 /dev/urandom 生成随机数 三、/dev/random 和 /dev/urandom 的原理3.1 参考连接3.2 重难点总结3.2.1 生成随机数的原理3.2.2 随机数生成器的结构3.2.3 二者的区别和选择 四、在代码的使用方法 一、问题背景 在一个…

2023一建各科考点归纳

一级建造师《建设工程项目管理》高频考点 1Z201000建设工程项目的组织与管理 1Z201010建设工程管理的内涵和任务 系统的目标决定了系统的组织,而组织是目标能否实现的决定性因素。 建设工程管理涉及工程项目全过程,包括: 决策阶段-开发管理: 实施阶…

《零基础7天入门Arduino物联网-01》学前必看

配套视频课程:《零基础学Arduino物联网,入门到进阶》 配套课件资料获取:微联实验室 配套学习套件购买:淘宝搜索店铺【微联实验室】 学前须知 注意事项 本系列课程主要针对零基础的物联网爱好者群体开发,非系统性讲解…

Java 中操作 Redis

文章目录 一、Redis 常用数据类型二、Redis 常用操作命令1. 字符串命令2. 哈希命令3. 列表命令4. 集合命令5. 有序集合命令6. 通用命令 三、在 Java 中操作 Redis1. 导入 maven 坐标2. 配置 Redis 数据源3. 编写配置类 四、在代码中的具体使用 一、Redis 常用数据类型 Redis 存…

6.4 恶意代码

数据参考:CISP官方 目录 恶意代码概念及发展历程恶意代码的传播方式恶意代码防护 一、恶意代码概念及发展历程 1、什么是恶意代码 什么是恶意代码 《中华人民共和国计算机信息系统安全保护条例》第二十八条:“计算机病毒,是指编制或者…

VMware虚拟机下载与安装

VMware虚拟机下载与安装 目录 VMware虚拟机下载与安装[TOC](目录) 概述 1. 下载虚拟机1.1 访问官网1.2 点击产品菜单,然后选择产品 VMware Workstation Pro1.3 选择试用版下载 2.安装虚拟机2.1 右键点击安装包,选择以管理员身份运行2.2 按照说明进行安装…

玩转VS code 之 C/C++ 环境配置篇

PS:俺是菜鸟,整理和踩坑试错花了不少时间,如果这篇文章对您有用的话,请麻烦您留下免费的赞赞,赠人玫瑰,手留余香,码字踩坑不易,望三连支持 上一篇:玩转 VS code 之下载篇…

数字人如何赋能汽车品牌营销线下实时交互?

为了进一步巩固和拓展消费群体,扩大品牌影响力,别克汽车在线下开展了新品体验日活动,在品鉴会现场数字人影萱作为神秘嘉宾惊喜亮相,与现场嘉宾和众多媒体同屏实时互动,这虚拟与现实的碰撞互动形式,让现场嘉…

复合 类型

字符串和切片 切片 切片的作用是允许你引用集合中部分连续的元素序列,而不是引用整个集合。 例如: let s String::from("hello world");let hello &s[0..5]; // 切片 [0,5) 等效于&s[..5] let world &s[6..11]; // 切片…

Puppeteer vs Selenium的主要区别

Puppeteer vs. Selenium:他们来自哪里? Google Puppeteer是一个 Node.js 库和浏览器测试框架。该技术旨在提供高级应用程序编程接口,以通过 DevTools 协议控制无头 Chrome。Selenium 支持多种浏览器和语言,而 Puppeteer 只专注于 …

Leetcode-每日一题【剑指 Offer 32 - III. 从上到下打印二叉树 III】

题目 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20…

清风数学建模——拟合算法

拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念 在前面的篇幅中提到可以使用插值算法,通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题…

设计模式之原型模式详解

前言 在设计模式的系列文章中,我们前面已经写了工厂模式、单列模式、建造者模式,在针对创建型模式中,今天想跟大家分享的是原型模式,我觉的这种模式叫克隆模式会更佳恰当。原型模式的目的就是通过复制一个现有的对象来生成一个新…

vite4+vue3+electron23.3+ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包

vite4vue3electron23.3ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包 主要包依赖 "electron-store": "^8.1.0", //全局数据状态管理,可选择性安装"electron": "23.3.8","electron-builder": &q…

驱动控制LED灯

编写驱动代码,初步实现串口输入逻辑控制开发板的LED灯的亮灭 代码示例 head.h #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPD;unsigned int IDR;unsigned int ODR; }gp…

PDManer元数建模

学习文档 PDManer元数建模-v4-操作手册 (yuque.com)https://www.yuque.com/pdmaner/docs/pdmaner-manual#goEFW 建表 -- 创建用户表2 -- 创建用户表2 √ create table USER_TEST_WXX2 ( -- 主键自增generated by default as identity primary keyUSER_ID NUMBER g…