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 keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30
   router_id LVS01
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_script check_down {
  script "/etc/keepalived/ng.sh"
  interval 1
  weight -30
  fall 3
  rise 2
  timeout 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.188
    }
   track_script {
   check_down
    }
}

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

# Configuration File for keepalived

global_defs {
   # 定义接收通知的电子邮件地址列表
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@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或BACKUP
   state MASTER
   
   # 指定绑定的网络接口
   interface ens33
   
   # 设置虚拟路由器的ID,同一个网络内的不同VRRP实例应该使用不同的ID
   virtual_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 ]];then
    systemctl stop keepalived
fi

对192.168.10.30进行如下配置: 

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30
   router_id LVS01
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.188
    }
   track_script {
   check_down
    }
}

由此可见实验是成功的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; func removeElements(head *ListNode, val int) *ListNode {dummyHead : &ListNode{Next: head}for tmp : dummyHead; tmp.Next ! nil; {if tmp.Next.Val val {tmp.Next tmp.Next.Next} else {tmp tmp.Next}}return dummyHead.Next …

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 数字排列游戏(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

【论文复现】——基于LM优化的NDT点云配准算法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 1、论文概述 传统的正态分布变换配准算法处理初始位姿变换相…

修改网络的结构用于预训练

目录 一、模型准备 二、修改结构 1、在网络中添加一层 2、在classifier结点添加一个线性层 3、修改网络中的某一层(features 结点举例&#xff09; 4、替换网络中的某一层结构&#xff08;与第3点类似&#xff09; 5、提取全连接层的输入特征数和输出特征数 6、删除网络…

springboot + Vue前后端项目(第二十一记)

项目实战第二十一记 写在前面1. springboot文件默认传输限制2. 安装视频插件包命令3. 前台Video.vue4. 创建视频播放组件videoDetail.vue5. 路由6. 效果图总结写在最后 写在前面 本篇主要讲解系统集成视频播放插件 1. springboot文件默认传输限制 在application.yml文件中添…

《昇思25天学习打卡营第2天|快速入门》

文章目录 前言&#xff1a;今日所学&#xff1a;1. 数据集处理2. 网络的构建3. 模型训练4. 保存模型5. 加载模型 总体代码与运行结果&#xff1a;1. 总体代码2. 运行结果 前言&#xff1a; 今天是学习打卡的第2天&#xff0c;今天的内容是对MindSpore的一个快速入门&#xff0…

Selenium IDE 的使用指南

Selenium IDE 的使用指南 在自动化测试的领域中&#xff0c;Selenium 是一个广为人知且强大的工具集。而 Selenium IDE 作为其中的一个组件&#xff0c;为测试人员提供了一种便捷且直观的方式来创建和执行自动化测试脚本。 一、Selenium IDE 简介 Selenium IDE 是一个用于录…

第十三章 常用类

一、包装类 1. 包装类的分类 &#xff08;1&#xff09;针对八种基本数据类型相应的引用类型—包装类 &#xff08;2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法。 2. 包装类和基本数据的转换 jdk5 前的手动装箱和拆箱方式&#xff0c;装箱&#xff1a;基本…

【Qt】信号和槽机制

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

操作系统之《PV操作》【知识点+详细解题过程】

1、并发进程 &#xff1a; 并发的实质是一个处理器在几个进程之间的多路复用&#xff0c;并发是对有限的物理资源强制行使多用户共享&#xff0c;消除计算机部件之间的互等现象&#xff0c;以提高系统资源利用率。 &#xff08;1&#xff09;并发进程——互斥性&#xff1a; 进…

使用Jetpack Compose实现具有多选功能的图片网格

使用Jetpack Compose实现具有多选功能的图片网格 在现代应用中,多选功能是一项常见且重要的需求。例如,Google Photos允许用户轻松选择多个照片进行分享、添加到相册或删除。在本文中,我们将展示如何使用Jetpack Compose实现类似的多选行为,最终效果如下: 主要步骤 实现…

【redis】Redis AOF

1、AOF的基本概念 AOF持久化方式是通过保存Redis所执行的写命令来记录数据库状态的。AOF以日志的形式来记录每个写操作&#xff08;增量保存&#xff09;&#xff0c;将Redis执行过的所有写指令记录下来&#xff08;读操作不记录&#xff09;。AOF文件是一个只追加的文件&…

Redis 高级数据结构业务实践

0、前言 本文所有代码可见 > 【gitee code demo】 本文会涉及 hyperloglog 、GEO、bitmap、布隆过滤器的介绍和业务实践 1、HyperLogLog 1.1、功能 基数统计&#xff08;去重&#xff09; 1.2、redis api 命令作用案例PFADD key element [element ...]添加元素到keyPF…

PortSip测试

安装PBX 下载 免费下载 PortSIP PBX 安装PBX&#xff0c;安装后&#xff0c;运行 &#xff0c;默认用户是admin 密码是admin&#xff0c;然后配置IP 为192.168.0.189 设置域名为192.168.0.189 配置分机 添加分机&#xff0c;添加了10001、10002、9999 三个分机&#xff0c…

深度学习实验第T2周:彩色图片分类

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 目标 二、我的环境&#…

【Linux进程通信】进程间通信介绍、匿名管道原理分析

目录 进程通信是什么&#xff1f; 进程通信的目的 进程通信的本质 匿名管道&#xff1a;基于文件级别的通信方式 站在文件描述符角度-深度理解管道原理 进程通信是什么&#xff1f; 进程通信就是两个或多个进程之间进行数据层面的交互。 进程通信的目的 1.数据传输&#x…

已解决java.security.acl.LastOwnerException:无法移除最后一个所有者的正确解决方法,亲测有效!!!

已解决java.security.acl.LastOwnerException&#xff1a;无法移除最后一个所有者的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查当前所有者数量 2. 添加新的所有者 3. 维…

mac Canon打印机连接教程

官网下载安装驱动&#xff1a; 选择打印机类型和mac系统型号下载即可 Mac PS 打印机驱动程序 双击安装 系统偏好设置 点击“”添加&#xff1a; OK可打印玩耍&#xff01;&#xff01; 备注&#xff1a; 若需扫描&#xff0c;下载扫描程序&#xff1a; 备注&#xff1a;…

设置小蓝熊的CPU亲和性、CPU优先级再设置法环的CPU亲和性

# 适用于Windows系统 # 时间 : 2024-06-28 # 作者 : 三巧(https://blog.csdn.net/qq_39124701) # 文件名 : 设置小蓝熊的CPU亲和性、CPU优先级再设置法环的CPU亲和性.ps1 # 使用方法: 打开记事本&#xff0c;将所有代码复制到记事本中&#xff0c;保存文件时候修改文件后…

Hugging Face Accelerate 两个后端的故事:FSDP 与 DeepSpeed

社区中有两个流行的零冗余优化器 (Zero Redundancy Optimizer&#xff0c;ZeRO)算法实现&#xff0c;一个来自DeepSpeed&#xff0c;另一个来自PyTorch。Hugging FaceAccelerate对这两者都进行了集成并通过接口暴露出来&#xff0c;以供最终用户在训练/微调模型时自主选择其中之…