LVS+Nginx高可用集群---keepalived原理与实战

1.高可用集群架构keepalived双机主备原理

高可用:(HA)
部署nginx存在两台nginx。当主节点的nginx宕机停止服务的时候,nginx备用机起到跟nginx(主)
keepalived的概念:解决单点故障;组件免费;可以实现高可用HA机制;基于VRRP协议

虚拟路由冗余协议VRRP:virtual router redundancy protocol
解决内网单机故障的路由协议;构建有多个路由器的MASTER BACKUP(路由器可以理解为单个nginx节点);虚拟ip-VIP(virtual IP Address)(包含内网ip和虚拟ip)
存在多个虚拟ip(有权重),在主节点宕机,多个BACKUP会有个竞争的过程。谁的权重越高,谁就成为临时“领导”。

Keepalived双机主备原理:
在这里插入图片描述
主节点宕机后,虚拟ip会进行心跳检测,这时候虚拟ip会跟备用机绑定到一起。
高可用的故障转移跟故障切换都是通过VIp协议完成的,(主节点)不停的往备用机发送心跳,备用机拿到之后就知道主节点还活着。如果发生故障,备用机就接受不到心跳了。备用机就会接管主节点的服务了

2.Keepalived安装部署

通过ftp工具上传到linux中,/home/software

解压:
tar -zxvf keepalived-2.0.18.tar.gz

解压后进入到解压出来的目录,看到会有configure,那么就可以做配置了
在这里插入图片描述

使用configure命令配置安装目录与核心配置文件所在位置
./configure --prefix=/usr/local/keepalived --sysconf=/etc

prefix:keepalived安装的位置
sysconf:keepalived核心配置文件所在位置,固定位置,改成其他位置则keepalived启动不了,/var/log/messages中会报错
配置过程中可能会出现警告信息,如下所示:
*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

安装libnl/libnl-3依赖
yum -y install libnl libnl-devel
5.3. 重新configure一下,此时OK。

安装keepalived:
make && make install

进入到/etc/keepalived,该目录下为keepalived核心配置文件
在这里插入图片描述
如果忘记安装配置的目录,则通过如下命令找到:
在这里插入图片描述

3.Keepalived核心配置

通过命令 vim keepalived.conf 打开配置文件

global_defs {# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一router_id keep_171
}vrrp_instance VI_1 {# 表示状态是MASTER主机还是备用机BACKUPstate MASTER# 该实例绑定的网卡interface ens33# 保证主备节点一致即可virtual_router_id 51# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选priority 100# 主备之间同步检查时间间隔,单位秒advert_int 2# 认证权限密码,防止非法节点进入authentication {auth_type PASSauth_pass 1111}# 虚拟出来的ip,可以有多个(vip)virtual_ipaddress {192.168.1.161}
}

查看网卡的名称:
在这里插入图片描述
启动keepalived:
在这里插入图片描述
查看进程:ps -ef|grep keepalived
在这里插入图片描述
查看vip:虚拟ip
在这里插入图片描述

4.把keepalived注册为系统服务

使用Switchhosts:首先配置网址
171是虚拟机ip。161是keepalived的VIP
在这里插入图片描述
首先查看两个虚拟机中nginx的配置
Keepalived的关闭方式杀死对应的进程 kill -9 pid

将/home/software/keepalived-2.2.7/keepalived/etc目录下的 init.d/keepalived 移动到/etc/keepalived.

在这里插入图片描述
刷新,加载keepalived服务。
命令:systemctl daemon-reload

keepalived命令:

# 启动keepalived
systemctl start keepalived
# 停止keepalived
systemctl stop keepalived
# 重启keepalived
systemctl restart keepalived查看进程:ps -ef|grep keepalived

5.keepalived实现双机主备高可用

首先安装backup节点的keepalived,修改对应keepalived里的配置(参考之前配置的内容),并且配置为系统服务。

启动测试成功。测试backup是否好用。
关闭主服务的keepalived,
打开备用的服务器,使用ip addr查看虚拟ip,是否多出查看keepalived是否启用。如下图:
在这里插入图片描述

再重启主服务的keepalived,解绑成功。Backup的ip addr 命令查不到192.168.1.161
配置的keepalived的配置模板:

global_defs {router_id keep_172
}vrrp_instance VI_1 {# 备用机设置为BACKUPstate BACKUPinterface ens33virtual_router_id 51# 权重低于MASTERpriority 80advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {# 注意:主备两台的vip都是一样的,绑定到同一个vip192.168.1.161}
}

6.keepalived配置nginx自动重启

当发生nginx挂掉,而keepalived仍然在运行。

写相应的标本文件,写在核心配置文件下。

(1).增加nginx重启检测脚本:

vim /etc/keepalived/check_nginx_alive_or_not.sh#!/bin/bashA=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then/usr/local/nginx/sbin/nginx# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机sleep 3if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi增加运行权限:chmod +x /etc/keepalived/check_nginx_alive_or_not.sh

(2).配置keepalived监听nginx脚本

vrrp_script check_nginx_alive {script "/etc/keepalived/check_nginx_alive_or_not.sh"interval 2 # 每隔两秒运行上一行脚本weight 10 # 如果脚本运行成功,则升级权重+10# weight -10 # 如果脚本运行失败,则升级权重-10
}

(3).在VRRP_instance中新增监控的脚本。

track_script {check_nginx_alive   # 追踪 nginx 脚本
}

(4).重启keepalived使配置文件生效

Systemctl restart keepalived

7.实现keepalived双主热备

先修改核心配置文件
主节点配置:

global_defs {router_id keep_171
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.161}
}vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 52priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.162}
}

备用节点配置:

global_defs {router_id keep_172
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.161}
}vrrp_instance VI_2 {state MASTERinterface ens33virtual_router_id 52priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.162}
}

重启两条keepalived:
重启Keepalived
systemctl restart keepalived

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【音视频 | HTTP协议】HTTP协议详细介绍(HTTP方法、报文格式、报文头部字段、状态码)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

推出全新的ZL3079x、ZL3069x、ZL3066x同步器,优化用于5G运输和无线基础设施设备

一、单通道、双通道和三通道IEEE1588/SyncE网络同步器 ZL3079x提供1个、2个和三个独立的组合硬件和软件平台定时通道,包括IEEE 1588-2008精确时间协议栈和同步算法。该设备使用miTimePLL定时技术,为5G传输和无线基础设施设备提供新的改进功能。该器件非…

阿里云ACP云计算高级攻城狮通用知识

🔥概述 阿里云云计算高级工程师ACP认证是面向使用阿里云云计算产品的架构、开发、运维类人员的专业技术认证,主要考核考生利用阿里云云计算技术服务体系设计稳定、安全、高性能、易扩展、低成本的企业云计算架构的能力。 前提:在写适用人群…

Spring后端框架复习总结

之前写的博客太杂,最近想把后端框架的知识点再系统的过一遍,主要是Spring Boot和Mybatis相关,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点可以参考之前写java后端专栏,这篇不再赘述。 目录 Spring什么是AOP?底层原理?事务…

word的进阶

Word的基本操作 这里主要用到的软件是WPS软件。 一、创建一个文档 第一种:快捷键:ctrln第二种:通过界面鼠标点击 二、设置文档背景 更换过的背景如下: 三、章节、目录导航的设置 四、插入目录页 五、对历史文档进行管理 六、…

大数减法c++

这里写目录标题 key key 检查减数和被减数的大小&#xff0c;大的放前&#xff0c;小的放后确定结果是正数&#xff0c;还是负数&#xff0c;即符号位从低位开始减如果a[i]<b[i]&#xff0c;则向高位借1当10&#xff0c;a[i1]–;a[i]10 #include <iostream> #include…

Java_MyBatisPlus

MyBatisPlus属于是MyBatis的拓展&#xff0c;不影响原MyBatis框架下的代码运行&#xff0c;并对MyBatis框架进行拓展及优化。 使用步骤&#xff1a; 注意&#xff1a;继承BaseMapper时要填写泛型为要操作的实体类。 基本原理&#xff1a; MyBatisPlus通过扫描实体类&#xff…

怎么给PDF文件设置加密保护?有哪些方法?

pdf作为一种便携式文档&#xff0c;是展示内容的首选&#xff0c;目前也已广泛应用于交换和分享等&#xff0c;例如内部报告以及商业提案等。然而&#xff0c;在如今的数字化时代&#xff0c;随着越来越多的企业将其文档存储和在线分享&#xff0c;pdf文件也可能面临安全隐私泄…

深入理解ADB:Android调试桥详解与使用指南

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Android ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 1. 什么是ADB&#xff1f; ADB的基本原理&#xff1a; 2. ADB的安装与配置 安装ADB工具集&#xff1a; 配置ADB环境变量&am…

人大金仓数据库驱动导入maven

1.去人大金仓官网去查找合适的驱动人大金仓-成为世界卓越的数据库产品与服务提供商 2.下载解压后 执行下面的代码 mvn install:install-file -DgroupIdkingbase -DartifactIdkingbase8 -Dversion8 -DfileF:\1foryou\foryou-report\kingbase8-8.6.0.jar -Dpackagingjar -Dgene…

FastAPI -- 第三弹(自定义响应、中间件、代理、WebSockets)

路径操作的高级配置 OpenAPI 的 operationId from fastapi import FastAPIapp FastAPI()# 通过 operation_id 参数设置 app.get("/items/", operation_id"some_specific_id_you_define") async def read_items():return [{"item_id": "F…

使用LVS+NGinx+Netty实现数据接入

数据接入 链接参考文档 LVSKeepalived项目 车辆数据上收&#xff0c;TBox通过TCP协议连接到TSP平台 建立连接后进行数据上传。也可借由该连接实现远程控制等操作。 通过搭建 LV—NGinx—Netty实现高并发数据接入 LVS&#xff1a;四层负载均衡&#xff08;位于内核层&#x…

Odoo17架构概述

多层架构 Odoo遵循多层架构&#xff0c;这意味着演示&#xff0c;业务逻辑和数据存储是分开的。更具体地说&#xff0c;它使用三层架构。 UI展示层 UI表示层是 HTML5、JavaScript 和 CSS 的组合。 应用程序的最顶层是用户界面。界面的主要功能是将任务和结果转换为用户可以理…

【数据结构】二叉树———Lesson2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

Uniapp 组件 props 属性为 undefined

问题 props 里的属性值都是 undefined 代码 可能的原因 组件的名字要这样写&#xff0c;这个官方文档有说明

【Django】网上蛋糕商城后台-商品管理

1.商品管理功能 当管理员点击商品管理时&#xff0c;发送服务器请求 path(admin/goods_list/, viewsAdmin.goods_list), # 处理商品列表请求 def goods_list(request):try:type request.GET["type"]except:type 0try:ym request.GET["ym"]except:ym …

Spring Cloud Loadbalancer 的使用

一、默认负载均衡策略 Spring Cloud LoadBalancer 默认的负载均衡策略是轮询。 轮询效果示例 我们需要示例一个请求分发到不同的模块上&#xff0c;所以我们需要创建多模块项目。 新建 Spring Boot &#xff08;3.0.2&#xff09;的 Maven 项目&#xff08;JDK 17&#xff09…

ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中

ETLCloud是一个全面的数据集成平台&#xff0c;专注于解决大数据量和高合规要求环境下的数据集成需求。采用先进的技术架构&#xff0c;如微服务和全Web可视化的集成设计&#xff0c;为用户提供了一站式的数据处理解决方案。 主要特点和功能包括&#xff1a; 实时数据处理&…

【已解决】Django连接MySQL启动报错Did you install mysqlclient?

在终端执行python manage.py makemigrations报错问题汇总 错误1&#xff1a;已安装mysqlclient&#xff0c;提示Did you install mysqlclient? 当你看到这样的错误信息&#xff0c;表明Django尝试加载MySQLdb模块但未找到&#xff0c;因为MySQLdb已被mysqlclient替代。 【解…

Linux——Shell脚本和Nginx反向代理服务器

1. Linux中的shell脚本【了解】 1.1 什么是shell Shell是一个用C语言编写的程序&#xff0c;它是用户使用Linux的桥梁 Shell 既是一种命令语言&#xff0c;有是一种程序设计语言 Shell是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问…