LVS负载均衡集群+NAT部署

news2024/11/19 2:33:58

集群的概念和目的

 集群的定义

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

集群的作用

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

垂直扩展向上扩展,增加单个机器的性能----->升级硬件

水平扩展向外扩展,增加设备。并行的运行多个服务,通过网络和算法来调度服务分配的问题。

集群的优点

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

企业集群的类型

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


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


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

集群的可靠性指标

MTBF:mean time between failure 系统在正常运行期间无故障的平均时间,一般用小时或者天数来表示。MTBF值越高,系统的可靠性越高,出现故障的概率也就越小。

MTTR:系统从发生故障到恢复正常运行的时间(解决问题花了多久),一般用小时或者天数表示。MTTR越小,说明系统恢复故障的能力越强。

A:系统的可靠性指标,越高越好

A=MTBF/(MTBF+MTTR)

设计集群时的考虑原则:

1.可扩展性:集群要有随时可以添加或者删除设备的能力。动态的扩缩容。

2.可靠性:集群中如果有节点发生故障,可以快速检测并且自动切换。

3.负载均衡:合理的分配负载,避免单个节点过载,影响整体性能

4.可维护性:能够方便的进行配置,部署,维护,监控。降低成本。

5.安全性:防止恶意的攻击以及数据的泄密,还有数据丢失。

6.易用性:相关的工作人员可以方便的进入集群,能够快速的开发,部署,测试等等。

LVS集群

lvs集群中的相关术语

vs(virtual server) lvs服务的逻辑名字,外部访问lvs集群时提供的一个虚拟IP地址和端口

DS Director server :lvs集群当中的主服务器,也叫调度器,是整个lvs集群的核心。接受客户端的请求转发到后端RS

RS:real server ,lvs的后端的真实服务器的IP,接受到了DS的请求之后,返回响应结果。

CIP:client ip 客户端的IP地址

VIP virtual ip :对外访问的统一虚拟IP地址。

DIP:Director IP调度器在lvs内部使用的IP地址。用于和真实服务器(RS)进行通信。

RIP:后端真实服务器的IP地址。

lvs负载均衡的方式

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

NAT(地址转换) 


 缺点:调度器作为所有节点服务器的网关,既作客户端的访问入口,也作节点服务器响应的访问出口,也就意味着调度器将成为整个集群系统的瓶颈。

优点:由于再转发过程中做了地址转发,对于节点服务器的安全性比其它模式较好。

调度器至少要有2个网卡,一个承载VIP用于接收客户端的请求,另一个用于使用私有IP在同一个局域网中与节点服务器相互通信。
 

NAT模式的工作原理:

1.调度器上配置双网卡,一个指内,一个指外

2.配置一个可以和公网进行通信的VIP

3.配置转发策略,如果访问vip就会把请求的数据转发到后台的RS。

12.0.0.1:80 ------ 192.168.233.30:80

4.RS处理完请求之后响应客户端。先到调度器,调度器进行地址转换,把内网地址转换成公网地址,调度器响应给用户

192.168.233.30:80------调度器-----nat转换-------12.0.0.1:80 -------客户端

数据请求进入调度器做的是请求报文中ip地址的修改

数据响应进入调度器,根据NAT配置进行地址转换。

DR模式:

直接路由模式。请求由调度器完成,但是响应给客户端客户端由真实服务器直接响应,不需要通过调度器。

好处:性能高,而且可以配置代理地址(VIP)的高可用,不存在单点故障。

LVS的负载调度算法 

ipvsadm工具使用

用法作用
-A 添加虚拟服务器
-D 删除整个虚拟服务器
-s(rr,wrr,dh.sh)指定负载调度的算法


 固定调度算法:rr, wrr, dh,sh

rr:轮询算法(Round Robin)

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


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

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


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

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


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

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


 动态调度算法: wlc,lc,lblc 

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

tomcat+NAT的部署

负载调度器:配置双网卡:20.0.0.10(内网)12.0.0.1(ens36)

两台后端web真实服务器:20.0.0.20 20.0.0.30

一台NFS共享服务器:20.0.0.40

客户端:40

关闭防火墙
systemctl stop firewalld
setenforce 0

test2,test3,test4 安装
yum -y install nfs-utils rpcbind

test4为nfs共享目录
mkdir kgc benet
echo "this is kgc" > /opt/kgc/index.html
benet同理

vim /etc/exports
/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
systemctl restart rpcbind
systemctl restart nfs
exportfs -rv

test2 
systemctl restart rpcbind
systemctl trstart nfs
showmount -e 20.0.0.40
yum -y install httpd
mount 192.168.233.40:/opt/kgc /var/www/html

test3
systemctl restart rpcbind
systemctl trstart nfs
showmount -e 20.0.0.40
mount 20.0.0.40:/opt/benet /var/www/html
df -h


test2
curl 20.0.0.20

test3
curl 20.0.0.30

test2
配置网卡
vim ifcfg-ens33
gateway=20.0.0.10

test3
vim ifcfg-ens33
gateway=20.0.0.10

test1 调度器配置
vim ifcfg-ens33
#gateway
#dns1

给外网添加一个网卡
cp ifcfg-ens33 ifcfg-ens36
ipaddr=12.0.0.1
#gateway
#dns
systemctl restart network

yum -y install iptables-service iptables
iptables -F
iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 12.0.0.1

iptables -t nat -vnL
查看

yum -y install ipvsadm*

ipvsadm -A -t 12.0.0.1:80 -s rr

ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.40:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.70:80 -m

ipvsadm-save>/etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service

ipvsadm -d -r 20.0.0.20:80 -t 20.0.0.10:80
ipvsadm -D -t 20.0.0.10:80


ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.40:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.70:80 -m
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm 
ipvsadm -ln

vim /etc/sysctl.conf
最后一行添加
net.ipv4.ip_forward=1
sysctl -p
ipvsadm -ln  查看

curl 12.0.0.1
this is kgc

开另一台客户机 
vim ifcfg-ens33
gateway=12.0.0.1
ipaddr=12.0.0.10
wq
systemctl restart network ifconfig

内部浏览器搜索12.0.0.1

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

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

相关文章

感觉真的要被淘汰了,工作3年,不懂自动化,看着公司的新员工都是自动化岗....

这两天和朋友谈到软件测试的发展:这一行的变化确实蛮大,从开始最基础的功能测试,到现在自动化、性能、安全乃至于以后可能出现的大数据测试、AI测试岗位需求逐渐增多。我也在软件测试这行摸爬滚打了十年了,正好有朋友问我&#xf…

最全面的msvcp140_atomic_wait.dll丢失的解决方法,教你怎么快速修复dll文件

在众多电脑使用者中,碰到过"msvcp140_atomic_wait.dll文件丢失"这样的问题的人并不鲜见。突如其来的错误提示常让人感到困扰,但无需过于焦虑,因为这类问题多数都有成熟的解决方案。在这篇文章中,我们将深入探讨如何针对…

Codeforces Round #905(Div.3)

A. Morning 题目 给定4位数字码,每位数字取值0-9。排列顺序如下: 初始光标指向1,每次可执行其中一个操作 1、输出光标所指数字 2、移动光标到相邻位置上。如3可移动到2或4,其中1只能移动到2,0只能移动到9。 问&…

离线电商数仓(一)

一、数据仓库概述 1. 数据仓库 数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个数据源的大量数据,企业可以从数据仓库中获取宝贵数据进行决策。 数据分类:业务数据、日志数据 将这两种数据从业务系统采集到Hive中&…

(yum+内网)centos7两种方式安装jdk11

一、yum在线安装 需要提前配置yum源。 搜索可安装的版本,可以看到有1.6、1.7、1.8、11共4个版本 yum search openjdk 安装jdk11 yum -y install java-11-openjdk 验证 java -version 二、内网离线安装 需要提前下载安装包。 安装包下载地址 https://www.or…

爬虫一般采用什么代理IP,Python爬虫代理IP使用方法详解

在进行网络爬虫开发时,使用代理IP是一种常见的技术手段,可以帮助爬虫程序实现更高效、稳定和隐秘的数据抓取。本文将介绍爬虫一般采用的代理IP类型,并详细解释Python爬虫中使用代理IP的方法。 一般来说,爬虫采用以下几种代理IP类型…

类模板Array带二个模板参数

#include <ostream> #include <iostream> using namespace std; //Array.h template <typename T, int size> class Array{ public: Array(); // 也算是默认构造函数&#xff0c;因为不需要传进去参数 bool push(T elem); void display(); priv…

Nacos全面知识 ----微服务 SpringCloud

快速入门 分级存储模型 修改集群配置 Nacos设置负载均衡策略 集群优先 权重优先 Nacos热更新配置 Nacos添加配置信息 微服务配置拉取 热更新:推荐使用第二种方法进行热部署 ConfigurationProperties(prefix "pattern") 是 Spring Boot 中用于自动配置属性的注解。它…

用“价值”的视角来看安全:《构建新型网络形态下的网络空间安全体系》

文章目录 写在前面安全认知的硬核概念威胁的演化路径与发展趋势构建网络空间安全体系好书推荐 写作末尾 写在前面 网络空间安全体系是建立在先进技术、严密监控和综合策略之上的综合性框架&#xff0c;旨在保护网络免受恶意攻击、数据泄露和网络犯罪的威胁&#xff0c;其核心包…

【代码随想录第48天】动态规划7

代码随想录第48天| 动态规划7 322. 零钱兑换279.完全平方数 322. 零钱兑换 LeetCode题目&#xff1a; 322. 零钱兑换 代码随想录&#xff1a;322. 零钱兑换 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计…

Failed to start The nginx HTTP and reverse proxy server.

本章教程主要分享一下&#xff0c;当nginx 启动时&#xff0c;遇到报这个错误时的一个解决问题思路。 目录 1、观察报错信息 2、尝试性解决 1、观察报错信息 根据日志的信息&#xff0c;我们至少可以知道2个比较信息。 1、操作用户执行命令是在非root权限下进行操作的。 2、Ad…

NPI加速器在烽火科技SMT车间的应用:贴片机程序制作效率的革新

烽火科技&#xff0c;一个在国内颇具知名度的高科技企业&#xff0c;坐落于武汉光谷的SMT车间中&#xff0c;机器嗡嗡作响&#xff0c;作业员们忙碌地进行着生产。工厂使用的是ASM的贴片机&#xff0c;使用Sipalce Pro作为其编程软件。然而&#xff0c;在高效的生产线背后&…

面试算法37:小行星碰撞

题目 输入一个表示小行星的数组&#xff0c;数组中每个数字的绝对值表示小行星的大小&#xff0c;数字的正负号表示小行星运动的方向&#xff0c;正号表示向右飞行&#xff0c;负号表示向左飞行。如果两颗小行星相撞&#xff0c;那么体积较小的小行星将会爆炸最终消失&#xf…

使用 git revert 回退代码

步骤一&#xff1a;查看提交历史 git log 这会列出你的提交历史&#xff0c;包括提交的哈希值、作者、日期和提交消息。 退出日志&#xff1a;按键盘上的 Q 即可。 步骤二&#xff1a;使用 git revert 回退代码 找到你需要回退的版本号&#xff0c;即提交的哈希值&#xff…

vue3中刷新当前页面的三种方法

<div click"kannoFn">kanno</div> 1.location.reload()&#xff0c;缺点&#xff1a;刷新时会页面闪白 function kannoFn(){location.reload() } 2.history.go(0)&#xff0c;缺点&#xff1a;刷新时会页面闪白 function kannoFn(){history.go(0) } …

法国橡木与美国橡木:酒桶如何影响葡萄酒?

木材赋予葡萄酒神奇的质地、香气和味道&#xff0c;这是其他任何方式都无法实现的。大多数世界上最好的葡萄酒都是在桶中陈酿的&#xff0c;法国和美国的橡木是最常用的木材&#xff0c;还有来自匈牙利、罗马尼亚和高加索山脉的橡木&#xff0c;其他木材&#xff0c;如金合欢&a…

【JavaEE】TCP数据报套接字编程

一、TCP数据报套接字编程 1.1 ServerSocket API ServerSocket 是创建TCP服务端Socket的API ServerSocket 构造方法&#xff1a; ServerSocket 方法&#xff1a; 1.2 Socket API Socket 是客户端Socket&#xff0c;或服务端中接收到客户端建立连接&#xff08;accept方法&…

jira 实现search 查询

举一个简单的例子&#xff1b; 一个 bug 包含 leader, 9月13号解决。找到这条记录。 模糊查询 summary ~ "leader"比较大小 created < "2023/09/13"排序 ORDER BY created DESC参考&#xff1a; https://confluence.atlassian.com/jira063/advanced…

C++项目——云备份-②-第三方库认识

文章目录 专栏导读1. json 认识1.1 JSON 数据结构的特点 2. jsoncpp库认识3. json实现序列化案例4. json实现反序列化案例5. bundle文件压缩库认识6. bundle库实现文件压缩案例7.bundle库实现文件解压缩案例8.httplib库认识9. httplib库搭建简单服务器案例10. httplib库搭建简单…

python实现excel的数据提取

一文带你实现excel表格的数据提取 今天记录一下如何使用python提取Excel中符合特定条件的数据 在数据处理和分析的过程中&#xff0c;我们经常需要从Excel表格中提取特定条件下的数据。Python的pandas库为我们提供了方便的方法来进行数据查询和过滤。 Pandas 是 Python 语言…