当前位置: 首页 > news >正文

Keepalived+Lvs(dr)调度器主备配置小实验

目录

前言

一、实验拓扑图

二、配置LVS(dr)模式

三、配置调配器热备

四、测试

总结



前言

Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。

Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。它使用VRRP(Virtual Router Redundancy Protocol)协议来实现服务器之间的冗余和故障恢复,确保服务的连续性。Keepalived还可以配合其他负载均衡软件(如LVS)一起使用,以提供更可靠的高可用性解决方案。

LVS(Linux Virtual Server)是一种用于构建高性能和可扩展的负载均衡集群的软件。LVS使用IP负载均衡技术将客户端的请求分发到多个后端服务器上,提高了整个系统的处理能力和吞吐量。LVS支持多种负载均衡算法(如轮询、加权轮询、最少连接等),可以根据实际需求灵活配置。LVS的工作模式有多种,其中DR(Direct Routing)模式是一种常用的模式,它通过修改数据包的目的MAC地址实现请求的转发,提高了转发的效率。

综合起来,使用Keepalived+LVS(dr)的解决方案可以实现高可用性和负载均衡的效果。Keepalived负责监控服务器的健康状态,并在主服务器发生故障时自动切换到备份服务器,保证服务的连续性。而LVS负责将客户端的请求分发到多个后端服务器上,提高系统的性能和可扩展性。通过结合使用这两个软件,可以构建出稳定可靠的高可用性和负载均衡的系统架构。


一、实验拓扑图

按要求准备好下列的设备

二、配置LVS(dr)模式

不多说了,开整!

1、配置2台web节点

##安装nginx
yum -y install epel
yum -y install nginx
##分别书写两台web服务器的测试页面
echo nginx1 > /usr/share/nginx/html/index.html
echo nginx2 > /usr/share/nginx/html/index.html
##启动nginx
systemctl start nginx

测试

2、调整web节点的APR参数

##调整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

3、配置web节点虚拟IP

##配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
##插入
DEVICE=lo:0
IPADDR=192.168.115.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
##重启网卡并添加路由
systemctl restart network
route add -host 192.168.115.200/32 dev lo:0

4、配置主调配器192.168.115.128

##设置APR参数
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
##配置网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
##插入
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.115.200
PREFIX=24
##安装ipvsadm
yum -y install ipvsadm
##加载查看模块
modprobe ip_vs
lsmod |grep ip_vs
##启动ipvsadm
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service 
##添加策略
ipvsadm -A -t 192.168.115.200:80 -s rr
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.131:80 -g
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.134:80 -g
##保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
##重启网卡
systemctl restart network

浏览器验证

三、配置调配器热备

1、来到我们的负载调度器在两台调度器上下载keepalived

192.168.115.128作为主

192.168.115.131作为备

yum -y install keepalived

 2、配置主的keepalived

vim /etc/keepalived/keepalived.conf
####此处我就设置了一个虚拟IP192.168.115.200一个虚拟IP对应着我2个真实的web服务器IP
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL1       ##名字(主从不要一样)vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER              ##身份为主interface ens33           ##网卡virtual_router_id 51      ##主从 id要一致priority 100              ##优先级advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.200     ###虚拟IP}
}virtual_server 192.168.115.200 80 {         ##虚拟ip,下面对应的是2台web的真实ipdelay_loop 6lb_algo rr                              ##轮询模式lb_kind DR                              ##这里我们是dr模式下进行的,所以设置为drpersistence_timeout 50protocol TCPreal_server 192.168.115.131 80 {        ##web1真实IPweight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.115.134 80 {       ##web2真实IPweight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
#########如果想配置多个虚拟IP,那么参照上面的方法照猫画虎###########

3、配置从负载调配器(建议使用scp把主的传输过来后修改比较省事)安装ipvsadm服务

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL2          ###服务名vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUP                ###角色interface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.200}
}virtual_server 192.168.115.200 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.115.131 80 {weight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.115.134 80 {
weight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

启动分别启动主备的keepalived并查看主备的ipvsadm策略,ip

##启动
systemctl start keepalived
##查看
ipvsadm -Ln

主ip

 策略

备IP

策略

 在这里说明一下,只要配置的keepalived是对的,启动keepalived后会自己根据配置文件生成策略

4、页面测试

 这里访问是没什么问题的,并且是轮询,我们抓个包看看只有200的地址符合DR模式

 四、测试

宕掉主调配器,观查是否还能实现轮询

查看备调度器IP,IP漂移说明主备生效了

 访问网页,可以访问并且轮询正常

 抓包,与之前一样

 ok,配置成功


总结

这里主要理解的是keepalived与ipvsadm的关系;一般情况下启动了keepalived后ipvsadm也会启动,并且会根据keepalived的文件生成策略;相对而言keepalived的配置文件很长需要理解记忆,可以参考我上面的配置,这里主要就是理解配置文件,理清思路,在本实验中配置了大量的IP地址容易混淆。

相关文章:

Keepalived+Lvs(dr)调度器主备配置小实验

目录 前言 一、实验拓扑图 二、配置LVS(dr)模式 三、配置调配器热备 四、测试 总结 前言 Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalive…...

第四讲Java基本语法——数组结构(多维数组)

前言 前面几讲,我们讲了Java基本语法,初学者也能够有一定的入门。本讲,我们也是继续来讲解一下Java另一个基础语法——数组,其实在前面讲解数据类型的时候,我们也有提到数组是引用类型,那今天我们就来分析一下什么是数组,怎么用数组呢? 一、数组是什么 数组是…...

【题解】JZOJ6578 / 洛谷P5201[USACO2019Jan]Shortcut G

洛谷 P5201 [USACO19JAN] Shortcut G 题意 在一个带权无向连通图上,每个点有 a i a_i ai​ 只奶牛,奶牛会走最短路径到 1 1 1,如果有多条路径,选择字典序最小的,定义移动总时间为所有奶牛走到 1 1 1 的时间之和。…...

npm install sentry-cli失败的问题

1. 目前报错 2. 终端运行 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli3. 再安装 npx sentry/wizardlatest -i nextjs即可成功...

Node opensslErrorStack 错误解决方法记录

从Git仓库中下载了一个老项目,使用npm install 安装后没有问题,当我使用npm run dev 的时候遇到了 OpenSSL 相关错误,例如 opensslErrorStack: [error:03000086:digital envelope routines::initialization error] 网上找了一下相关信息&am…...

你知道什么是Grandmillennial风格吗,进来看看吧

如果你既欣赏祖母的印花棉布扶手椅和大胆的图案,又喜欢千禧一代朋友现代家居中的开放空间和时尚家具,那么 "千禧一代 “风格就是为你量身打造的。它借鉴了几十年来的流行趋势,形成了一种独特的、带有现代风格的老式设计。 在典型的 &quo…...

App Inventor 2 开发 ChatGPT 对话App

ChatGPT大家应该不会陌生,它的回答内容非常的专业及深入,具有实际的可指导性。我们通过App Inventor 2开发一个简单的对话App,先看效果: App Inventor 2 ChatGPT教育领域对话演示 代码块如下: 用到的核心组件“ChatBot…...

SQL 大小敏感问题

在SQL中,关键字和函数名 是不区分 大小写的 比如(select、where、order by 、group by update 等关键字),以及函数(ABS、MOD、round、min等) window系统默认是大小写不敏感 (ZEN文件和zen 文件 不能同时存在&#xff…...

微信小程序+Taro 混编,Taro 使用微信原生 behaviors

最近有一个小程序项目,因为一些原因项目架构选择了微信小程序原生Taro 混编的方式进行开发,在开发的过程中发现 Taro 不支持使用原生的 behaviors 特性,因为混编的原因项目当中已有原生页面在使用 behaviors,所以需要一个方案在不…...

b树/b+树、时间轮、跳表、LSM-Tree

b树、b树:关系型数据库核心存储结构 1、为什么磁盘数据存储结构用B树、而不用红黑树 磁盘每次读取不是读一个节点、是返回一页数据。 红黑树每次遍历一个节点排除一半数据。 B树通常映射相邻的磁盘页数据。4K mysql索引一个节点隐射16k故而映射4倍,故…...

Unity OnDrawGizmos的简单应用 绘制圆形

编辑器和配置表各有各的好。 卡牌游戏即使再复杂,哪怕是梦幻西游,大话西游那种,甚至wow那种,用配表都完全没问题。但是崩坏3,或者鬼泣,格斗游戏,可视化编辑器是唯一的选择。 开发初期刚开始配技…...

Uniapp笔记(四)uniapp语法3

一、商品详情 1、从商品列表页跳转到商品详情页 在商品列表的项中绑定单击事件&#xff0c;并传递商品id值 <view class"goods-item" v-for"(item,index) in goodsList" :key"index" click"goGoodsDetail(item.goods_id)"> &…...

leetcode做题笔记105. 从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 思路一&#xff1a;递归 struct TreeNode* buildTree(int* preorder, int preorderSize, int* ino…...

Python里的列表List求和

1、使用sum()函数 numbers [1, 2, 3, 4, 5] total sum(numbers) print(total) # 输出 15 2、注意事项 在使用 sum() 函数获取列表的总和时&#xff0c;需要注意以下几点&#xff1a; sum() 函数只能用于数字类型的可迭代对象&#xff0c;如果 iterable 中包含了非数字类…...

启动docker容器的几种方法和注意事项(docker-compose,dockerfile)

1&#xff1a;要启动容器必须都先创建好镜像文件 C:\Users\dell>docker images REPOSITORY TAG IMAGE ID CREATED SIZE poi 1.0 22738bb31074 4 hours ago 105MB redis latest 506734eb5e71 6 days ago 138MB ng…...

bash: conda: command not found

问题描述&#xff1a; 在Pycharm上用SSH远程连接到服务器&#xff0c;打开Terminal准备查看用 conda 创建的虚拟环境时&#xff0c;却发现调用 conda 指令时出现以下报错&#xff1a; -bash: conda: command not found如果使用Xshell 利用端口号直接连接该 docker 容器&#…...

Leetcode-每日一题【剑指 Offer 36. 二叉搜索树与双向链表】

题目 输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点&#xff0c;只能调整树中节点指针的指向。 为了让您更好地理解问题&#xff0c;以下面的二叉搜索树为例&#xff1a; 我们希望将这个二叉搜索树转化为双向循环链表…...

ctfshow-萌新专属红包题

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 访问之后是一个登录页面&#xff0c;扫了目录&#xff0c;试了sql注入&#xff0c;没办法于是跑一跑弱口令&#xff0c;所以有事没事&#xff0c;admin弱口令跑一跑 搜索 微信公众号 皓月当空w 发送关键字 字典…...

谷歌面试-扔鸡蛋

今天想跟大家分享一个有意思的面试题&#xff0c;这让我再一次感叹思维的奇妙&#xff0c;接下来我们一起看看吧~ 首先来看看题目&#xff1a; 你有2颗鸡蛋&#xff0c;需要以最少的尝试次数来判断在100层的高楼上&#xff0c;哪一层楼是鸡蛋的安全层。 换句话说&#xff0c…...

Unity血条制作

一、使用UGUI制作血条 我一般使用image制作血条&#xff0c;当然&#xff0c;也可以使用滑动组件Slider。image的具体操作步骤如下 普通血条 1、在Hierarchy面板中&#xff0c;创建两个image组件&#xff0c;将其中一个设置为另外一个的子节点 2、在Inspector面板中&#…...

Swin Transformer生产部署与性能调优:从环境适配到架构优化的全周期解决方案

Swin Transformer生产部署与性能调优&#xff1a;从环境适配到架构优化的全周期解决方案 【免费下载链接】Swin-Transformer This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". 项目地址: http…...

5个步骤让你的魔兽争霸3在现代电脑上完美运行:WarcraftHelper终极优化指南

5个步骤让你的魔兽争霸3在现代电脑上完美运行&#xff1a;WarcraftHelper终极优化指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔…...

从逐点更新到批量优化:深入解析分块LMS(BLMS)自适应滤波算法

1. 从逐点到分块&#xff1a;为什么需要BLMS算法&#xff1f; 第一次接触自适应滤波时&#xff0c;我和大多数人一样从经典的LMS算法开始。当时在做一个语音去噪的小项目&#xff0c;用LMS实现实时滤波后发现两个头疼的问题&#xff1a;电脑风扇狂转不止&#xff08;计算负荷大…...

Go语言中的并发模式:从WaitGroup到errgroup

Go语言中的并发模式&#xff1a;从WaitGroup到errgroup 作为一个写了十几年代码的Go后端老兵&#xff0c;我深刻体会到并发编程的重要性。Go语言以其简洁的并发模型著称&#xff0c;通过goroutine和channel&#xff0c;我们可以轻松实现高效的并发程序。今天咱们就聊聊Go语言中…...

QQ空间数据备份工具:GetQzonehistory本地化数据留存方案

QQ空间数据备份工具&#xff1a;GetQzonehistory本地化数据留存方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字化时代&#xff0c;个人社交数据的长期保存与管理成为重要需求…...

March7thAssistant智能自动化:星穹铁道游戏效率工具全解析

March7thAssistant智能自动化&#xff1a;星穹铁道游戏效率工具全解析 【免费下载链接】March7thAssistant &#x1f389; 崩坏&#xff1a;星穹铁道全自动 Honkai Star Rail &#x1f389; 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 在《崩坏&am…...

BLIP-Diffusion实战解析:如何通过预训练主题表示实现高效可控的图像生成

1. BLIP-Diffusion的核心创新点解析 第一次看到BLIP-Diffusion这个模型时&#xff0c;最让我惊讶的是它解决了一个困扰行业多年的难题&#xff1a;如何在不需要反复微调的情况下&#xff0c;让AI生成的图像既保持输入主题的特征&#xff0c;又能灵活响应文本指令。这就像教一个…...

语音识别模型Conformer实战:如何用夹心饼干结构提升ASR效果

Conformer模型实战&#xff1a;用"夹心饼干"架构打造工业级语音识别系统 语音识别技术正在经历从传统DNN-HMM到端到端深度学习的范式转移&#xff0c;而Conformer凭借其创新的"CNNTransformer"混合架构&#xff0c;正在成为新一代ASR系统的标配。这种被开发…...

比话降AI使用教程:从注册到拿到合格检测报告全流程详解

比话降AI使用教程&#xff1a;从注册到拿到合格检测报告全流程详解 不少同学找到比话降AI&#xff0c;是因为看到了那个承诺&#xff1a;AI率大于15%全额退款&#xff0c;还退检测费。 这个承诺确实不一样。其他工具一般只说"效果不好可重做"&#xff0c;但重做了几…...

告别PASCAL VOC!手把手教你用Labelme标注数据,为UNet构建自己的多分类语义分割数据集

告别PASCAL VOC&#xff01;手把手教你用Labelme标注数据&#xff0c;为UNet构建自己的多分类语义分割数据集 在计算机视觉领域&#xff0c;语义分割一直是热门研究方向之一。不同于简单的目标检测&#xff0c;语义分割需要对图像中的每一个像素进行分类&#xff0c;这使其在医…...