九五从零开始的运维之路(其三十六)

文章目录

  • 前言
  • 一、集群概述
    • 1.负载均衡技术类型
      • (一)四层负载均衡器
      • (二)七层负载均衡器
    • 2.负载均衡实现方式
      • (一)硬件负载均衡产品:
      • (二)软件负载均衡产品:
  • 二、LVS结构
    • 2.三层结构
  • 三、LVS工作模式
  • 四、LVS负载均衡算法
    • 1.静态负载均衡
    • 2.动态负载均衡
  • 五、ipvsadm命令详解
  • 六、LVS配置案例
    • 1.基础配置
    • 2.实现NAT模型搭建
      • (一)负载调度器配置
      • (二)web节点配置
    • 3.实现DR模型搭建
      • (一)负载调度器配置
      • (二)web节点配置
  • 总结


前言

本篇将简述的内容:Linux系统下的LVS集群


一、集群概述

1.负载均衡技术类型

(一)四层负载均衡器

四层负载均衡器也称为 4 层交换机,主要通过分析 IP 层及 TCP/UDP 层的流量实现基于 IP 加端口的负载均衡,如常见的 LVS、F5 等;

(二)七层负载均衡器

七层负载均衡器也称为 7 层交换机,位于 OSI 的最高层,即应用层,此负载均衡器支持多种协议,如HTTP、FTP、SMTP 等。7 层负载均衡器可根据报文内容,配合一定的负载均衡算法来选择后端服务器,即“内容交换器”。如常见的 HAProxy、Nginx。

2.负载均衡实现方式

(一)硬件负载均衡产品:

F5 、深信服 、Radware

(二)软件负载均衡产品:

LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)

二、LVS结构

2.三层结构

1)负载调度器
2)服务器池
3)共享存储

架构对象

VSVirtual Server,也称为 Director,负载均衡服务器
RSReal Server,真正的服务器,集群中各节点
VIPDirector 向外部提供服务的 IP
DIPDirector 向内部与 RS 通信的 IP
RIP真实服务器的 IP
CIP客户端的 IP

三、LVS工作模式

LVS-NAT(NAT模式)
LVS-DR(直接路由模式)(应用最广泛)
LVS-TUN(IP隧道(Tunnel)模式,不常用)
FULL-NAT模式(双向转换模式,不常用)

四、LVS负载均衡算法

1.静态负载均衡

rrround robin轮询
wrrweight round robin加权轮询
shsource hashing源地址散列算法(HASH)
dhdestination hashing目标地址 HASH

2.动态负载均衡

动态负载均衡
lc(leash-connection,最少连接 )
简单算法:active * 256 + inactive (谁的小选谁)

wlc(加权最少连接)
简单算法:(active * 256 + inactive) / weight(谁的小选谁)

sed(最少期望延迟)
简单算法:(active + 1) * 256 / weight (谁的小选谁)

nq(never queue,永不排队)

LBLC(基于局部性的最少连接 )

LBLCR(基于局部性的带复制功能的最少连接)

五、ipvsadm命令详解

-A添加虚拟服务节点
-D删除虚拟服务节点
-L查看虚拟服务节点列表
-a添加真实服务节点
-d删除真实服务节点
-l查看真实服务节点列表
-t指定虚拟服务器IP地址
-s指定调度算法
-r指定真实服务器节点IP地址
-w指定权重值
-g直接路由模式(默认)
-i隧道模式(不常用)
-mNAT模式

六、LVS配置案例

1.基础配置

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

关闭Selinux

setenforce 0

关闭Networkmanager

systemctl stop NetworkManager && systemctl disable NetworkManager

配置IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33

2.实现NAT模型搭建

(一)负载调度器配置

配置IP地址
增加一块网卡

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37

vim ifcfg-ens37

NAME=ens38
DEVICE=ens38

安装ipvsadm

yum  install -y ipvsadm

开启路由转发功能

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

加载ip_vs模块

modprobe ip_vs
lsmod |grep ip_vs

启动ipvsadm服务

systemctl start ipvsadm

配置负载分配策略

ipvsadm -A -t 192.168.16.100:80 -s rr
ipvsadm -a -t 192.168.16.100:80 -r 192.168.115.4:80 -m
ipvsadm -a -t 192.168.16.100:80 -r 192.168.115.5:80 -m

保存策略

ipvsadm-save > /etc/sysconfig/ipvsadm

(二)web节点配置

安装nginx
配置网关

route add -net 0/0 gw 192.168.115.3

测试

3.实现DR模型搭建

负载调度配置器-ens33192.168.115.3192.168.115.2192.168.115.2
负载调度配置器-ens33:0192.168.115.200//
web1-ens33192.168.115.4//
web1-ifcfg-lo:0192.168.115.200//
web2-ens33192.168.115.5//
web2-ifcfg-lo:0192.168.115.200//

(一)负载调度器配置

调整ARP参数
vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0 
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p
配置虚拟IP地址

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0

安装ipvsadm

yum  install -y ipvsadm

加载ip_vs模块

modprobe ip_vs
lsmod |grep ip_vs

启动ipvsadm服务
systemctl start ipvsadm
配置负载分配策略

ipvsadm -A -t 192.168.115.200:80 -s rr
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.4:80 -g
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.5:80 -g

保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

(二)web节点配置

调整ARP参数
vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore=1 
net.ipv4.conf.all.arp_announce=2 
net.ipv4.conf.default.arp_ignore=1 
net.ipv4.conf.default.arp_announce = 2 
net.ipv4.conf.lo.arp_ignore = 1 
net.ipv4.conf.lo.arp_announce=2

sysctl -p
配置虚拟IP地址

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

添加回环路由
route add -host 192.168.115.200/32 dev lo:0
安装httpd
访问192.168.115.200
进行验证


总结

LVS集群是一种强大的负载均衡解决方案,可以提高系统的可用性、性能和可扩展性。通过深入探索LVS集群的原理、架构和配置方法,我们可以更好地理解和应用这一技术,为构建高可用性的互联网应用提供有力支持。

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

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

相关文章

[蓝帽杯 2022 初赛]domainhacker

打开流量包,追踪TCP流,看到一串url编码 放到瑞士军刀里面解密 最下面这一串会觉得像base64编码 删掉前面两个字符就可以base64解码 依次类推,提取到第13个流,得到一串编码其中里面有密码 导出http对象 发现最后有个1.rar文件 不出…

Vue使用ffmpeg,报ReferenceError: SharedArrayBuffer is not defined 如何解决

“SharedArrayBuffer is not defined” 错误是因为在浏览器环境中,SharedArrayBuffer 对象被认为是一种潜在的安全风险。为了防止 Spectre 攻击等漏洞,现代浏览器通常会禁用或限制对 SharedArrayBuffer 的使用。 SharedArrayBuffer 是一种 JavaScript 对…

前端面试:【代码质量与工程实践】单元测试、集成测试和持续集成

在现代软件开发中,确保代码质量是至关重要的。单元测试、集成测试和持续集成是关键的工程实践,用于提高代码的可靠性和可维护性。本文将深入探讨这些概念,以及它们如何在软件开发中发挥作用。 1. 单元测试(Unit Testing&#xff0…

SpringBoot案例-登录校验-概述

登录存在的问题 在未登录的情况下,我们也可以直接访问部门管理、员工管理等功能由于Http协议是无状态的,即每次请求都是独立的,下一次的请求不会携带上一次的数据,服务器无法判断是否已经登录。 登录校验 如何实现登录校验 在员…

Agile Iteration Velocity

【agile iteration velocity】敏捷速度指的平均速度 第四次迭代结束速度: 76 / 4 19 第五次迭代结束速度: (76 24 ) / 5 100 / 5 20

spark第四课

countByValue 数据源中相同的值有多少个,也就是WordCount countByKey 表的是键值对中的key出现了几次,与Value的值无关 不推荐collect,因为他是将数据放入内存,但是内存不够大的话,就容易崩,所以使用saveAsTextFile更好,直接放入磁盘. 保存成对象文件,需要序列化 启动了2个 J…

【Spring Boot】社交网站中验证用户登录的checkUser方法

public boolean checkUser(User user) {User userInDb userRepository.findByUsername(user.getUsername());if (userInDb ! null && userInDb.getPassword().equals(user.getPassword())) {return true;} else {return false;}} } 这段代码是UserService类中的checkU…

并查集(种类并查集,带权并查集)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B,B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都…

C++有向、无向完全图的边数

一、无向完全图 一个拥有n个结点的无向完全图的边数为: 公式: 简写: (表示个顶点中有条边) 具体的解释: 比如我们有一个拥有个结点的无向完全图 我们首尾依次连接,共有条边。 然后我们选择…

九、pikachu之敏感信息泄露

文章目录 1、敏感信息泄露概述2、实战 1、敏感信息泄露概述 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。 比如: 通过访问url下的目录,可以直接列出目录下的文件列表;输入错误的url参数后报错信息里面…

Windows - DWM - 桌面窗口管理器内存泄漏BUG(桌面窗口管理器内存占用过高)

Windows - DWM - 桌面窗口管理器内存泄漏BUG(桌面窗口管理器内存占用过高) 前言 有时候笔记本使用者使用者就感觉不对劲,有种强烈的延时感。打开任务管理器一看,好家伙,桌面窗口管理器(Desktop Window Ma…

Java中Comparable和Comparator有什么区别?

1. 字面含义不同 Comparable字面意思是“具有比较能力”,Comparator字面意思是“比较器”。 2. 用法不同 Comparable用法:对需要排序的类,实现Comparable接口,重写compareTo()方法。 Comparator用法:创建自定义比较…

OpenCV基础知识(7)— 腐蚀与膨胀

前言:Hello大家好,我是小哥谈。腐蚀和膨胀是图像形态学中的两种核心操作,通过这两种操作可以清除或者强化图像中的细节。本节课就对OpenCV中的腐蚀和膨胀操作进行详细的介绍。🌈 前期回顾: OpenCV基础知识(…

记录--为什么要使用 package-lock.json?

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 随着JavaScript在现代软件开发中的日益重要地位,Node.js生态系统中的npm成为了不可或缺的工具。在npm管理依赖的过程中,package-lock.json文件的作用日益凸显。本文将深入…

LeetCode108. 将有序数组转换为二叉搜索树

108. 将有序数组转换为二叉搜索树 一、题目 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1&#x…

Linux 网络编程 和 字节序的概念

网络编程概述 不同于之前学习的所有通讯方法,多基于Linux内核实现,只能在同一个系统中不同进程或线程间通讯,Linux的网络编程可以实现真正的多机通讯! 两个不相关的终端要实现通讯,必须依赖网络,通过地址…

【C++入门到精通】C++入门 —— 继承(基类、派生类和多态性)

阅读导航 前言一、继承的概念及定义1. 继承的概念2.继承的定义⭕定义格式⭕继承关系和访问限定符⭕继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承⭕单…

Web安全测试(一):HTTP请求详解

一、前言 结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部文章请访问专栏:《全栈安全测试教程(0基…

软考高级系统架构设计师系列之:论文典型试题写作要点和写作素材总结系列文章二

软考高级系统架构设计师系列之:论文典型试题写作要点和写作素材总结系列文章二 一、论基于DSSA的软件架构设计与应用1.论文题目2.写作要点和写作素材二、论信息系统建模方法1.论文题目2.写作要点和写作素材三、论高可靠性系统中软件容错技术的应用1.论文题目2.写作要点和写作素…

4.物联网LWIP之C/S编程,stm32作为服务器,stm32作为客户端,代码的优化

LWIP配置 服务器端实现 客户端实现 错误分析 一。LWIP配置(FREERTOS配置,ETH配置,LWIP配置) 1.FREERTOS配置 为什么要修改定时源为Tim1?不用systick? 原因:HAL库与FREERTOS都需要使用systi…