LVS负载均衡群集 1:NAT地址转换模式

news2024/10/7 10:16:20

文章目录

  • 1. 群集概述
    • 1.1 什么是群集
    • 1.2 群集的分类
      • 1.2.1 负载均衡集群(Load Balance Cluster)
      • 1.2.2 高可用群集 (High Availbility Cluster)
      • 1.2.3 高性能运输群集 (High Performance Computer Cluster)
    • 1.3 群集的目的
  • 2. 负载均衡集群
    • 2.1 集群架构
      • 2.1.1 第一层,负载调度器 (Load Balancer)
      • 2.1.2 第二层,服务器池 (Server Pool)
      • 2.1.3 第三层,共享存储 (Share Storage)
    • 2.2 负载均衡群集的三种工作模式
      • 2.2.1 NAT模式 (地址转换)
      • 2.2.2 TUN模式 (IP隧道)
      • 2.2.3 DR模式 (直连路由)
  • 3. LVS (Linux虚拟服务器)
    • 3.1 LVS简介
    • 3.2 LVS相关术语
    • 3.2 LVS的负载调度算法
      • 3.2.1 轮询 (Round Robin)
      • 3.2.2 加权轮询(Weighted Round Robin)
      • 3.2.3 目的地址哈希调度(destination hashing)
      • 3.2.4 源地址哈希调度(source hashing)
      • 3.2.5 最少连接 (Least Connections)
      • 3.2.6 加权最少连接(Weighted Least Connections)
      • 3.2.7 基于地址的最小连接数调度(locality-based least-connection)
    • 3.3 ipvsadm工具
      • 3.3.1 作用
      • 3.3.2 选项及其功能
  • 4. LVS-NAT地址转换实操
    • 4.1 前置准备
    • 4.2 NFS文件存储共享服务器配置
    • 4.3 节点服务器1配置
    • 4.4 节点服务器2配置
    • 4.5 LVS调度器配置
    • 4.6 客户端配置

1. 群集概述

1.1 什么是群集

  • Cluster,集群、群集
  • 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口,相当于一台大型计算机

1.2 群集的分类

根据群集所针对的目标差异和适用场景,可分为3种类型

1.2.1 负载均衡集群(Load Balance Cluster)

  • 提高系统响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力

  • LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。

1.2.2 高可用群集 (High Availbility Cluster)

  • 提高系统可靠性,减少中断时间,确保服务的连续性(通常使用 N 个 9 来代表高可用的指标)

  • HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点

1.2.3 高性能运输群集 (High Performance Computer Cluster)

  • 通过云计算或分布式计算获取高性能的CPU、内存等资源,来提高整体运算能力

  • “并行计算”,通过专用硬件和软件将高性能依赖于“分布式运算”多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

1.3 群集的目的

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

2. 负载均衡集群

2.1 集群架构

2.1.1 第一层,负载调度器 (Load Balancer)

访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP 地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。

2.1.2 第二层,服务器池 (Server Pool)

群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。

2.1.3 第三层,共享存储 (Share Storage)

为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器

2.2 负载均衡群集的三种工作模式

2.2.1 NAT模式 (地址转换)

  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

2.2.2 TUN模式 (IP隧道)

  • 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器

  • 服务器节点分散在互联网中的不同位置具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信,安全性要差一些

2.2.3 DR模式 (直连路由)

  • 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络(与NAT模式的区别)

  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道(与TUN模式的区别)

3. LVS (Linux虚拟服务器)

3.1 LVS简介

LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法

3.2 LVS相关术语

  • DS:Director Server。指的是前端负载均衡器。
  • RS:Real Server。节点服务器,后端真实的工作服务器。
  • VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
  • DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
  • RIP:Real Server IP,后端服务器的IP地址。
  • CIP:Client IP,访问客户端的IP地址。

3.2 LVS的负载调度算法

固定调度算法

3.2.1 轮询 (Round Robin)

  • 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器均等地对待每一台服务器,而不管服务器实际的连接数和系统负载

3.2.2 加权轮询(Weighted Round Robin)

  • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
  • 保证性能强的服务器承担更多的访问流量

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

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

3.2.4 源地址哈希调度(source hashing)

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

动态调度算法

3.2.5 最少连接 (Least Connections)

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

3.2.6 加权最少连接(Weighted Least Connections)

  • 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
  • 性能较高的节点将承担更大比例的活动连接负载

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

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

3.3 ipvsadm工具

3.3.1 作用

  1. 创建虚拟服务器
  2. 添加、删除服务器节点
  3. 查看群集及节点情况
  4. 保存负载均衡分配策略

3.3.2 选项及其功能

选项功能
-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a表示添加真实服务器(节点服务器)
-d删除某一个节点
-t指定 VIP地址及 TCP端口
-r指定 RIP地址及 TCP端口
-m表示使用 NAT群集模式
-g表示使用 DR模式
-i表示使用 TUN模式
-w设置权重(权重为 0 时表示暂停节点)
-p 60表示保持长连接60秒(默认关闭连接保持)
-l列表查看 LVS 虚拟服务器(默认为查看所有)
-n以数字形式显示地址、端口等信息,常与“-l”选项组合使用

4. LVS-NAT地址转换实操

在这里插入图片描述

4.1 前置准备

192.168.67.100 #LVS调度器
192.168.67.101 #节点服务器1
192.168.67.102 #节点服务器2
192.168.67.103 #NFS文件存储共享服务器
192.168.67.104 #客户端

systemctl stop firewalld
setenforce 0
#所有机器关闭防火墙和selinux策略

4.2 NFS文件存储共享服务器配置

rpm -q rpcbind nfs-utils
#查看是否安装rpcbind nfs

#如果没有安装
yum install -y nfs-utils
yum install -y rpcbind

在这里插入图片描述

mkdir /opt/scj1 /opt/scj2
#创建共享目录

cd /opt

echo 'this is scj1 test web page!' > scj1/test.html
echo 'this is scj2 test web page!' > scj2/test.html
#添加文件内容

在这里插入图片描述

vi /etc/exports
#添加共享策略

opt/lzq1   192.168.67.0/24(rw,sync,no_root_squash)
                     #设置读写权限,直接读到磁盘中,客户端root用户不进行降权
/opt/lzq2   192.168.6、.0/24(rw,sync,no_root_squash)

exportfs -rv
#发布共享

在这里插入图片描述

#前往两个节点服务器
showmount -e 192.168.67.103
#查看共享情况

在这里插入图片描述
在这里插入图片描述

4.3 节点服务器1配置

yum install -y httpd
#安装web服务

vim /etc/httpd/httpd.conf
#修改配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mount 192.168.67.103:/opt/scj1 /var/www/html
#挂载共享文件夹

df -hT
#查看挂载情况

在这里插入图片描述

cat /var/www/html/test.html
#查看当前主页文件是否存在

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
#编辑配置文件

#添加
KeepAlive off
#关闭长连接

在这里插入图片描述

systemctl enable --now httpd
#开启httpd服务开机自启

ss -natp |grep 80
#检测是否成功开启lsof -i :80

在这里插入图片描述

#配置网关
GATWAY=192.168.67.100

在这里插入图片描述

4.4 节点服务器2配置

yum install -y epel-release
#安装epel库
yum install -y nginx
#安装nginx服务软件

在这里插入图片描述

vim /etc/nginx/conf.d/default.conf

在这里插入图片描述

cd /usr/share/nginx/html

mv * /opt
#将主要文件转移到/opt目录下

在这里插入图片描述

mount 192.168.67.103:/opt/scj2 /usr/share/nginx/html
#挂载共享文件

df -Th
#查看挂载情况

在这里插入图片描述

ls /usr/share/nginx/nginx
#查看是否有共享的主页文件

在这里插入图片描述

mv /opt/*.html/ .
#将原网页文件转移回来

systemctl start nginx
#开启服务

在这里插入图片描述

#在浏览器测试
http://192.168.67.101/test.html

在这里插入图片描述

http://192.168.67.102/test.html

在这里插入图片描述

#配置网关
GATWAY=192.168.67.100

在这里插入图片描述

4.5 LVS调度器配置

#添加第二张网卡

在这里插入图片描述

1. cd /etc/sysconfig/network-scripts/
#前往网卡配置所在目录

2. cp ifcfg-ens33 ifcfg-ens36
#拷贝33网卡配置文件

3. vim ifcfg-ens36
#编辑网卡文件

在这里插入图片描述

systemctl restart network
#重启网卡

ifconfig ens36

在这里插入图片描述

vim /etc/sysctl.conf
#添加路由转发功能
#添加
net.ipv4.ip_forward = 1


sysctl -p
#刷新状态

在这里插入图片描述

iptables -F
#删除默认规则
iptables -F -t nat
#删除nat表规则

iptables -t nat -A POSTROUTING -s 192.168.67.0/24 -o ens33 -j SNAT --to 12.0.0.10

在这里插入图片描述

cd /user/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs
ls
#查看ip_vs模块

在这里插入图片描述

modprobe ip_vs
#加载ip_vs通用模块for i in `ls /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs |grep -o "^[^.]*"> do
> modprobe $i
> done
#使用一个for循环直接全部搞定

在这里插入图片描述

#安装ipvsadm工具
yum install -y ipvsadm

在这里插入图片描述

systemctl start ipvsadm
#直接启动

在这里插入图片描述

vim /var/log/messages
#查看系统日志

在这里插入图片描述

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

systemctl start ipvsadm
#再次启动

在这里插入图片描述

ipvsadm -ln
#查看当前有无策略

#如果有
ipvsadm -C  #清空策略
 
#如果没有
ipvsadm -A -t 12.0.0.10:80 -s rr 
#指定虚拟服务器IP地址为12.0.0.10和80端口使用轮询算法

ipvsadm -a -t 12.0.0.10:80 -r 192.168.67.101:80 -m
#指定虚拟服务器IP地址为12.0.0.10,真实服务器地址为192.168.67.101,及使用nat模式

ipvsadm -a -t 12.0.0.10:80 -r 192.168.67.102:80 -m
#指定虚拟服务器IP地址为12.0.0.10,真实服务器地址为192.168.67.101,及使用nat模式

ipvsadm -ln
#查看当前策略

在这里插入图片描述

ipvsadm
#激活策略

在这里插入图片描述

4.6 客户端配置

#设置和调度器相同网段网址和网关
ifconfig ens33
route -n

在这里插入图片描述

#测试
curl 12.0.0.10/test.html

在这里插入图片描述

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

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

相关文章

iOS pod repo push 报错 ld: file not found: libarclite_iphoneos.a 问题解决方案

背景 Xcode 升级 14.3 之后,在Xcode 运行项目会收到以下错误 File not found: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a 项目中可以通过以下方法解决编译错误,就是在 …

【论文精读】Hierarchical Text-Conditional Image Generation with CLIP Latents

Hierarchical Text-Conditional Image Generation with CLIP Latents 前言Abstract1 Introduction2 Method2.1 Decoder2.2 Prior 3 Image Manipulations3.1 Variations3.2 Interpolations3.3 Text Diffs 4 Probing the CLIP Latent Space5 Text-to-Image Generation6 Related W…

论文阅读-A General Language for Modeling Social Media Account Behavior

论文链接:https://arxiv.org/pdf/2211.00639v1.pdf 目录 摘要 1 Introduction 2 Related work 2.1 Automation 2.2 Coordination 3 Behavioral Language for Online Classification 3.1 BLOC alphabets 3.1.1 Action alphabet 3.1.2 Content alphabets 3.…

【C++】源文件.cpp和头文件.h分离编程

优势介绍 将C代码分为头文件(.h)和源文件(.cpp)的做法有以下几个好处: 模块化和代码组织:将函数和类的声明(包括函数原型、类的成员和属性等)放在头文件中,将函数和类的…

感知哈希-图片相似度分析

‍本文作者是360奇舞团开发工程师 引言 最近在做小程序换肤功能,因为不同主题色的小程序对应了不同图片库,项目内图片引用的方式又是线上URL地址配置形式,新加一套图片时,就要将图片和线上URL链接对比之后,配置到对应的…

linux日志轮转工具logrotate

目录 一、日志轮转工具的由来 二、如何去使用logrotate工具 2.1 使用cron驱动logrotate 2.2 使用systemd的timer驱动logrotate 三、logrotate命令的子命令解析 四、logrotate的配置 4.1 配置文件的位置 4.2 配置项的具体含义 一、日志轮转工具的由来 在Linux环境中能够…

代码随想录算法训练营第48天 | ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

文章目录 前言一、198.打家劫舍二、213.打家劫舍II三、337.打家劫舍III总结 前言 dp[]; 一、198.打家劫舍 仔细一想,当前房屋偷与不偷取决于 前一个房屋和前两个房屋是否被偷了。 动规五部曲分析如下: 确定dp数组(dp table)以及下…

【Java|golang】210. 课程表 II---拓扑排序

一、拓扑排序的定义&#xff1a; 先引用一段百度百科上对于拓扑排序的定义&#xff1a; 对一个有向无环图 ( Directed Acyclic Graph 简称 DAG ) G 进行拓扑排序&#xff0c;是将 G 中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点 u 和 v &#xff0c;若边 <…

Mybatis-plus的QueryWrapper的函数,常见方法

获取id 有时候我们新建一条数据的时候要生成一个新的id&#xff0c;我们可以通过下面的类获取 IdWorker.getId()mybatis-plus同时存在and和or查询 LambdaQueryWrapper<House> queryWrapper new QueryWrapper<House>().lambda(); queryWrapper.eq(House::getTena…

安果相亲-找到心仪的另一半 一个安卓免费找对象软件推荐

安果相亲&#xff1a;全国范围内的真实恋爱相亲平台&#xff01; 致力于帮助用户寻找真实恋爱&#xff0c;我们的实名认证机制确 保用户信息的真实性。汇集了高学历、经济稳定、丰富生活经验的优质单身男女&#xff0c;都在这里真诚地等待那个对的人。每个手机只能注册一个账户…

数据结构:线性表(队列实现)

1. 队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除操作的特殊线性表,队列具有先进先出(FIFO)的特性. 进行插入操作的一端称为队尾;进行删除操作的一端叫做队头 队列应用于 解决公平性排队(抽号机)广度优先遍历(BFS) 2. 队列的定义 和栈一样,队列也可…

【知网检索】第三届教育,语言与艺术国际学术会议(ICELA 2023)

第三届教育&#xff0c;语言与艺术国际学术会议(ICELA 2023) The 3rd International Conference on Education, Language and Art 第三届教育&#xff0c;语言与艺术国际学术会议&#xff08;ICELA 2023&#xff09;将于2023年11月17-19日在中国北京召开。会议主要围绕会议主…

电力系统知识预备及学习方向

由于电源点与负荷中心多数处于不同地区&#xff0c;也无法大量储存&#xff0c;故其生产、输送、分配和消费都在同一时间内完成&#xff0c;并在同一地域内有机地组成一个整体&#xff0c;电能生产必须时刻保持与消费平衡。因此&#xff0c;电能的集中开发与分散使用&#xff0…

explainerdashboard,一个神奇的 python 库

今天给大家分享一个神奇的 python 库&#xff0c;explainerdashboard。 https://github.com/oegedijk/explainerdashboard explainerdashboard 是一种用户友好的工具&#xff0c;可以简化复杂的机器学习模型&#xff0c;解释&#xff08;与 scikit-learn 兼容&#xff09;机器…

Bodhi Linux 7.0发布:全新亮点抢先看

导读我们非常高兴地宣布Bodhi Linux 7.0的发布&#xff0c;这是一个小型开发团队经过数月的专注开发所取得的成果。从性能增强到尖端更新&#xff0c;让我们深入了解这个版本&#xff0c;看看它为那些寻求轻量级Linux桌面体验的用户带来了什么新特性。 Bodhi Linux 7.0桌面 Bo…

12.(Python数模)(相关性分析一)相关系数矩阵

相关系数矩阵 相关系数矩阵是用于衡量多个变量之间关系强度和方向的统计工具。它是一个对称矩阵&#xff0c;其中每个元素表示对应变量之间的相关系数。 要计算相关系数矩阵&#xff0c;首先需要计算每对变量之间的相关系数。常用的相关系数包括皮尔逊相关系数和斯皮尔曼相关…

第32章 Linux内核打印实验

本手册的实验都是在buildroot系统上完成的&#xff0c;由于buildroot系统已经设置了相应的打印等级&#xff0c;所以驱动的相关打印都能正常显示在串口终端上&#xff0c;如果将实验系统换成了ubuntu&#xff0c;然后加载同样的驱动&#xff0c;会发现打印信息不见了&#xff0…

PBR纹理的10种贴图

PBR 是基于物理的渲染的首字母缩写。它试图通过模拟材料如何吸收和反射光&#xff0c;以模仿现实世界中的光流的方式产生视觉效果。最近的游戏引擎由于其逼真的效果而越来越多地使用 PBR 纹理。对于实时渲染&#xff0c;它们被认为是真实世界场景的最佳近似值。 推荐&#xff…

极星 4:一辆不需要宣传就自带美学的车

当市面上的新车都开始逐步走向更多的功能、更繁琐的设计的时候&#xff0c;极星更像一个独行的人&#xff0c;走了一条跟其他车企大相径庭的道路&#xff0c;带给我们对于同一个世界不同的视图。 不张扬、够简洁&#xff0c;从不炫耀自己但又蕴含着大的智慧&#xff0c;如夜空中…