首页 > 其他分享 >LVS负载均衡群集----NAT模式

LVS负载均衡群集----NAT模式

时间:2022-11-17 18:46:29浏览次数:50  
标签:负载 LVS ip 调度 ---- vs NAT 服务器 节点

一、集群

1.1、群集的含义

Cluster,集群,群集

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

1.2、群集的类型

  • 负载均衡群集

提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能

LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如,“DNS轮询”“反向代理”等。

  • 高可用群集

提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果

HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如,”故障切换” “双机热备” 等。

  • 高性能运算群集

提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如“云计算”、“网格计算”。

1.3、负载均衡群集的结构

  • 第一层,负载调度器

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

  • 第二层,服务器池

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

  • 第三层,共享存储

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

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

  • 地址转换
  • IP隧道
  • 直接路由

1.4.1、地址转换

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

1.4.2、IP隧道

  • IP Tunnel,简称TUN模式
  • 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
  • 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

1.4.3、直接路由

  • Direct Routing,简称DR模式
  • 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

二、LVS虚拟服务器

2.1、LVS介绍

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

在centOS7系统中,可以手动添加ip_vs模块,并查看当前系统中ip_vs模块的版本信息

[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

查看所有ip_vs调度算法的模块

在/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs/路径下

[root@localhost ~]# cd /usr/lib/modules/3.10.0-693.el7.x86_64/kernel/net/netfilter/ipvs/
[root@localhost ipvs]# ls
ip_vs_dh.ko.xz   ip_vs.ko.xz       ip_vs_lblcr.ko.xz  ip_vs_nq.ko.xz      ip_vs_rr.ko.xz   ip_vs_sh.ko.xz   ip_vs_wrr.ko.xz
ip_vs_ftp.ko.xz  ip_vs_lblc.ko.xz  ip_vs_lc.ko.xz     ip_vs_pe_sip.ko.xz  ip_vs_sed.ko.xz  ip_vs_wlc.ko.xz

2.2、LVS负载调度算法

固定调度算法

rr:轮询(Round Robin)

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

wrr:加权轮询(Weighted Round Robin)

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

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

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

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

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

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,并以它作为下一次分配的首先考虑。

三、ipvsadm工具

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

 

四、LVS-NAT部署实战

LVS调度器作为Web服务器池的网关,LVS两块网卡,分别连接内外网,使用轮询(rr)调度算法

实验环境:

 

4.1、NFS服务器192.168.118.103

关闭防火墙下载nfs服务

 

 设置权限

 

 设置共享策略

 

 开启服务发布共享

 

 

4.2、web1服务器192.168.118.100

安装apache服务

挂载

重启服务并输入IP地址查看

[root@localhost html]# systemctl restart httpd.service 

 

 

配置网关

 

 systemctl restart network重启网卡

4.3、web2服务器 192.168.118.101

 安装apache服务

挂载

 

 配置网关

 

 重启网卡systemctl restart network

4.4、负载均衡器192.168.118.102

下载ipvsadm

 

 再添加一块网卡为nat模式

 

 

更改网络设置

 

 

 

 修改ens33

 

 重启网卡服务systemctl restart network

开启路由转发功能

防火墙策略

加载ip_vs模块,安装ipvsadm工具

开启ipvsadm服务,制定策略

 

 4.4、客户机(win10)测试

客户机网关设置为网关服务器的外网网卡,使用浏览器搜索

 

 测试(两次刷新间隔一会儿时间)

 

 

 

标签:负载,LVS,ip,调度,----,vs,NAT,服务器,节点
From: https://www.cnblogs.com/zhao222/p/16897294.html

相关文章

  • vscode打开vue项目突然所有.vue文件第一行报错解决
    yarn重新安装项目所有依赖,并重启vscode后,突然所有.vue文件第一行<template>处报错Parsingerror:Cannotreadpropertiesofundefined(reading'jsx')解决方案:在vscod......
  • 实体关系的表结构设计
    业务实体间的关系关联关系A表外键B表外键关联表外键 1:1✔✔✔ 1:N✘✔✔ N:1✔✘✔ N:N✘✘✔ ......
  • Tomcat部署及优化
    一 Tomcat的简介二Tomcat的组件构成三Tomcat的功能组件结构四Tomcat的请求过程五Tomcat服务的部署六tomcat启动优化总结 Tomcat的主要目录说明bin:存放启动......
  • Linux 安装 dockers
    本文包含安装docker和docker启动指定安装查看可安装版本:yumlistdocker-ce--showduplicates|sort-r安装(直接安装最新版本)yum-yinstalldocker指定安装......
  • element ui 使用Tooltip 文字提示,文本内容中输入空格
    '\u00a0'是'nbsp'的16进制表示其他空格也可以使用下表的值:代码如下<el-tooltipeffect="light"placement="top"visible-arrow:content="(item.id+'\u00a0\u00a0......
  • Python实验报告(第12周)
      实验11:使用Python操作数据库一、实验目的和要求1、学会数据库编程接口;2、学会使用SQLite;3、学会使用MySQL。二、实验环境软件版本:Python3.1064_bit三、实......
  • jmeter,常见的几种上下文关联方法
    ......
  • js中innerHTML和createElement的效率比较
    结合js中字符串不可变的特性单次执行innerHTML和createElement时效率差不多如果重复执行,因为innerHTML=字符串,需要多次开辟空间存储字符串,所以createElement效率更高.......
  • 09python字符串
    在05python字符串基础中我们已经大致介绍过字符串,知道如何创建字符串,以及如何使用索引和切片来访问字符串中的字符。这篇文章主要介绍如何使用字符串来设置其他值的格式(比......
  • Unity检测鼠标是否与UI交互
    在Unity项目中,假设在鼠标按键时会触发游戏内的操作,但是在鼠标与UI进行交互时我们希望停止游戏中的操作,这是需要使用EventSystem中的方法来检测鼠标是否正在与UI交互privat......