keepalived 实现双机热备

2023-10-26

一、说明

我们经常听说 nginx + keepalived 双机热备,其实在这里,双机热备有两种思路:
一是只利用 keepalived 实现两个节点的故障切换,当主节点挂了(ip连不上),备用节点顶上,保证高可用群集中的热备效果。
二是满足上面的同时,加上进程健康的监控,当我们脚本中检测到指定的进程挂了时,vip切换节点

二、概念解释

  • VIP

虚拟ip(也叫浮动ip),他是虚拟路由器的ip地址,可以在热备组内的路由器之间进行转移。结合实际场景来解释:当我们配置好了双机热备后,两台节点之间会产生一个 vip,他同一时间只会漂移到一个节点上,我们可以用这个 vip 访问该节点的资源,他就如同你使用这个节点原本的 ip 去访问他一样。直到主节点挂了,这个 vip 会自动漂移到备用节点,实现相同的作用。

三、环境准备

  1. 节点

我们事先准备两个节点,ip 分别是 192.168.231.144192.168.231.145

然后我们选择一个 VIP 192.168.231.147 这个ip必须还没有被占用

  1. 查询节点的网卡名字
ip addr

两个节点分别执行这个命令获取网卡名,要记下来
在这里插入图片描述

  1. 要被访问的服务

我们实现双机热备,那总得有东西访问,我们才能测试出结果,所以我在两个节点分别安装了不同版本的 haproxy,然后都配置上了其内置的监控页面,用来访问,下面的截图可以看到我们可以通过版本号来区分当前访问的是哪个节点的服务:

192.168.231.144:
在这里插入图片描述

192.168.231.145:
在这里插入图片描述

四、操作过程

分别在两个节点安装keepalived
下面的安装步骤都一样,只有配置文件需要区别修改,已经在配置文件中标注了需要修改的地方
配置文件中 (主备节点不同) 的就是需要修改的地方

  1. 安装依赖
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
  1. 下载 keepalived 程序包

https://www.keepalived.org/download.html

  1. 上传 keepalived-2.2.8.tar.gz 到 /usr/local/src 目录

  2. 解压安装包

tar -zxvf keepalived-2.2.8.tar.gz
  1. 进去解压目录
cd keepalived-2.2.8
  1. 配置安装目录
./configure --prefix=/usr/local/keepalived
  1. 编译安装
make & make install
  1. 将 keepalived 启动脚本写进去系统启动配置
cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived
  1. 将 keepalived 主程序加入到环境变量
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
  1. 创建 keepalived 的配置文件
mkdir /etc/keepalived
vi /etc/keepalived/keepalived.conf

文件内容如下:

注意:
主备节点的 router_id 要不一样
下面配置的 interface 是指定节点的网卡,必须对应上面查询出来的网卡名字
主备两个节点的 priority 必须设置成不一样,主节点要比备用节点的值要大

! Configuration File for keepalived

global_defs {                    #全局参数
	router_id node1              #指定名称,各个服务器名称要不一样(主备节点不同)
}

vrrp_instance VI_1 {             #指定vrrp热备参数
	state MASTER                 #服务器角色是master,备份服务器设置为BACKUP(主备节点不同)
	interface eth0               #修改物理网卡名称,默认是centos6的eth0
	virtual_router_id 10         # 虚拟路由标识(需在两个节点上相同)
	priority 101                 #优先级,主服务器设置要大于备服务器(主备节点不同)
	advert_int 1                 # 发送VRRP广告的间隔时间
	authentication {
		auth_type PASS           #验证类型和密码
		auth_pass 123            # 认证密码(需在两个节点上相同)
	}
	virtual_ipaddress {
		192.168.231.147          #漂移地址(VIP)地址,可以有多个
	}
}
  1. 启动 keepalived
systemctl start keepalived.service
  1. 查询运行状态
systemctl status keepalived.service
  1. 查询 vip 是否生成
ip addr

我们在主节点执行这个命令,可以看到已经生成了我们指定的 vip

注意:这时候在备用节点是没有产生这个 vip 的

在这里插入图片描述

五、验证

通过虚拟ip访问haproxy监控页面

http://192.168.231.147:9999/haproxy

可以看到他此时访问的是主节点的内容

在这里插入图片描述

这时,我们手动去停掉主节点,或者直接 kill 掉主节点的 keepalived 的进程

他会自动切换到备节点

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

keepalived 实现双机热备 的相关文章

随机推荐

  • Ble Mesh的Heatbeat(心跳)&地址&Model(模型)

    心跳 将节点配置为定期发送称为心跳消息的消息 Heartbeat 消息的目的 1 表示该节点仍然处于活动状态 2 允许根据传递 Heartbeat 消息所需的跳数确定其与接收者的距离 Heartbaeat的opcode 和Friend re
  • 主存储器的基本组成

    主存储器的基本组成 存储体 存储体也叫存储矩阵 是由一个个存储0或1的记忆单元 存储元 构成的 为了存取存储体中的信息 必须对存储单元进行编址 编址单位是指具有相同地址的那些存储元件构成的一个单位 常见有按字节编址 寻址访存 CPU首先把被
  • C#集合(泛型集合与非泛型)

    每日一句 自律 努力 方法 坚持 时间 优秀 集合特点 一种数据容器 一种数据结构 容纳多个数据 大小可变 空间不一定连续 命名空间 非泛型集合 System Collections 非泛型集合 System Collections Gen
  • 动态博客系统

    Halo 是我折腾过的众多博客系统里面 最好 最容易上手的动态博客系统之一 solo 也是 轻快 简洁 功能强大 正文 上周末正在募集团队一起写算法题 群里讨论需要一个网站来存放文章 恰巧我有一个已经备案但闲置的域名 马上开干 之前的网站是
  • 解惑React之this.setState({ [name]: value })

    react之this setState name value 疑问 学习React中文官方文档中的非空组件与受控组件中 遇到如下代码 class Reservation extends React Component constructor
  • 【面试系列】重排链表

    题意 原题链接 思路 快慢指针找到中点 或者先遍历得到长度 再遍历一半也可行 反转后半部分 归并两部分 代码 Definition for singly linked list struct ListNode int val ListNod
  • Excel 解析,通过Excel的地址和MultipartFile进行解析

    目录 两种方法都用到了read 和getValue 方法对数据进行解析 只是二者传入的Excel数据格式不一样 第一种方法 通过Excel地址进行解析Excel的数据 第二种方法 解析Excel的MultipartFile数据流获取数据 H
  • mmocr 训练字符检测模型

    目录 1 数据集 2 config文件配置 3 测试模型 1 数据集 这里以icdar2015字符检测为例https blog csdn net jizhidexiaoming article details 124149164 spm 1
  • Visio 2007/2010 左侧"形状"窗口管理

    Visio 2007 2010 左侧 形状 窗口管理 Visio 打开后 通常窗口左侧会有一个 形状 面板 我们可以方便地从中选择需要的形状 有时为了获得更大的版面空间或者不小心关闭了形状面板 怎么把它重新调出来 我们可以从 视图 中把它找
  • 使用docker快速搭建服务器环境

    思路 将nginx mysql tomcat等环境打包为一个个docker 然后使用docker compose管理 服务器内安装docker相关环境 然后直接运行docker compose配置 即可快速搭建完成服务器环境 之后可以将相关
  • Markdown / KaTex数学公式汇总

    目录 LaTex和KaTex 软件推荐 Mathpix 一 如何插入公式 二 上下标 三 常用运算符 四 高级运算符 五 常用数学符号 六 特殊符号 6 1 箭头 6 2 公式序号 七 括号使用 八 矩阵 九 集合运算 十 希腊字母 十一
  • 使用反射实现动态修改@Excel的注解属性

    业务场景 我们使用poi实现数据导出时 通常是根据 Excel name xxx 来确定列名 通常情况下这个是不会发生变动的 但这里就说少数情况 在我们需要这里根据某些情况来进行改变的时候 我们就需要用到反射 AirQualityRanki
  • Java反射(自己的理解)

    动态语言 运行是代码可以根据某些条件改变自身结构 像js和php python等 但是我们不像c 是一门静态语言 可以准确的说我们是一门准动态语言 因为反射让我们具有动态性 我来直接用我所理解的反射给大家先讲一下大概 这绝对让你的耳目一新
  • 五、单向散列函数

    单向散列函数 获取消息的指纹 当需要比较两条消息是否一致时 我们不必直接对比消息本身的内容 只要对比它们的 指纹 就可以了 单向散列函数 one wayftnction 有一个输人和一个输出 其中输人称为消息 message 输出称为散列值
  • 全国大学生数字建模竞赛、中国研究生数学建模竞赛(数学建模与计算实验)前言

    1 什么是数学建模 2 所需要学的知识 知识算法分类表格汇总 3 所需要的软件工具 4 论文模板 查找文献 查找数据 一 什么是数学建模 全国大学生数字建模竞赛 National College Student Mathematical M
  • HashMap源码初探

    Hash table based implementation of the Map interface This implementation provides all of the optional map operations and
  • Qt动态库加载之 QLibrary

    目录 一 使用Qt编译C动态库 二 使用QLibrary调用共享库 一 使用Qt编译C动态库 使用Qt新建一个C项目 cbb frame 在项目中我们声明和定义两个函数 并导出函数 在cbb mylog中我们使用了函数指针 这里为啥这样干
  • python人脸识别考勤系统 dlib+OpenCV和Pyqt5、数据库sqlite 人脸识别系统 计算机 毕业设计 源码

    一 项目介绍 Python语言 dlib OpenCV Pyqt5界面设计 sqlite3数据库 本系统使用dlib作为人脸识别工具 dlib提供一个方法可将人脸图片数据映射到128维度的空间向量 如果两张图片来源于同一个人 那么两个图片所
  • hrformer

    High Resolution Transformer Copyright c 2021 Microsoft Licensed under The MIT License see LICENSE for details Written by
  • keepalived 实现双机热备

    文章目录 一 说明 二 概念解释 三 环境准备 四 操作过程 五 验证 一 说明 我们经常听说 nginx keepalived 双机热备 其实在这里 双机热备有两种思路 一是只利用 keepalived 实现两个节点的故障切换 当主节点挂