LVS-DR+Keepalived 高可用群集部署
LVS-DR+Keepalived 高可用群集部署
- Keepalived 的工作原理
- LVS+Keepalived 高可用群集部署
- 配置负载调度器(主、备相同)
- 关闭防火墙和核心防护及准备IPVS模块
- 配置keeplived(主、备DR 服务器上都要设置)
- 启动 ipvsadm 服务
- 调整 proc 响应参数,关闭Linux 内核的重定向参数响应
- 配置节点服务器
- 测试验证
Keepalived 的工作原理
Keepalived 是一个基于 VRRP 协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
在一个LVS服务集群中通常有两种角色的负载调度器,主负载调度器(MASTER)和备份负载调度器(BACKUP),但是对外表现为一个虚拟 IP(VIP)。
主负载调度器会发送VRRP通告信息给备份负载调度器,当主负载调度器异常时,备份负载调度器收不到主负载调度器发送的 VRRP 消息,即认定主负载调度器异常,备份负载调度器就会接管虚拟IP,继续提供服务,从而保证了服务的高可用性。
Keepalived 体系主要模块及其功能:
keepalived 体系架构中主要有三个模块,分别是 core、check 和 vrrp 。
模块 | 功能 |
---|---|
core模块 | 为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。 |
vrrp模块 | 是用来实现VRRP协议的。(调度器之间的健康检查和主备切换) |
check模块 | 负责健康检查,常见的方式有端口检查及URL 检查。(节点服务器的健康检查) |
keepalived的工作模式:
抢占模式:keepalived 的默认模式,MASTER节点从故障中恢复后,会将 VIP 从 BACKUP 节点中抢占过来
非抢占模式:MASTER 节点恢复后不抢占VIP。(主备节点的 state 都配置为 BACKUP ,且都要添加 nopreempt 配置)
LVS+Keepalived 高可用群集部署
服务器 | IP |
---|---|
主DR 服务器 | 192.168.110.70 |
备DR 服务器 | 192.168.110.20 |
Web 服务器1 | 192.168.110.50 |
Web 服务器2 | 192.168.110.60 |
vip | 192.168.110.88 |
配置负载调度器(主、备相同)
关闭防火墙和核心防护及准备IPVS模块
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#加载IP虚拟服务器(IPVS)模块
modprobe ip_vs
#检查IPVS的状态
cat /proc/net/ip_vs
#安装IPVS管理工具
yum -y install ipvsadm
配置keeplived(主、备DR 服务器上都要设置)
#下载
yum -y install keepalived
cd /etc/keepalived/
#备份
cp keepalived.conf keepalived.conf.bakvim keepalived.conf
global_defs { #定义全局参数
#10行,修改邮件服务指向本地smtp_server 127.0.0.1
#12行,修改指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02router_id LVS_01
#14行,注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接#vrrp_strict
}vrrp_instance VI_1 { #定义VRRP热备实例参数
#20行,修改指定热备状态,主为MASTER,备为BACKUPstate MASTER
#21行,修改指定承载vip地址的物理接口interface ens33
#22行,修改指定虚拟路由器的ID号,每个热备组保持一致 virtual_router_id 10#nopreempt #如果设置非抢占模式,两个节点state必须为BACKUP,并加上配置 nopreempt
#23行,修改指定优先级,数值越大优先级越高,这里设置主为100,备为90priority 100
#通告间隔秒数(心跳频率)advert_int 1 authentication { #定义认证信息,每个热备组保持一致
#认证类型 auth_type PASS
#27行,修改指定验证密码,主备服务器保持一致auth_pass abc123}virtual_ipaddress { #指定群集vip地址192.168.110.88}
}
#36行(注意删减,行数为原文件行数),修改指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.110.88 80 {
#健康检查的间隔时间(秒)delay_loop 6
#指定调度算法,轮询(rr) lb_algo rr
#39行,修改指定群集工作模式,直接路由(DR)lb_kind DR
#连接保持时间(秒)persistence_timeout 0
#应用服务采用的是 TCP协议protocol TCP
#43行,修改指定第一个Web节点的地址、端口real_server 192.168.110.50 80 {
#节点的权重weight 1
#45行,删除,添加以下健康检查方式 TCP_CHECK {
#添加检查的目标端口connect_port 80
#添加连接超时(秒) connect_timeout 3
#添加重试次数nb_get_retry 3
#添加重试间隔delay_before_retry 3 }}real_server 192.168.110.60 80 { #添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
##删除后面多余的配置##
}#启动keepalived
systemctl start keepalived
#查看IP
ip a show ens33
启动 ipvsadm 服务
192.168.110.70
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 192.168.110.88:80 -s rr
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.50:80 -g
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.60:80 -g
ipvsadmipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务
systemctl restart keepalived192.168.110.80
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 192.168.110.88:80 -s rr
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.50:80 -g
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.60:80 -g
ipvsadmipvsadm -ln
调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.confnet.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0#加载配置
sysctl -p
配置节点服务器
参考
https://blog.csdn.net/m0_67475830/article/details/142751772?fromshare=blogdetail&sharetype=blogdetail&sharerId=142751772&sharerefer=PC&sharesource=m0_67475830&sharefrom=from_link
测试验证
curl 192.168.110.88
关闭主负载均衡器的Keepalived
systemctl stop keepalived
#客户机
curl 192.168.110.88
#主负载均衡器
ip a show ens33
#备负载均衡器
ip a show ens33
相关文章:

LVS-DR+Keepalived 高可用群集部署
LVS-DRKeepalived 高可用群集部署 Keepalived 的工作原理LVSKeepalived 高可用群集部署配置负载调度器(主、备相同)关闭防火墙和核心防护及准备IPVS模块配置keeplived(主、备DR 服务器上都要设置)启动 ipvsadm 服务调整 proc 响应…...
【elasticsearch】安装和启动
启动 Elasticsearch 并验证其是否成功运行通常涉及以下步骤: 下载和安装 Elasticsearch: 访问 Elasticsearch 官方网站下载页面:https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html根据你的操作系…...
Golang 逃逸分析(Escape Analysis)理解与实践篇
Golang 逃逸分析(Escape Analysis)理解与实践篇 文章目录 1.逃逸分析2.相关知识(栈、堆、GC分析)3.逃逸分析综合-实践 demo 逃逸分析(Escape Analysis)是编译器在编译期进行的一项优化技术,是Gl…...

React入门 9:React Router
1. 什么是路由 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动。 以上是中文维基百科对路由的解释。通俗的来讲,把一个地方的信息传输到他想去的目的地的过程,就叫路由。 2. 用代码解释路由 需求:…...
MATLAB基础应用精讲-【数模应用】Bland-Altman图(附python和R语言代码实现)
目录 前言 几个高频面试题目 Bland-altman图:如何改变y轴 算法原理 Bland-Altman一致性分析 一致性界限 1. 背景介绍 2. Bland-Altman 法 3. batplot 命令介绍 4. 应用实例 Prism GraphPad实现Bland-Altman图 1.输入数据 2.从数据表中选择Bland-Altman分析 3.检…...
ARM/Linux嵌入式面经(四一):中兴面经
1. 请介绍一下您在嵌入式系统开发中的项目经验。 在嵌入式系统开发领域,我积累了丰富的项目经验,这些经验不仅锻炼了我的技术能力,也让我对嵌入式系统的设计和实现有了更深入的理解。以下是我参与的一个具有代表性的嵌入式系统开发项目的详细介绍: 项目背景 该项目是为一…...

鸿蒙虚拟运行环境
加一个环境变量:%SystemRoot%\System32\Wbem pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt for /f %%i in (findstr /i . hyper-v.txt 2^>nul) do dism /online /norestart /add-package:"%SystemRoot%…...

SpringCloud-Consul
为什么引入 Consul 简介以及安装 控制台 localhost:8500 服务注册与发现 服务端 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-consul-discovery</artifactId><exclusions><exclusio…...
nginx搭建负载均衡
准备工作 两台虚拟机,或者本地启动两个相同应用,在不同的端口上安装好的nginx,在linux上两个版本的hexo,或者其他应用,方便观察是否进行了负载均衡 启动服务 在两台虚拟机上启动项目,这里以hexo为例 服务器…...

灵当CRM data/pdf.php 任意文件读取漏洞复现
0x01 产品简介 灵当CRM是一款专为中小企业打造的智能客户关系管理工具,由上海灵当信息科技有限公司开发并运营。广泛应用于金融、教育、医疗、IT服务、房地产等多个行业领域,帮助企业实现客户个性化管理需求,提升企业竞争力。无论是新客户开拓、老客户维护,还是销售过程管…...

Python 批量转换 Shapefile 为 GeoJSON
批量转换 Shapefile (.shp) 为 GeoJSON 文件的脚本详解 🗺️🔄 在地理信息系统(GIS)和遥感领域,Shapefile(.shp)格式与GeoJSON格式是两种常用的数据格式。Shapefile 作为矢量数据的标准格式之一…...

软考《信息系统运行管理员》- 4.1信息系统软件运维概述
4.1信息系统软件运维概述 文章目录 4.1信息系统软件运维概述信息系统软件运维的概念信息系统软件的可维护性及维护类型对软件可维护性的度量可以从以下几个方面进行:软件维护分类: 信息系统软件运维的体系1.**需求驱动**2.**运维流程**3.**运维过程**4.*…...
Leetcode 3319. K-th Largest Perfect Subtree Size in Binary Tree
Leetcode 3319. K-th Largest Perfect Subtree Size in Binary Tree 1. 解题思路2. 代码实现 题目链接:3319. K-th Largest Perfect Subtree Size in Binary Tree 1. 解题思路 这一题其实就是一个很常见的树的遍历,我们自底向上遍历每一个子树&#x…...

从秒级到小时级:TikTok等发布首篇面向长视频理解的多模态大语言模型全面综述
文章链接:https://arxiv.org/pdf/2409.18938 亮点直击 追踪并总结从图像理解到长视频理解的MM-LLMs的进展;回顾了各种视觉理解任务之间的差异,并强调了长视频理解中的挑战,包括更细粒度的时空细节、动态事件和长期依赖性;详细总结了MM-LLMs在…...
【CTF】敏感信息泄露 GIT SVN VIM
在CTF(Capture The Flag)比赛中,信息泄露是常见的考察方向之一。这类题目通过模拟开发人员的疏忽或系统配置的失误,导致敏感文件或数据被泄露。信息泄露题目通常相对简单,但能帮助参赛者掌握如何从公开的信息中获取潜在…...

EMQX服务器的搭建,实现本地机和虚拟机之间的MQTT通信(详细教程)
前言 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。 MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(…...
cordova的使用
环境 Cordova 是一个跨平台的开发框架,它允许开发者使用 HTML、CSS 和 JavaScript 创建移动应用。Cordova 的不同版本可能会有不同的环境要求。以下是 Cordova 10 和 Cordova 12 在开发 Android 和 iOS 应用时的环境要求的对比总结。 1. Cordova 10 环境要求 And…...

三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨Transformer模型中三种关键的注意力机制:自注意力、交叉注意力和因果自注意力。这些机制是GPT-4、Llama等大型语言模型(LLMs)的核心组件。通过理解这些注意力机制,我们可以更好地把握这些模型的工作原理和应用潜力。 …...

《使用Gin框架构建分布式应用》阅读笔记:p20-p31
《用Gin框架构建分布式应用》学习第2天,p20-p31总结,总计12页。 一、技术总结 1.第一个gin程序 // main.go package mainimport "github.com/gin-gonic/gin"func main() {r : gin.Default()r.GET("/", func(c *gin.Context) {c.J…...
如何修改MacOS的终端的配色和linux一样
目录 一、配色方案 二、修改配色 一、配色方案 一键更改MacOS的终端配色文件,目的就是为了让他从原本的样子变成XShell里面显示的配色样式。文件夹为蓝色,链接文件为青色,可执行文件为绿色之类的。 linux默认配色方案是"exfxcxdxbxege…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
CppCon 2015 学习:REFLECTION TECHNIQUES IN C++
关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...
Java多线程实现之Runnable接口深度解析
Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...