keepalived+lvs高可用负载均衡集群配置方案
配置方案
- 一、配置主备节点
- 1. 在主备节点上安装软件
- 2. 编写配置文件
- 3. 启动keepalived服务
- 二、配置web服务器
- 1. 安装并启动http服务
- 2. 编写主页面
- 3.配置虚拟地址
- 4. 配置ARP
- 三、测试
- 服务器IP:
- 主负载均衡服务器 master 192.168.152.71
- 备负载均衡服务器 backup 192.168.152.72
- web服务器1 web1 192.168.152.73
- web服务器2 web2 192.168.152.74
- 虚拟IP VIP 192.168.152.100
一、配置主备节点
1. 在主备节点上安装软件
yum install -y keepalived ipvsadm
2. 编写配置文件
master.ip 和 backup.ip 都要配置,把原本的内容清空
vim /etc/keepalived/keepalived.conf
写如下内容: 确保主备节点的 router_id state priority 的值不一样
! Configuration File for keepalivedglobal_defs {router_id 1 # 唯一标识本节点的路由器ID,主备节点的ID必须不同
}vrrp_instance VI_1 {state MASTER # 主节点的状态为MASTER,备节点的状态为BACKUPinterface ens33 # 用于主备节点之间通信的网卡名称virtual_router_id 51 # 虚拟路由器ID,主备节点必须一致priority 100 # 节点优先级,数字越大优先级越高advert_int 1 # VRRP 广播间隔时间,单位为秒authentication {auth_type PASS # 认证方式为PASSauth_pass 123456 # 认证密码,主备节点上的密码必须一致,密码最大8位}virtual_ipaddress {192.168.152.100/24 # 配置的虚拟IP地址及子网掩码,VIP地址}
}virtual_server 192.168.152.100 80 { # 定义虚拟服务器,端口80delay_loop 3 # 健康检查的间隔时间,每3秒检查一次后端服务器状态lb_algo rr # 负载均衡算法,使用轮询(rr)方式lb_kind DR # LVS 集群模式,使用Direct Routing(DR)模式protocol TCP # 使用TCP协议进行负载均衡real_server 192.168.152.73 80 { # web1服务器IP地址,端口80weight 1 # 服务器权重,权重相同表示流量均等分配TCP_CHECK {connect_timeout 3 # TCP健康检查的连接超时时间,3秒内成功连接视为健康}}real_server 192.168.152.74 80 { # web2服务器IP地址,端口80weight 1 # 服务器权重TCP_CHECK {connect_timeout 3 # TCP健康检查的连接超时时间}}
}
3. 启动keepalived服务
systemctl start keepalived && systemctl enable keeplavied
二、配置web服务器
下面的内容 web1 和 web2 都要配置
1. 安装并启动http服务
这里用apache测试,不重要其它http服务也无所谓
yum install -y httpd && systemctl start httpd && systemctl enable httpd
2. 编写主页面
web1:
echo web1 > /var/www/html/index.html
web2:
echo web2 > /var/www/html/index.html
这样写是为了在最后访问时效果更明显,方便区分
3.配置虚拟地址
复制 ifcfg-lo 网卡配置文件,并改名为 ifcfg-lo:0
cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}
更改 vim /etc/sysconfig/network-scripts/ifcfg-lo:0 文件的内容如下
DEVICE=lo:0
IPADDR=192.168.152.100 #对外提供服务的虚拟地址
NETMASK=255.255.255.255
ONBOOT=yes
4. 配置ARP
# 在所有网络接口上设置 ARP 请求的响应行为
net.ipv4.conf.all.arp_ignore = 1
# 设置 ARP 忽略规则为 1:只响应目标地址与本接口地址匹配的 ARP 请求。这有助于避免错误的 ARP 响应。net.ipv4.conf.all.arp_announce = 2
# 设置 ARP 宣告规则为 2:只在接口上声明 IP 地址,当 IP 地址只在该接口上有效时。这有助于避免将 IP 地址错误地声明在多个接口上。# 在默认的网络接口上设置 ARP 请求的响应行为
net.ipv4.conf.default.arp_ignore = 1
# 设置默认网络接口的 ARP 忽略规则为 1:只响应目标地址与本接口地址匹配的 ARP 请求。这确保新添加的接口也遵循相同的 ARP 忽略规则。net.ipv4.conf.default.arp_announce = 2
# 设置默认网络接口的 ARP 宣告规则为 2:只在接口上声明 IP 地址,当 IP 地址只在该接口上有效时。这确保新添加的接口也遵循相同的 ARP 宣告规则。# 在回环接口 (lo) 上设置 ARP 请求的响应行为
net.ipv4.conf.lo.arp_ignore = 1
# 设置回环接口的 ARP 忽略规则为 1:回环接口只响应针对本接口的 ARP 请求,避免干扰其他接口的 ARP 行为。net.ipv4.conf.lo.arp_announce = 2
# 设置回环接口的 ARP 宣告规则为 2:回环接口只在其上声明 IP 地址,这防止了回环接口在其他接口上错误地声明 IP 地址。
三、测试
在浏览器输入虚拟IP地址 192.168.152.100
刷新观察变化,如果一直没有变化可能是浏览器缓存,可以用下面命令查看,在 master 上执行
ipvsadm -Lnc
结果如下:
IPVS connection entries
pro expire state source virtual destination
TCP 01:37 FIN_WAIT 192.168.152.1:55317 192.168.152.100:80 192.168.152.74:80
TCP 15:02 ESTABLISHED 192.168.152.1:55428 192.168.152.100:80 192.168.152.73:80看最后一列IP地址,可以看到已经分配到两个web服务器上
把 master 主机的 keepalived 服务关闭,观察 backup 主机
在 backup 主机输入下面命令,看虚拟IP是否存在,并刷新网页看是否可用
ip a
相关文章:
keepalived+lvs高可用负载均衡集群配置方案
配置方案 一、配置主备节点1. 在主备节点上安装软件2. 编写配置文件3. 启动keepalived服务 二、配置web服务器1. 安装并启动http服务2. 编写主页面3.配置虚拟地址4. 配置ARP 三、测试 服务器IP: 主负载均衡服务器 master 192.168.152.71备负载均衡服务器 backup 192…...
Azure OpenAI Swagger Validation Failure with APIM
题意:Azure OpenAI Swagger 验证失败与 APIM 问题背景: Im converting the Swagger for Azure OpenAI API Version 2023-07-01-preview from json to yaml 我正在将 Azure OpenAI API 版本 2023-07-01-preview 的 Swagger 从 JSON 转换为 YAML。 My S…...
haproxy高级功能配置
介绍HAProxy高级配置及实用案例 一.基于cookie会话保持 cookie value:为当前server指定cookie值,实现基于cookie的会话黏性,相对于基于 source 地址hash 调度算法对客户端的粒度更精准,但同时也加大了haproxy负载,目前此模式使用…...
XXL-JOB分布式定时任务框架快速入门
文章目录 前言定时任务分布式任务调度 1、XXL-JOB介绍1.1 XXL-JOB概述1.2 XXL-JOB特性1.3 整体架构 2、XXL-JOB任务中心环境搭建2.1 XXL-JOB源码下载2.2 IDEA导入xxljob工程2.3 初始化数据库2.4 Docker安装任务管理中心 3、XXL-JOB任务注册测试3.1 引入xxl-job核心依赖3.2 配置…...
直流电机及其驱动
直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。 直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作 TB6612是一款双…...
Java-判断一个字符串是否为有效的JSON字符串
在 Java 中判断一个字符串是否为有效的 JSON 字符串,可以使用不同的库来进行验证。常见的库 包括 org.json、com.google.gson 和 com.alibaba.fastjson 等。这里我将展示如何使用 com.alibaba.fastjson 库来实现一个简单的工具类,用于判断给定的字符串…...
FPGA开发板的基本知识及应用
FPGA开发板是一种专门设计用于开发和测试现场可编程门阵列(Field-Programmable Gate Array, FPGA)的硬件平台。FPGA是一种高度可配置的集成电路,能够在制造后被编程以执行各种数字逻辑功能。FPGA开发板通常包含一个FPGA芯片以及一系列支持电路和接口,以便…...
JVM知识总结(性能调优)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 性能调优 何时进行JVM调优? 遇到以下情况,…...
基于Ascend C的Matmul算子性能优化最佳实践
矩阵乘法是深度学习计算中的基础操作,对于提升模型训练和推理速度至关重要。昇腾AI处理器是一款专门面向AI领域的AI加速器,其AI Core采用达芬奇架构,以高性能Cube计算引擎为基础,针对矩阵运算进行加速,可大幅提高单位面…...
SQL注入之EVAL长度限制突破技巧
要求: PHP Eval函数参数限制在16个字符的情况下 ,如何拿到Webshell? widows小皮环境搭建: 使用phpstudy搭建一个网站。 随后在该eval文件夹下创建一个webshell.php文件,并在其输入代码环境 解题思路: 通…...
稀疏注意力:时间序列预测的局部性和Transformer的存储瓶颈
时间序列预测是许多领域的重要问题,包括对太阳能发电厂发电量、电力消耗和交通拥堵情况的预测。在本文中,提出用Transformer来解决这类预测问题。虽然在我们的初步研究中对其性能印象深刻,但发现了它的两个主要缺点:(1)位置不可知性:规范Tran…...
详谈系统中的环境变量
目录 前言1. 指令背后的本质2. 环境变量背后的本质3. 环境变量到底是什么4. 命令行参数5. 本地变量 与 内置命令6. 环境变量的相关命令 前言 相信在 it 行业学习或者工作的小伙伴们,基本都配置过环境变量(windows环境下),如果你也…...
RAG与LLM原理及实践(11)--- Milvus hybrid search 源码分析及思想
目录 背景 hybrid search 源码分析 WeightedRanker 源码 hybrid search 核心 参数详解 基本入参 扩展入参 aysnc方式代码调用案例 说明 源码逻辑 prepare 调用过程 stub 调用结果 stub 调用过程 blocking 与 async 调用方式 深入内部core weightedRanker 的ch…...
JavaScript模拟空调效果
JavaScript模拟空调效果https://www.bootstrapmb.com/item/15074 在JavaScript中模拟空调效果主要依赖于前端界面的交互和状态变化,因为实际的温度调节、风扇速度调整等硬件操作无法直接通过JavaScript在浏览器中实现。不过,我们可以通过JavaScript来模…...
14.2 Pandas数据处理
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...
python学习7---多进程
一、介绍 多进程是指在同一程序中创建多个独立的进程来执行任务。每个进程都有自己独立的内存空间,相互之间不干扰。 因为GIL锁的存在,对于CPU密集型任务(例如计算密集型操作),使用多进程可以提高程序的效率。 优点&am…...
基于Spring + Vue的旅游景区项目+源代码+文档说明
文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 基于Spring Vue的旅游景区项目 项目功能 民宿管理员:订单数量统计,订单交易额统计,客房统计饼图,酒店…...
Java后端面试题
Redis缓存穿透、雪崩、击穿,布隆过滤器 一致性hash 一致性hash sharding-jdbc实现一致性hash #一致性hash, 应用在mysql数据库的分库分表上, 现在已经完成了分库分表, 现在的问题出现了, 需要继续新增数据库节点, 请…...
【Git】远程仓库新建分支后,拉到本地开发
1. 在远程仓库上创建分支 2. git fetch origin:在本地同步远程仓库的分支(获取远程仓库所有分支的所有修改) 3. git remote -a:查看所有分支(远程+本地) 4. git checkout -b 本地名 远程仓库…...
React H5设置企业级v6版本路由的配置
路由配置是项目开发的必要一环,尤其是目前流行SPA,下面看看如何使用v6版本路由进行合理的H5路由配置 一、基本页面结构(目录根据开发要求建,下面仅用于展示配置路由) 二、具体文件实现 1. index.tsx import React f…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
