Nginx+keepalived实现高可用

目录

主要功能

典型应用场景

优点

keepalived工作原理 

Nginx+keepalived高可用实验

一. 环境准备

二. 下载并部署配置

对master和backup都操作

对master主机操作 

对备用backup主机进行操作

验证当主节挂掉,VIP能否转义到备用机


"Keepalived" 是一个用于 Linux 系统的高可用性和负载均衡解决方案。它主要通过提供虚拟路由器冗余协议 (VRRP) 和健康检查来实现高可用性。以下是 Keepalived 的主要功能和特点的总结:

官网地址:Keepalived for Linux

Keepalived 的配置文件通常位于 /etc/keepalived/keepalived.conf 

 

主要功能

  1. 高可用性 (High Availability):

    • VRRP (Virtual Router Redundancy Protocol): Keepalived 使用 VRRP 提供路由冗余。通过配置主备服务器,当主服务器发生故障时,备服务器可以自动接管,保证服务的持续性。
    • Failover 机制: 监控主服务器的健康状况,一旦检测到故障,自动切换到备用服务器,从而实现服务的高可用性。
  2. 负载均衡 (Load Balancing):

    • 健康检查 (Health Checking): 定期检查后端服务器的健康状态。如果某个服务器出现故障,会将其从负载均衡池中移除,避免影响用户访问。
    • 负载分发策略: 支持多种负载分发策略,例如轮询 (Round Robin)、最少连接 (Least Connections) 等。
  3. 监控和报警:

    • 可以配置详细的监控和报警机制,及时发现并处理服务器故障。

典型应用场景

  1. Web 服务器集群: 在一组 Web 服务器之间分配流量,确保某台服务器宕机时,流量能自动切换到其他服务器。
  2. 数据库服务器高可用性: 监控数据库服务器的状态,确保数据库服务的高可用性和稳定性。
  3. 网络设备冗余: 通过 VRRP 提供路由器、交换机等网络设备的冗余,保证网络的高可用性。

优点

  1. 可靠性高: 提供高可用性和冗余,确保服务的持续性。
  2. 灵活性强: 支持多种负载均衡算法和健康检查机制,配置灵活。
  3. 开源免费: 基于开源许可证,免费使用和修改。

keepalived工作原理 

        keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

        虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

        keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

脑裂  split barin:
Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节点均为master强行绑定虚拟IP,导致不可预料的后果,这就是脑裂。
解决方式:
1、添加更多的检测手段,比如冗余的心跳线(两块网卡做健康监测),ping对方等等。尽量减少"裂脑"发生机会。(治标不治本,只是提高了检测到的概率);
2、设置仲裁机制。两方都不可靠,那就依赖第三方。比如启用共享磁盘锁,ping网关等。(针对不同的手段还需具体分析);
3、爆头,将master停掉。然后检查机器之间的防火墙。网络之间的通信

Nginx+keepalived高可用实验

一. 环境准备

两部虚拟机,两个虚拟机要在同一网段并可以互相通信。

主机名IP系统发行版本
master192.168.226.100Centos7
backup192.168.226.129Rocky_linux9.4

两个虚拟机都关闭防火墙和SElinux,配置好YUM源可以用,时间同步,修改对应主机名等基础配置准备。

二. 下载并部署配置
对master和backup都操作

对master和backup下载nginx和keepalived

yum install -y nginx keepalived

启动并设置开启自启master和backup的Nginx

systemctl enable --now nginx

备份keepalived.conf文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

对master主机操作 

对mastar的keepalived.conf进行配置

vi /etc/keepalived/keepalived.conf
#删除原来配置文件的所有内容,复制这里的模板
! Configuration File for keepalivedglobal_defs {router_id directory1   #备用主机改为directory2,不同主机要使用不同的标识
}
vrrp_script check_nginx {script "/etc/keepalived/check_nginx_status.sh"interval 5
}
vrrp_instance VI_1 {state MASTER        #定义主还是备interface ens33     #VIP绑定接口virtual_router_id 80  #整个集群的调度器一致priority 100         #master主机优先级为100,要比backup高,backup改为50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.226.200/24
# vip 这个是虚拟IP,找一个本网段内没有占用的IP使用,并和backup主机要保持一致}track_script {check_nginx}
}

创建一个检测脚本

vim /etc/keepalived/check_nginx_status.sh#!/bin/bash												        
/usr/bin/curl -I http://localhost &>/dev/null	
if [ $? -ne 0 ];then										    
#	/etc/init.d/keepalived stopsystemctl stop keepalived
fi	 #将上面的内容复制进创建的脚本文件里

给脚本加上执行权限

chmod a+x /etc/keepalived/check_nginx_status.sh

启动并设置开机自启keepalived

systemctl enable --now keepalived

对备用backup主机进行操作

对backup的keepalived.conf进行配置

vi /etc/keepalived/keepalived.conf
#删除原来配置文件的所有内容,复制这里的模板
! Configuration File for keepalivedglobal_defs {router_id directory2
}vrrp_instance VI_1 {state BACKUP    #设置为backupinterface ens33nopreempt        #设置到back上面,不抢占资源virtual_router_id 80priority 50   #辅助改为50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.226.200/24}
}

验证当主节挂掉,VIP能否转义到备用机

在master上查看IP如下:

浏览器访问192.168.226.200如下

虚拟IP已经在主节点机器上了,现在模拟web服务宕机关闭nginx

systemctl stop nginx

然后刷新去看虚拟IP 192.168.226.200,发现页面发现打开的是roucky_linux中的web服务页面:

 然后去查看backup主机的IP如下:

keepalived自动把IP切换到了备用主机上,从而实现避免单点故障,高可用。 

现在重新把master主机的nginx和keepalived服务启动,然后再刷新页面:

 

再查看IP可以发现虚拟IP又恢复到了master主机上, web服务又切换到了主服务器上。

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

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

相关文章

SpringBoot+Vue实现Excel文档导入和导出

1.准备工作 1.1.前端程序 在前端首先加上批量导出的按钮&#xff0c;如下 <el-button size"small" type"warning" plain click"exportData"> 批量导出 </el-button> 在添加了点击事件之后&#xff0c;在methods中要与之对应的添加上…

c#引用dll报错cs8370功能“本地函数特性“在c#7.3中不可用

cs8370:功能"本地函数特性"在c#7.3中不可用 解决方法&#xff1a; 代码放在form类里面

SJ703安全帽防静电测试仪

一、仪器用途 专门检测安全帽防静电性能。 二、仪器特征 1、携带使用轻便、量程宽广、读数准确&#xff0c;耐震性强等卓越优点 2、超上限时显示‘1’提示和低于下限时声响报警。 3、电池欠压时显示欠压符号“←”提示。 4、交流或直流&#xff08;电池&#xff09;供电任…

Java17 --- RabbitMQ之插件使用

目录 一、Federation插件 1.1、运行两个rabbitmq实例 1.2、启用插件 1.3、在下游端点添加上游端点 1.4、创建策略 1.6、测试 二、联邦队列 2.1、创建策略 2.2、创建交换机与队列 2.2.1、创建52000的队列与交换机 2.2.2、创建62000的队列 三、Shovel 3.1、启…

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

在词云渲染时遇到渲染不出来的问题&#xff1a; 原因分析&#xff1a; 1、echart和wordcloud版本不匹配&#xff08;我的是匹配的&#xff09; 解决方案&#xff1a; 1、echart和wordcloud版本要匹配&#xff1a; echart4x 使用wordcloud1x版本 echart5x 使用wordcloud2x版本…

Echarts图表: 矩形树图都有哪些配置项,一文告诉你

Hello&#xff0c;本期和大家分享矩形树图的配置项&#xff0c;欢迎评论区和贝格前端工场互动交流。 一、矩形树图是什么 矩形树图是ECharts中的一种图表类型&#xff0c;用于展示树形结构的数据。矩形树图通过矩形的大小和位置来表示树形结构中节点的层次关系和数据的大小。…

实例化游戏物体的实例(生成游戏物体)

一、实例1&#xff1a;实例化 1、准备工作&#xff1a;制备预制体&#xff0c;命名。如Circle 2、Create Empty&#xff0c;名字自取。如&#xff1a;CirclePrefab 3、给CirclePrefab添加Test.cs public GameObject CirclePrefab; // 预制体变量&#xff0c;用于存储Circle预…

基于matlab的MTCNN(多任务卷积神经网络)人脸检测算法

关键词&#xff1a;Matlab&#xff1b;深度学习&#xff1b;多任务卷积神经网络&#xff1b;人脸检测&#xff1b; 背景 在不受约束的环境中&#xff0c;由于个体姿势的多样性、光照条件的变化以及潜在的遮挡问题&#xff0c;人脸检测和对齐任务面临诸多挑战。近期的研究表明…

Elasticsearch搜索引擎(高级篇)

3.1 查询语法 | 《ElasticSearch入门到实战》电子书 (chaosopen.cn) day09-Elasticsearch02 - 飞书云文档 (feishu.cn) 目录 第一章 DSL查询 1.1 基本语法 1.2 叶子查询 全文检索查询 精确查询 1.3 复合查询 算分函数查询 bool查询 1.4 排序 1.5 分页 基础分页 深度分…

numpy的基本操作

1.常用方法创建array print(np.array([1, 2, 3], dtype"f4"))# 32位浮点型 print(np.array([1.5, 2.2, 3]))# 默认浮点型 print(np.array([1, 2, 3, 4, 5], ndmin3))# 3维数组 print(np.array([range(i, i 5) for i in [1, 2, 3]]))# print(np.zeros(shape[5, …

从开源EPR产品Odoo学习

前言 一个先进、敏捷、经济高效、可快速扩展的Odoo免费开源企业信息化解决方案,让企业获得适应未来发展的长期创新和增长能力。 Odoo 的免费开源模式 让我们可利用无数开发人员和业务专家,在短短数年内,打造数百款应用。凭借强大的技术基础,Odoo 的框架是非常独特且优秀的…

LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码

LIMS&#xff08;实验室&#xff09;信息管理系统源码、有哪些应用领域&#xff1f;采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码 LIMS实验室信息管理系统&#xff0c;是一种基于计算机硬件和数据库技术&#xff0c;集多个功能模块为一体的信息管理系统。该系统主…

前后端分离对于后端来说,是利好还是利弊呢?

前后端分离已经成为前端开发的主流模式&#xff0c;这种模式极大的解放了后端&#xff0c;让后端人员不再即当爹又当妈了&#xff0c;那么这种模式对于后端来说是利好还是利弊呢&#xff0c;如何趋利避害呢&#xff0c;贝格前端工场为大家分享一下。 一、什么前后端分离的开发…

Redis的一点入门了解

Redis NoSql概述 1、单机MySQL的时代 90年代&#xff0c;一个网站的访问量一般不会太大&#xff0c;单个数据库完全足够应付&#xff0c;技术上更多的会去使用静态页面html&#xff0c;对此服务器压根没多少压力&#xff1b; 但即使在这样的情况下&#xff0c;也会存在着一些…

【Linux】程序地址空间之动态库的加载

我们先进行一个整体轮廓的了解&#xff0c;随后在深入理解细节。 在动态库加载之前还要说一下程序的加载&#xff0c;因为理解了程序的加载对动态库会有更深的理解。 轮廓&#xff1a; 首先&#xff0c;不管是程序还是动态库刚开始都是在磁盘中的&#xff0c;想要执行对应的可…

IT入门知识博客文章大纲第一部分《IT基础知识》(1/10)

目录 IT入门知识博客文章大纲第一部分《IT基础知识》&#xff08;1/10&#xff09; 1.引言 2.第一部分&#xff1a;IT基础知识 2.1 计算机硬件 CPU&#xff1a;计算机的心脏 内存&#xff1a;数据的临时居所 存储设备&#xff1a;数据的长期仓库 输入输出设备&#xff1…

PostgreSQL基础(十四):PostgreSQL的数据迁移

文章目录 PostgreSQL的数据迁移 PostgreSQL的数据迁移 PostgreSQL做数据迁移的插件非常多&#xff0c;可以从MySQL迁移到PostgreSQL也可以基于其他数据源迁移到PostgreSQL。 这种迁移的插件很多&#xff0c;这里只说一个&#xff0c;pgloader&#xff08;非常方便&#xff0…

Coursera耶鲁大学金融课程:Financial Markets 笔记Week 01

Financial Markets 本文是学习 https://www.coursera.org/learn/financial-markets-global这门课的学习笔记 这门课的老师是耶鲁大学的Robert Shiller https://en.wikipedia.org/wiki/Robert_J._Shiller Robert James Shiller (born March 29, 1946)[4] is an American econ…

SQL Server Management Studio (SSMS) 20.1 - 微软数据库管理工具

SQL Server Management Studio (SSMS) 20.1 - 微软数据库管理工具 请访问原文链接&#xff1a;https://sysin.org/blog/ssms/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 笔者注&#xff1a;SQL Server 2014 及之前版本内置…

基于负相关误差函数的4集成BP神经网络matlab建模与仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ...............................................................…