lvs+上一章的内容

书接上回这次加了个keepalived

一、集群与分布式

1.1 集群介绍

**集群(Cluster)**是将多台计算机组合成一个系统,以解决特定问题的计算机集合。集群系统可以分为以下三种类型:

  • **LB(Load Balancing,负载均衡):**多个主机组成的集群,每个主机只承担一部分访问请求,从而平衡负载。
  • **HA(High Availability,高可用):**通过冗余和故障切换机制,避免单点故障(SPOF)。
  • **HPC(High-performance computing,高性能计算):**用于需要高计算能力的任务,如科学计算和复杂的数据处理。
1.2 分布式系统

分布式系统是指将计算和存储分散在多台计算机上,以提高系统的性能、可靠性和可扩展性。分布式系统的常见应用包括:

  • **分布式存储:**例如Ceph,GlusterFS,FastDFS,MogileFS等。
  • **分布式计算:**例如Hadoop和Spark。
  • **分布式应用:**通过功能拆分和微服务架构,将单一应用程序划分成多个小服务,服务之间相互协调,为用户提供最终价值。
  • **分布式静态资源:**将静态资源存储在不同的存储集群上,以提高访问效率。
  • **分布式数据和存储:**使用key-value缓存系统来提高数据访问速度。
  • **分布式计算:**如使用Hadoop集群处理大数据业务。
1.3 集群设计原则
  • **可扩展性:**集群的横向扩展能力,即增加更多节点来提高性能。
  • **可用性:**系统的无故障时间(SLA,服务级别协议)。
  • **性能:**系统的访问响应时间。
  • **容量:**单位时间内的最大并发吞吐量(如C10K问题)。

二、LVS(Linux Virtual Server)

2.1 LVS工作原理

LVS通过请求报文的目标IP、目标协议和端口,将其调度转发至某个真实服务器(RS)。根据调度算法选择RS。LVS作为内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行处理。

2.2 LVS集群体系架构

LVS的架构包括代理服务器(VS)、真实服务器(RS)、客户机IP(CIP)、虚拟服务器IP(VIP)、调度器IP(DIP)和真实服务器IP(RIP)。

2.3 LVS功能及组织架构

LVS主要用于高访问量业务,通过负载均衡提高应用程序的可用性和可靠性。

2.4 LVS集群类型中的术语
  • **VS(代理服务器):**也称为Director Server (DS)或Dispatcher,负责调度和负载均衡。
  • **RS(真实服务器):**提供实际服务的服务器。
  • **CIP(客户机IP):**客户端的IP地址。
  • **VIP(虚拟服务器IP):**代理服务器的外网IP。
  • **DIP(调度器IP):**代理服务器的内网IP。
  • **RIP(真实服务器IP):**真实服务器的IP地址。

访问流程:CIP <–> VIP == DIP <–> RIP

三、LVS工作模式和命令

3.1 LVS集群的工作模式

LVS支持多种工作模式:

  • **LVS-NAT:**修改请求报文的目标IP,通过DNAT实现多目标IP的负载均衡。
  • **LVS-DR:**直接路由模式,通过封装新的MAC地址转发报文。
  • **LVS-TUN:**隧道模式,通过IP隧道实现负载均衡。
  • **LVS-FullNAT:**修改请求报文的源和目标IP。
3.1.1 LVS的NAT模式
  • **请求阶段:**客户端请求报文的源IP是CIP,目的IP是VIP。
  • **转发阶段:**代理服务器修改目的IP为RIP,转发给真实服务器。
  • **响应阶段:**真实服务器将响应报文发送回代理服务器,代理服务器修改源IP为VIP,再转发给客户端。

NAT模式的特点包括支持端口映射、必须是Linux系统等。

3.1.2 LVS的DR模式

DR模式(Direct Routing)通过直接路由实现负载均衡,特点如下:

  • 代理服务器与RS在同一个物理网络。
  • 请求报文经由代理服务器,但响应报文直接由RS发回客户端。
  • 不支持端口映射,RS可以使用大多数操作系统。
3.1.3 工作模式总结比较
模式优点缺点真实服务器要求支持网络真实服务器数量真实服务器网关
DR性能最好不支持跨网段Non-arp deviceLANHigh (100)Own router
TUN支持WAN服务器支持隧道模式TunnelingLAN/WANHigh (100)Own router
NAT端口转换性能瓶颈anyPrivateLow (10~20)LVS内网地址
3.2 LVS调度算法

LVS调度算法分为静态方法和动态方法:

  • **静态方法:**不考虑服务器状态,仅根据算法进行调度。常见算法有轮询(RR)、加权轮询(WRR)、源地址哈希(SH)和目标地址哈希(DH)。
  • **动态方法:**根据服务器的负载状态进行调度。常见算法有最少连接(LC)、加权最少连接(WLC)、最短预期延迟(SED)、永不排队(NQ)等。

四、ipvsadm工具

4.1 ipvsadm工具选项
  • -A:添加虚拟服务器。
  • -D:删除整个虚拟服务器。
  • -C:清空所有规则。
  • -R:重新加载规则。
  • -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”选项组合使用。

安装与配置:

  • 主程序:/usr/sbin/ipvsadm
  • 规则保存工具:/usr/sbin/ipvsadm-save
  • 规则重载工具:/usr/sbin/ipvsadm-restore
  • 配置文件:/etc/sysconfig/ipvsadm-config
  • ipvs调度规则文件:/etc/sysconfig/ipvsadm

通过扩展后的内容,进一步解释了每个部分的概念和具体操作,有助于更全面地理解集群与分布式系统的设计与实现。

 

192.168.10.10

192.168.10.20

192.168.10.30

 location ~ \.jsp$ {proxy_pass http://192.168.10.50:8080;} location ~ \.(jsp|html)$ {root /usr/share/nginx/html;}

 192.168.10.40

192.168.10.50

 

结果验证:

自此出起开始本章内容

对192.168.10.20进行如下配置:

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1 smtp_connect_timeout 30router_id LVS01vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_script check_down {script "/etc/keepalived/ng.sh"interval 1weight -30fall 3rise 2timeout 2
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.188}track_script {check_down}
}

下面对该配置文件进行注释和讲解

# Configuration File for keepalivedglobal_defs {# 定义接收通知的电子邮件地址列表notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}# 定义发送通知的电子邮件地址notification_email_from Alexandre.Cassen@firewall.loc# 定义SMTP服务器的地址,用于发送电子邮件通知smtp_server 127.0.0.1 # 定义与SMTP服务器连接的超时时间(秒)smtp_connect_timeout 30# 定义路由器的唯一标识符router_id LVS01# 跳过对接收到的VRRP通告中的地址进行检查,这可以避免因网络配置问题导致的误报vrrp_skip_check_adv_addr# #vrrp_strict 是一个可选的指令,如果启用,它将强制执行VRRP协议的严格检查。在这里,它被注释掉了。#vrrp_strict# 定义GRATUITOUS ARP请求的发送间隔(秒),0表示不发送vrrp_garp_interval 0# 定义组播NA(Neighbor Advertisement)消息的发送间隔(秒),通常与garp_interval保持一致,0表示不发送vrrp_gna_interval 0
}# 定义一个VRRP脚本检查,用于监控服务或资源的状态
vrrp_script check_down {# 指定要执行的脚本路径script "/etc/keepalived/ng.sh"# 定义脚本执行的间隔时间(秒)interval 1# 定义脚本执行失败时,本机的优先级调整值weight -30# 定义脚本连续失败多少次后,认为服务不可用fall 3# 定义脚本连续成功多少次后,认为服务已恢复rise 2# 定义脚本执行的超时时间(秒)timeout 2
}# 定义一个VRRP实例
vrrp_instance VI_1 {# 设置VRRP实例的初始状态,可以是MASTER或BACKUPstate MASTER# 指定绑定的网络接口interface ens33# 设置虚拟路由器的ID,同一个网络内的不同VRRP实例应该使用不同的IDvirtual_router_id 51# 设置本机的优先级,值越大优先级越高priority 100# 设置VRRP通告的发送间隔(秒)advert_int 1# 定义VRRP实例的认证方式和密码authentication {auth_type PASS  # 使用密码认证auth_pass 1111  # 设置认证密码}# 定义虚拟IP地址列表virtual_ipaddress {192.168.10.188}# 指定要跟踪的脚本检查,当脚本检查失败时,会调整本机的优先级track_script {check_down}
}

 所需要的脚本

#!/bin/bash
#check_nginx 
killall -0 nginx
if [[ $? -ne 0 ]];thensystemctl stop keepalived
fi

对192.168.10.30进行如下配置: 

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1 smtp_connect_timeout 30router_id LVS01vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.188}track_script {check_down}
}

由此可见实验是成功的

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

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

相关文章

希尔排序的实现

引言 排序在我们生活中十分常见&#xff0c;无论是购物软件中的商品推荐还是名次、排名都与排序算法息息相关。希尔排序是排序中较快的一种&#xff0c;而希尔排序实现的基础是插入排序。 排序的实现 插入排序&#xff08;以升序为例&#xff09; 插入排序的原理是从第二个数…

Springboot多模块项目从0构建打包运行

今天复习了一下Springboot的多模块的构建&#xff0c;其实一直以来都对单体项目使用多模块感到不太理解&#xff0c;不知道到底有什么样的优势&#xff0c;目前切身体会到的优势就是确实可以让依赖的划分更加清晰&#xff08;每个模块下的pom文件只引入该模块需要的依赖&#x…

wsl ubuntu 安装Anaconda3步骤

如何在Ubuntu上安装Anaconda3呢?本章记录整个安装过程。 1、下载脚本 https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2023.09-0-Linux-x86_64.sh 下载之后,将脚本上传到Ubuntu里。 2、安装脚本 bash Anaconda3-2021.11-Linux-x86_64.sh根据提示进行安装,提示输…

maven 打包执行配置(对maven引用的包或者丢进去的包都包含在里面)打成jar包

一 、springboot jar包 maven的pom文件 1 在resources下放了一些文件想打进去jar包 2 在lib下放了其他稀奇古怪jar包文件想打进去jar包 编写如下引入jar <build><!-- 打包名称 --><finalName>${project.artifactId}</finalName><resources><…

visual studio 2022配置和使用jsoncpp

下载 jsoncpp下载位置&#xff1a; GitHub - open-source-parsers/jsoncpp: A C library for interacting with JSON. 编译库 1、下载完成之后解压 2、在解压文件的makefiles文件下有个vs71&#xff0c;在vs71中有visual studio项目&#xff0c;不过这里的项目是visual stud…

NSI66x1B:单通道增强隔离智能栅极驱动器

Single-Channel Isolated Smart Gate Driver 单通道隔离智能门驱动器 参考 Novosense-NSi66x1A_Datasheet_Rev1.x_EN.pdf Product Overview NSI66x1B是一款单通道增强隔离智能栅极驱动器,可在许多应用中驱动igbt和SiC mosfet。它可以输出和吸收10A的峰值电流。系统鲁棒性由…

Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等

简介 TypeScript 是 JavaScript 的超集&#xff0c;是 JavaScript&#xff08;弱类型语言&#xff09; 的强类型版本。 拥有类型机制文件后缀 .tsTypescript type ES6TypeScript 和 JavaScript 的关系类似 less 和 css 的关系TypeScript对 JavaScript 添加了一些扩展&#x…

入门网络安全工程师要学习哪些内容

大家都知道网络安全行业很火&#xff0c;这个行业因为国家政策趋势正在大力发展&#xff0c;大有可为!但很多人对网络安全工程师还是不了解&#xff0c;不知道网络安全工程师需要学什么?知了堂小编总结出以下要点。 网络安全工程师是一个概称&#xff0c;学习的东西很多&…

《互联网政务应用安全管理规定》自2024年7月1日起,关于日志存储至少保存一年说明

学习目标&#xff1a;《互联网政务应用安全管理规定》第二十条 机关事业单位应当留存互联网政务应用相关的防火墙、主机等设备的运行日志&#xff0c;以及应用系统的访问日志、数据库的操作日志&#xff0c;留存时间不少于1年&#xff0c;并定期对日志进行备份&#xff0c;确保…

DBeaver通过jdbc方式连接ES(免证书)

前言 之前其实已经分享过DBeaver连接ES,为什么重新分享一篇,用过的肯定知道,之前那种方式需要ES服务的服务器上装证书,免费证书只能用一个月。这次分享的就是解决这个时间限制问题,但是需要用一个自己开发的jar,而且暂未上到maven的中心库。 一、先看效果 证书方式 自研…

【系统架构设计师】五、计算机网络(概念|通信技术|网络技术)

目录 一、计算机网络概念 二、通信技术 三、网络技术 3.1 局域网(LAN) 3.1.1 局域网拓扑结构 3.1.2 局域网协议 3.2 无线局域网(WLAN) 3.3 广域网(WAN) 3.4 城域网&#xff08;MAN) 3.5 移动通信网 四、组网技术 4.1 OSI七层模型 4.1.1 交换机 4.1.2 路由器 4.2…

Java面向对象特性

Java继承&#xff1a; 继承的概念&#xff1a; 在Java中&#xff0c;继承&#xff08;inheritance&#xff09;是面向对象编程的一个重要概念&#xff0c;它允许一个类&#xff08;子类&#xff09;继承另一个类&#xff08;父类&#xff09;的属性和方法。通过继承&#xff0c…

算法设计与分析--近似算法作业及答案

近似算法作业题目 1 k-center 近似算法题目描述参考答案解答 题目 2 均衡负载算法题目描述参考答案解答 题目 3 多项式归约题目描述参考答案解答 近似算法–徐小华 近似算法作业 题目 1 k-center 近似算法 题目描述 问题 1&#xff1a;假设给定 n n n 个指定的城市在一个平…

大模型ReAct:思考与工具协同完成复杂任务推理

ReAct: Synergizing Reasoning and Acting in Language Models Github&#xff1a;https://github.com/ysymyth/ReAct 一、动机 人类的认知通常具备一定的自我调节&#xff08;self-regulation&#xff09;和策略制定&#xff08;strategization&#xff09;的能力&#xff0…

vue 代理

一、常用的发送一个ajax请求&#xff1a; 1、xhr new XMLHttpRequest(),真正开发中不常用 2、jq&#xff0c;jq主要功能是获取dom&#xff0c;周边才是请求接口 3、axios&#xff08;大名鼎鼎的&#xff09; axios.get("url").then(response>{},error>{} )4、…

Python应用开发——30天学习Streamlit Python包进行APP的构建(11)

st.bokeh_chart 显示互动式虚化图。 Bokeh 是 Python 的一个图表库。此函数的参数与 Bokeh 的 show 函数的参数非常接近。有关 Bokeh 的更多信息,请访问 https://bokeh.pydata.org。 要在 Streamlit 中显示 Bokeh 图表,请在调用 Bokeh 的 show 时调用 st.bokeh_chart。 Fu…

二叉树的方法

目录 一、二叉树的定义 ​编辑 二、二叉树的创建 三、二叉树的遍历 1、前序遍历 2、中序遍历 3、后序遍历 4、层序遍历 四、二叉树遍历方法的使用 五、二叉树的操作 1、节点的个数 2、叶子节点的个数 3、第k层节点的个数 4、二叉树的高度 5、检查值为value的元素…

java生成excel,uniapp微信小程序接收excel并打开

java引包&#xff0c;引的是apache.poi <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency> 写一个测试类&#xff0c;把excel输出到指定路径 public s…

快20倍还便宜 NVIDIA GPU的“掘墓人”出现了?

芯片初创公司Etched近日宣布推出了一款针对 Transformer架构专用的AISC芯片 “Sohu”&#xff0c;并声称其在AI大语言模型&#xff08;LLM&#xff09;推理性能方面击败了NVIDIA最新的B200 GPU&#xff0c;AI性能达到了H100的20倍。这也意味着Sohu芯片将可以大幅降低现有AI数据…

精密机器中的交叉导轨负荷与容许负荷的差异!

交叉导轨的设计和制造过程中&#xff0c;负荷及容许负荷是至关重要的参数&#xff0c;只有准确计算出交叉导轨的载荷&#xff0c;才能保证交叉导轨的稳定性和使用寿命。 负荷和容许载荷是两个不同的参数&#xff0c;那这两者的有什么差异呢&#xff1f; 交叉导轨的负荷是指其承…