管理集群工具之LVS

管理集群工具之LVS

集群概念

  • 将很多机器组织在一起,作为一个整体对外提供服务
  • 集群在扩展性、性能方面都可以做到很灵活
  • 集群分类
    • 负载均衡集群:Load Balance
    • 高可用集群:High Availability
    • 高性能计算:High Performance Computing

LVS

  • LVSLinux Virtual ServerLinux虚拟服务器
  • 实现负载均衡集群
  • 作者:章文嵩。国防科技大学读博士期间编写
  • LVS的工作模式
    • NAT:网络地址转换
    • DR:路由模式
    • TUN:隧道模式
  • 术语
    • 调度器:LVS服务器
    • 真实服务器:提供服务的服务器
    • VIP:虚拟地址,提供给用户访问的地址
    • DIR:指定地址,LVS服务器上与真实服务器通信的地址
    • RIP:真实地址,真实服务器的地址
  • 常见的调度算法,共10个,常用的有4个
    • 轮巡rr:真实服务器轮流提供服务(一共有两台服务器,第一个给A,第二个给B,第三个再给A…)
    • 加权轮巡wrr:根据服务器性能设置权重,权重大的服务器得到分配的请求就越多
    • 最少连接lc:根据真实服务器的连接数分配请求,优先分配连接少的
    • 加权最少连接wlc:类似wrr,根据权重分配请求
  • ipvsadm使用说明
    • -A:添加虚拟服务器
    • -E:编辑虚拟服务器
    • -D:删除虚拟服务器
    • -t:添加tcp服务器
    • -u:添加udp服务器
    • -s:指定调度算法。如轮巡rr、加权轮巡wrr、最小连接lc、加权最小连接wlc
    • -a:添加虚拟服务器后,向虚拟服务器中加入真实服务器
    • -r:指定真实服务器
    • -w:设置权重
    • -m:指定工作模式为NAT
    • -g:指定工作模式为DR

配置LVS NAT模式

  • NAT模式:通过lvs服务器来接收用户的请求,然后通过调度算法分配请求到真实服务器,然后真实服务器返回数据给lvs服务器,再有lvs服务器返回给用户

lvs-nat

  • clienteth0->192.168.88.10,gateway->192.168.88.5
  • lvseth0->192.168.88.5;eth1->192.168.99.5
  • web1eth0->192.168.99.100,gateway->192.168.99.5
  • web2eth0->192.168.99.200,gateway->192.168.99.5

环境准备

  • client
# 设置ip
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.88.10/24 ipv4.gateway 192.168.88.5 connection.autoconnect yes

# 启动
nmcli connection up eth0
  • lvs
# 设置eth0的ip
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.88.5/24 connection.autoconnect yes

# 启动
nmcli connection up eth0

# 设置eth1的ip
nmcli connection modify eth1 ipv4.method manual ipv4.addresses 192.168.99.5/24 connection.autoconnect yes

# 启动
nmcli connection up eth1

# 查看ip转发功能的内核参数
sysctl -a  # 这是查看所有的内核参数
sysctl -a | grep ip_forward
# net.ipv4.ip_forward = 0    # 1表示打开转发,0表示关闭转发

# 永久打开ip_forward功能,可以使client和web1、web2互通
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
sysctl -p
  • web1
# 设置ip
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.99.100/24 ipv4.gateway 192.168.99.5 connection.autoconnect yes

# 启动
nmcli connection up eth0

# 安装httpd,并启动
yum install -y httpd
systemctl enable httpd --now
echo "web1" > /var/www/html/index.html
  • web2
# 设置ip
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.99.200/24 ipv4.gateway 192.168.99.5 connection.autoconnect yes

# 启动
nmcli connection up eth0

# 安装httpd,并启动
yum install -y httpd
systemctl enable httpd --now
echo "web1" > /var/www/html/index.html

相关配置

  • lvs服务器
# 安装lvs
yum install -y ipvsadm

# 创建虚拟服务器,使用轮巡rr调度算法
ipvsadm -A -t 192.168.88.5:80 -s rr

# 添加RIP
ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.100 -m
ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.200 -m

# 查看配置
ipvsadm -Ln

# 此时使用client访问192.168.88.5:80,效果是web1:web2,比例是1:1

# 删除配置,使用加权轮巡wrr
ipvsadm -D -t 192.168.88.5:80 -s wrr
ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.100 -w 1 -m
ipvsadm -a -t 192.168.88.5:80 -r 192.168.99.200 -w 2 -m

# 此时使用client访问192.168.88.5:80,效果是web1:web2,比例是1:2

配置LVS DR模式

  • DR模式相比于NAT模式,它不会因为lvs服务器的带宽而影响业务
  • DR模式:通过lvs服务器来接收请求,然后分配请求到真实服务器,然后通过真实服务器的虚拟网卡直接返回给用户

lvs-dr

  • clienteth0->192.168.88.10
  • lvseth0->192.168.88.5;eth0:0->192.168.88.15
  • web1eth0->192.168.88.100;lo:0->192.168.88.15/32
  • web2eth0->192.168.88.200;lo:0->192.168.88.15/32

环境准备

  • client相比与上一个实验无需操作
  • lvs
# 删除eth1网卡
nmcli connection delete eth1

# 修改eth0,将ipv6那部分都删除,不然配置eth0:0的时候会报错ipv6冲突
vim ifcfg-eth0
# 文件内容如下,#后面的不用加入
TYPE=Ethernet  # 以太网
BOOTPROTO=none  # dhcp/none/static,none和static代表静态配置
NAME=eth0  # 为设备重命名
DEVICE=eth0  # 网卡设备名
ONBOOT=yes  # 开机激活
IPADDR=192.168.88.5  # ip
PREFIX=24  # 子网掩码
GATEWAY=192.168.88.254  # 网关

# 重启网卡
ifdown eth0; ifup eth0

# 配置eth0:0,这里使用的是直接修改网卡配置文件的方法
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
# 文件内容如下
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.88.15
PREFIX=24

# 重启网卡
ifdown eth0:0; ifup eth0:0

# 查看是否成功
ifconfig
  • web1
cd /etc/sysconfig/network-scripts/
# 修改eth0网络
vim ifcfg-eth0
# 文件内容如下
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.88.200
PREFIX=24
GATEWAY=192.168.88.254

# 重启网卡(虚拟机情况下,修改完ip之后,记得修改一下网卡的连接,不然会连不上)
ifdown eth0; ifup eth0

# 添加lo:0网卡
cp ifcfg-eth0 ifcfg-lo:0
# 文件内容如下
TYPE=Ethernet
BOOTPROTO=none
NAME=lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.88.15
PREFIX=32  # 这里掩码一定是32位,因为这个是一个虚拟地址

# 重启网卡
ifdown lo:0; ifup lo:0

# 查看是否生效
ifconfig

# 配置内核参数,使它不响应192.168.88.15的请求(这一步很重要)
vim /etc/sysctl.conf
# 文件内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

# 重新加载内核
sysctl -p
  • web2
cd /etc/sysconfig/network-scripts/
# 修改eth0网络
vim ifcfg-eth0
# 文件内容如下
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.88.100
PREFIX=24
GATEWAY=192.168.88.254

# 重启网卡(虚拟机情况下,修改完ip之后,记得修改一下网卡的连接,不然会连不上)
ifdown eth0; ifup eth0

# 添加lo:0网卡
cp ifcfg-eth0 ifcfg-lo:0
# 文件内容如下
TYPE=Ethernet
BOOTPROTO=none
NAME=lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.88.15
PREFIX=32  # 这里掩码一定是32位,因为这个是一个虚拟地址

# 重启网卡
ifdown lo:0; ifup lo:0

# 查看是否生效
ifconfig

# 配置内核参数,使它不响应192.168.88.15的请求(这一步很重要)
vim /etc/sysctl.conf
# 文件内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2

# 重新加载内核
sysctl -p

相关配置

  • lvs服务器
# 清除之前的配置
ipvsadm -D -t 192.168.88.5:80

# 创建虚拟服务器,使用的调度算法是最少连接lc
ipvsadm -A -t 192.168.88.15:80 -s lc

# 向虚拟服务器中添加真实服务器(注意这里是-g,设置了权重是不影响的,因为使用的是lc,这里是为了下面演示修改虚拟服务器的调度算法)
ipvsadm -a -t 192.168.88.15:80 -r 192.168.88.100 -w 100 -g
ipvsadm -a -t 192.168.88.15:80 -r 192.168.88.200 -w 200 -g

# 此时使用client访问192.168.88.15:80,效果是web1:web2,比例是1:1

# 修改虚拟服务器的调度算法为wlc
ipvsadm -E -t 192.168.88.15:80 -s wlc

# 查看配置
ipvsadm -Ln

# 此时使用client访问192.168.88.15:80,效果是web1:web2,比例是1:2

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

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

相关文章

面向对象练习坦克大兵游戏

游戏玩家(名称,生命值,等级),坦克,大兵类,玩家之间可以相互攻击,大兵拥有武器,用枪弹和反坦克炮弹,造成攻击不同,坦克攻击值固定,请设…

Java 源码-多级时间轮TimingWheel

多级时间轮TimingWheel 一、时间轮是什么 类似现实中的钟表,由多个环形数组组成,每个环形数组包含20个时间单位,表示一个时间维度(一轮),如:第一层时间轮,数组中的每个元素代表1m…

梯度,hesse阵与Jacobi矩阵

分清楚三个量的含义和计算方法。 梯度 表征的是一个列向量,是相对于某个方向而言的,但是某个方向上可能有多个变量,所以梯度不是简单的直接求偏导,并且说了,它是一个列向量,所以, 我们设 f : …

海外仓系统能做什么?提升仓库盈利能力,不再低效经营!

海外仓管理系统和机械设备不同,这句话看似有点矛盾,但是还真就是这么回事儿。 当机械设备出现故障的时候,你会明确的知道他无法运转,已经影响到你的生产效率了。但是海外仓系统不会,它看似还可以运转,但是…

【行为型模式】备忘录模式

一、备忘录模式概述 备忘录模式定义:又称之为快照模式(Snapshop Pattern)或者令牌模式(Token Pattern),是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,这样我们就可以在需要的时候将该对…

2024三大常用自动化框架对比【建议收藏】

上次发布过性能测试工具的对比后,有小伙伴后台留言,想了解一下自动化测试框架的对比,尤其是RobotFramework、pytest和unitest之间的优劣势情况。 这不我们今天就来分析一下他们之间的区别和各自的优缺点。 1、RobotFramework 优点&#xff1…

SMT工艺上出现焊锡球,将有什么影响?

在表面贴装技术(SMT)加工过程中,可能会出现焊锡球形成的问题,焊锡球的存在不仅影响产品的外观质量,还可能导致电路短路,从而影响产品性能和可靠性,所以必须提前了解焊锡球的形成原因&#xff0c…

【C语言】数据的存储_数据类型:浮点型存储

常见的浮点数: 3.1415926 1E10 浮点型包括:float、double、long double类型 浮点数表示的范围:float.h中定义 浮点数存储规则: 第二个n和*pFloat在内存中明明是同一个数,但浮点数和整数解读结果差别很大。 要理解这…

谈谈mysql中的各个关键字

1.为什么学习mysql mysql是当今最主流且开放源码的关系型数据库,开发者为瑞典 MySQL AB 公司。目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低…

软件测试架构体系之软件测试基本流程图

前言: 采用通用的测试流程,能高效、高质量的完成软件测试工作,有助于减少沟通成本,对各阶段产出有明确认知等等。最终目标:实现软件测试规范化、标准化。以下为非通用标准,仅供大家参考。 一、软件测试流…

C语言指针+-整数、指针-指针、指针关系运算、指针和数组、二级指针、指针数组

文章目录 前言一、指针 - 整数二、指针 - 指针三、指针的关系运算四、指针和数组五、二级指针六、指针数组指针数组可以将几个一维数组模拟成二维数组 总结 前言 C语言指针整数、指针-指针、指针关系运算、指针和数组、二级指针、指针数组等介绍,还包括指针数组将几…

STM32的端口引脚的复用功能及重映射功能解析

目录 STM32的端口引脚的复用功能及重映射功能解析 复用功能 复用功能的初始化 重映射功能 重映射功能的初始化 复用功能和重映射的区别 部分重映射与完全重映射 补充 STM32的端口引脚的复用功能及重映射功能解析 复用功能 首先、我们可以这样去理解stm32引脚的复用功能…

OpenStack云计算(十一)——OpenStack网络管理,验证OpenStack网络资源模型,验证来巩固和加深对OpenStack网络资源模型的理解

项目实训一 【实训题目】 验证OpenStack网络资源模型 【实训目的】 通过验证来巩固和加深对OpenStack网络资源模型的理解。 【实训准备】 (1)复习Neutron网络资源模型。 (2)重点理解网络、子网、端口和路由器的概念。 【实…

定制自己的 AI 角色CustomChar;AI知识点和面试题;提高llama 3 的微调速度Unsloth

✨ 1: CustomChar 允许你创建和定制自己的 AI 角色 CustomChar 是一个开源项目,它允许你创建和定制自己的 AI 角色。无论是游戏中的角色,还是个人的虚拟助手(比如电脑上的 JARVIS),甚至是在线教育体验中的虚拟朋友或…

vue列表穿梭框,可进行前端查询

// 这是组件,可以直接用 <template><div class"box"><el-row><el-col :span"11"><div class"box_left"><SearchContent :queryParams"queryParams" query"handleQuery" reset"resetQ…

rtthread 使用 scons 生成的项目

Env 工具 Env 是 RT-Thread 推出的开发辅助工具&#xff0c;针对基于 RT-Thread 操作系统的项目工程&#xff0c;提供编译构建环境、图形化系统配置及软件包管理功能。 其内置的 menuconfig 提供了简单易用的配置剪裁工具&#xff0c;可对内核、组件和软件包进行自由裁剪&…

【Linux】学习记录_14_线程

14 线程 14.1 线程和进程 进程是资源管理的最小单位&#xff0c;每个进程都有数据段、代码段和堆栈段&#xff0c;进程切换时都有复杂的上下文切换等动作。进程切换上下文时&#xff0c; 需要重新映射虚拟地址空间、进出OS内核、寄存器切换&#xff0c;还会干扰处理器的缓存机…

2010年认证杯SPSSPRO杯数学建模C题(第一阶段)高校图书馆的智能服务全过程文档及程序

2010年认证杯SPSSPRO杯数学建模 C题 高校图书馆的智能服务 原题再现&#xff1a; 图书馆源于保存记事的习惯。图书馆是为读者在馆内使用文献而提供的专门场所。而高校的图书馆为教学和科研服务&#xff0c;具有服务性和学术性强的特点。   现在的高校图书馆存在着许多不良的…

华为交换机重置密码

1.进入bootrom 加电后&#xff0c;18S左右&#xff0c;在启动菜单按 CtrlB 进入bootrom&#xff08;3s内&#xff09; 注意&#xff1a;本步骤属于高危操作&#xff0c;一定小心切勿删除系统或修改bootrom密码&#xff01; 输入bootrom密码&#xff0c;按6 看到提示成功后按…

Java基础之JVM基础调优与常见问题

常见命令 以下命令的介绍&#xff0c;全部在jdk8环境下运行的&#xff1b; jps ☆☆☆☆☆ 查看当前运行的进程号&#xff1b; jmap ☆☆☆ jmap命令可以查看jvm的内存信息&#xff0c;class对应的实例个数以及占用的内存大小 jmap -histo 查看当前java进程 [rdVM-8-12-c…