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

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调优? 遇到以下情况&#xff0c…...

基于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…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

docker详细操作--未完待续

docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...