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    #保存策略

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

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

相关文章

Java SPI加载机制

SPI加载机制 SPI(Service Provider Interface)是一种通过外界配置来加载具体代码内容的技术手段。SPI是JDK内置的一种服务提供发现机制,用于实现框架的扩展和组件替换。 在SPI中,框架提供一整套接口,使用者实现这些接…

学习红外成像仪开发注意要点

学习红外成像仪开发注意要点 三河凡科科技飞讯红外成像仪开发学习注意要点 红外成像仪是一种高级的光学设备,可用于探测、分析和显示红外辐射,它广泛应用于医学、军事、石油、矿产资源勘探等领域。红外成像仪的开发需要注意以下几个方面: 1…

(搜索) 剑指 Offer 12. 矩阵中的路径 ——【Leetcode每日一题】

❓剑指 Offer 12. 矩阵中的路径 难度:中等 给定一个 m * n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构…

Spring项目使用Redis限制用户登录失败的次数以及暂时锁定用户登录权限

文章目录 背景环境代码实现0. 项目结构图(供参考)1. 数据库中的表(供参考)2. 依赖(pom.xml)3. 配置文件(application.yml)4. 配置文件(application-dev.yml)5…

在ubuntu+cpolar+rabbitMQ环境下,实现mq服务端远程访问

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

【Java转Go】快速上手学习笔记(二)之基础篇一

目录 创建项目数据类型变量常量类型转换计数器键盘交互流程控制代码运算符 创建项目 上篇我们安装好了Go环境,和用IDEA安装Go插件来开发Go项目:【Java转Go】快速上手学习笔记(一)之环境安装篇 。 这篇我们开始正式学习Go语言。我…

MyBatis动态SQL:打造灵活可变的数据库操作

目录 if标签trim标签where标签set标签foreach标签 动态SQL就是根据不同的条件或需求动态地生成查询语句,比如动态搜索条件、动态表或列名、动态排序等。 if标签 在我们填写一些信息时,有些信息是必填字段,有的则是非必填的,这些…

淘宝API接口的实时数据和缓存数据区别

电商API接口实时数据是指通过API接口获取到的与电商相关的实时数据。这些数据可以包括商品库存、订单状态、销售额、用户活跃度等信息。 通过电商API接口,可以实时获取到电商平台上的各种数据,这些数据可以帮助企业或开发者做出及时的决策和分析。例如&…

vue动态修改audio地址

问题:点击后替换url地址,实现了,但是播放器依旧没有反应。 解决:vue中动态替换只是替换了地址,并没有告诉audio标签是否要执行,执行什么操作。要load后才能让它知道,是在喊他,他需求…

秒懂算法 | 汉诺塔问题与木棒三角形

在数学与计算机科学中,递归(recursion)是指一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算&#x…

系统安全测试要怎么做?

进行系统安全测试时,可以按照以下详细的步骤进行: 1、信息收集和分析: 收集系统的相关信息,包括架构、部署环境、使用的框架和技术等。 分析系统的安全需求、威胁模型和安全策略等文档。 2、威胁建模和风险评估: 使…

leetcode292. Nim 游戏(博弈论 - java)

Nim 游戏 Nim 游戏题目描述博弈论 上期经典算法 Nim 游戏 难度 - 简单 原题链接 - Nim游戏 题目描述 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。 你们轮流进行自己的回合, 你作为先手 。 每一回合,轮到的人拿掉 1 -…

494. 目标和

494. 目标和 原题链接:完成情况:解题思路:数组回溯法动态规划 参考代码:数组回溯法__494目标和__动态规划 经验吸取 原题链接: 494. 目标和 https://leetcode.cn/problems/target-sum/description/ 完成情况&#…

Android进阶之多级列表

遇到一个需求需要显示多级列表,因为界面是在平板上的,所以层级是从左向右往下排的,类似于 我当时的写法是在xml布局里一个个RecyclerView往下排的 当然前提是已经规定好最大的层级我才敢如此去写界面,如果已经明确规定只有两级或…

69 # 强制缓存的配置

强制缓存 强制缓存:以后的请求都不需要访问服务器,状态码为 200协商缓存:每次都判断一下,告诉是否需要找缓存,状态码为 304 默认强制缓存,不缓存首页(如果已经断网,那这个页面应该…

Python发送QQ邮件

使用Python的smtplib可以发送QQ邮件,代码如下 #!/usr/bin/python3 import smtplib from email.mime.text import MIMEText from email.header import Headersender 111qq.com # 发送邮箱 receivers [222qq.com] # 接收邮箱 auth_code "abc" # 授权…

Dockerfile概念、镜像原理、制作及案例讲解

1.Docker镜像原理 Linux文件操作系统讲解 2.镜像如何制作 3.Dockerfile概念 Docker网址:https://hub.docker.com 3.1 Dockerfile关键字 4.案例

【数据结构OJ题】链表分割

原题链接:https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId8&&tqId11004&rp2&ru/activity/oj&qru/ta/cracking-the-coding-interview/question-ranking 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2…

爬虫逆向实战(十七)--某某丁简历登录

一、数据接口分析 主页地址:某某丁简历 1、抓包 通过抓包可以发现数据接口是submit 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个enPassword加密参数 请求头是否加密? 通过查看请求头可以发现有一个To…

【面试高频题】难度 3/5,字典树热门运用题

题目描述 这是 LeetCode 上的 「745. 前缀和后缀搜索」 ,难度为 「困难」。 Tag : 「字典树」 设计一个包含一些单词的特殊词典,并能够通过前缀和后缀来检索单词。 实现 WordFilter 类: WordFilter(string[] words) 使用词典中的单词 words 初…