深入浅出 -- 系统架构之Keepalived搭建双机热备

Keepalived+重启脚本+双机热备搭建

①首先创建一个对应的目录并下载keepalived安装包(提取码:s6aq)到Linux中并解压:

[root@localhost]# mkdir /soft/keepalived && cd /soft/keepalived
[root@localhost]# wget https://www.keepalived.org/software/keepalived-2.2.4.tar.gz
[root@localhost]# tar -zxvf keepalived-2.2.4.tar.gz

②进入解压后的keepalived目录并构建安装环境,然后编译并安装:

[root@localhost]# cd keepalived-2.2.4
[root@localhost]# ./configure --prefix=/soft/keepalived/
[root@localhost]# make && make install

③进入安装目录的/soft/keepalived/etc/keepalived/并编辑配置文件:

[root@localhost]# cd /soft/keepalived/etc/keepalived/
[root@localhost]# vi keepalived.conf

④编辑主机的keepalived.conf核心配置文件,如下:

global_defs {# 自带的邮件提醒服务,建议用独立的监控或第三方SMTP,也可选择配置邮件发送。notification_email {root@localhost}notification_email_from root@localhostsmtp_server localhostsmtp_connect_timeout 30# 高可用集群主机身份标识(集群中主机身份标识名称不能重复,建议配置成本机IP)router_id 192.168.12.129 
}# 定时运行的脚本文件配置
vrrp_script check_nginx_pid_restart {# 之前编写的nginx重启脚本的所在位置script "/soft/scripts/keepalived/check_nginx_pid_restart.sh" # 每间隔3秒执行一次interval 3# 如果脚本中的条件成立,重启一次则权重-20weight -20
}# 定义虚拟路由,VI_1为虚拟路由的标示符(可自定义名称)
vrrp_instance VI_1 {# 当前节点的身份标识:用来决定主从(MASTER为主机,BACKUP为从机)state MASTER# 绑定虚拟IP的网络接口,根据自己的机器的网卡配置interface ens33 # 虚拟路由的ID号,主从两个节点设置必须一样virtual_router_id 121# 填写本机IPmcast_src_ip 192.168.12.129# 节点权重优先级,主节点要比从节点优先级高priority 100# 优先级高的设置nopreempt,解决异常恢复后再次抢占造成的脑裂问题nopreempt# 组播信息发送间隔,两个节点设置必须一样,默认1s(类似于心跳检测)advert_int 1authentication {auth_type PASSauth_pass 1111}# 将track_script块加入instance配置块track_script {# 执行Nginx监控的脚本check_nginx_pid_restart}virtual_ipaddress {# 虚拟IP(VIP),也可扩展,可配置多个。192.168.12.111}
}

⑤克隆一台之前的虚拟机作为从(备)机,编辑从机的keepalived.conf文件,如下:

global_defs {# 自带的邮件提醒服务,建议用独立的监控或第三方SMTP,也可选择配置邮件发送。notification_email {root@localhost}notification_email_from root@localhostsmtp_server localhostsmtp_connect_timeout 30# 高可用集群主机身份标识(集群中主机身份标识名称不能重复,建议配置成本机IP)router_id 192.168.12.130 
}# 定时运行的脚本文件配置
vrrp_script check_nginx_pid_restart {# 之前编写的nginx重启脚本的所在位置script "/soft/scripts/keepalived/check_nginx_pid_restart.sh" # 每间隔3秒执行一次interval 3# 如果脚本中的条件成立,重启一次则权重-20weight -20
}# 定义虚拟路由,VI_1为虚拟路由的标示符(可自定义名称)
vrrp_instance VI_1 {# 当前节点的身份标识:用来决定主从(MASTER为主机,BACKUP为从机)state BACKUP# 绑定虚拟IP的网络接口,根据自己的机器的网卡配置interface ens33 # 虚拟路由的ID号,主从两个节点设置必须一样virtual_router_id 121# 填写本机IPmcast_src_ip 192.168.12.130# 节点权重优先级,主节点要比从节点优先级高priority 90# 优先级高的设置nopreempt,解决异常恢复后再次抢占造成的脑裂问题nopreempt# 组播信息发送间隔,两个节点设置必须一样,默认1s(类似于心跳检测)advert_int 1authentication {auth_type PASSauth_pass 1111}# 将track_script块加入instance配置块track_script {# 执行Nginx监控的脚本check_nginx_pid_restart}virtual_ipaddress {# 虚拟IP(VIP),也可扩展,可配置多个。192.168.12.111}
}

⑥新建scripts目录并编写Nginx的重启脚本,check_nginx_pid_restart.sh

[root@localhost]# mkdir /soft/scripts /soft/scripts/keepalived
[root@localhost]# touch /soft/scripts/keepalived/check_nginx_pid_restart.sh
[root@localhost]# vi /soft/scripts/keepalived/check_nginx_pid_restart.sh#!/bin/sh
# 通过ps指令查询后台的nginx进程数,并将其保存在变量nginx_number中
nginx_number=`ps -C nginx --no-header | wc -l`
# 判断后台是否还有Nginx进程在运行
if [ $nginx_number -eq 0 ];then# 如果后台查询不到`Nginx`进程存在,则执行重启指令/soft/nginx/sbin/nginx -c /soft/nginx/conf/nginx.conf# 重启后等待1s后,再次查询后台进程数sleep 1# 如果重启后依旧无法查询到nginx进程if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then# 将keepalived主机下线,将虚拟IP漂移给从机,从机上线接管Nginx服务systemctl stop keepalived.servicefi
fi

⑦编写的脚本文件需要更改编码格式,并赋予执行权限,否则可能执行失败:

[root@localhost]# vi /soft/scripts/keepalived/check_nginx_pid_restart.sh:set fileformat=unix # 在vi命令里面执行,修改编码格式
:set ff # 查看修改后的编码格式[root@localhost]# chmod +x /soft/scripts/keepalived/check_nginx_pid_restart.sh

⑧由于安装keepalived时,是自定义的安装位置,因此需要拷贝一些文件到系统目录中:

[root@localhost]# mkdir /etc/keepalived/
[root@localhost]# cp /soft/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
[root@localhost]# cp /soft/keepalived/keepalived-2.2.4/keepalived/etc/init.d/keepalived /etc/init.d/
[root@localhost]# cp /soft/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

⑨将keepalived加入系统服务并设置开启自启动,然后测试启动是否正常:

[root@localhost]# chkconfig keepalived on
[root@localhost]# systemctl daemon-reload
[root@localhost]# systemctl enable keepalived.service
[root@localhost]# systemctl start keepalived.service其他命令:
systemctl disable keepalived.service # 禁止开机自动启动
systemctl restart keepalived.service # 重启keepalived
systemctl stop keepalived.service # 停止keepalived
tail -f /var/log/messages # 查看keepalived运行时日志

⑩最后测试一下VIP是否生效,通过查看本机是否成功挂载虚拟IP

[root@localhost]# ip addr

从上图中可以明显看见虚拟IP已经成功挂载,但另外一台机器192.168.12.130并不会挂载这个虚拟IP,只有当主机下线后,作为从机的192.168.12.130才会上线,接替VIP。最后测试一下外网是否可以正常与VIP通信,即在Windows中直接ping VIP

外部通过VIP通信时,也可以正常Ping通,代表虚拟IP配置成功。

 经过上述步骤后,keepalivedVIP机制已经搭建成功,在上个阶段中主要做了几件事:

  • 一、为部署Nginx的机器挂载了VIP
  • 二、通过keepalived搭建了主从双机热备。
  • 三、通过keepalived实现了Nginx宕机重启。

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

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

相关文章

【Flutter】Getx设计模式及Provider、Repository、Controller、View等

本文基于Getx 4,x 本本 1、引入 再次接触到Flutter项目,社区俨然很完善和活跃。pubs.dev 寻找状态管理的时候看到很熟悉的Getx时间,俨然发现Getx的版本已到是4.x版本,看到Getx的功能已经非常强大了,庞大的API俨然成为一种开发框架…

c# wpf LiveCharts 简单试验

1.概要 1.1 说明 1.2 环境准备 NuGet 添加插件安装 2.代码 <Window x:Class"WpfApp3.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"…

基于单片机电子密码锁系统设计

**单片机设计介绍&#xff0c;基于单片机电子密码锁系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电子密码锁系统设计概要主要包括以下几个方面&#xff1a; 一、系统概述 基于单片机电子密码锁系统是一个…

谈谈Python中的内存管理和垃圾回收机制

谈谈Python中的内存管理和垃圾回收机制 Python中的内存管理和垃圾回收机制是其运行时的关键组成部分&#xff0c;它们共同确保了程序能够高效、安全地执行&#xff0c;并防止内存泄漏等问题。下面&#xff0c;我们将深入探讨Python的内存管理和垃圾回收机制。 一、内存管理 …

c++11的重要特性2

可变参数模板在3中。 目录 ​编辑 1、统一的列表初始化&#xff1a; std::initializer_list&#xff1a; std::initializer_list是什么类型&#xff1a; std::initializer_list使用场景&#xff1a; 让模拟实现的vector也支持{}初始化和赋值 2、声明 auto decltype nul…

深入浅出 -- 系统架构之分布式多形态的存储型集群

一、多形态的存储型集群 在上阶段&#xff0c;我们简单聊了下集群的基本知识&#xff0c;以及快速过了一下逻辑处理型集群的内容&#xff0c;下面重点来看看存储型集群&#xff0c;毕竟这块才是重头戏&#xff0c;集群的形态在其中有着多种多样的变化。 逻辑处理型的应用&…

Leetcode 553. 最优除法

给定一正整数数组 nums&#xff0c;nums 中的相邻整数将进行浮点除法。例如&#xff0c; [2,3,4] -> 2 / 3 / 4 。 例如&#xff0c;nums [2,3,4]&#xff0c;我们将求表达式的值 “2/3/4”。 但是&#xff0c;你可以在任意位置添加任意数目的括号&#xff0c;来改变算数的…

SQL注入---POST注入

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一. POST提交概述 在Webshell文章中介绍过post提交和get提交的区别&#xff0c;这里不再赘述 post提交和get提交的区别&#xff1a; get方式提交URL中的参数信息&#xff0c;post方式则是将信…

opencv-python库 cv2开运算闭运算形态学梯度顶部帽底部帽

文章目录 开运算闭运算形态学梯度顶部帽底部帽cv2.morphologyEx() 开运算 cv2中的开运算是图像依次经过腐蚀、膨胀处理后的过程。 开运算实际是先腐蚀运算&#xff0c;再膨胀运算&#xff0c;可以把细微连在一起的两块目标分开。一般来说&#xff0c;开运算可以使图像的轮廓变…

post请求爬虫入门程序

<!--爬虫仅支持1.8版本的jdk--> <!-- 爬虫需要的依赖--> <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.2</version> </dependency><!-- 爬虫需…

【深入解析算法】内存使用,应用 上

8.3.6 内存使用 符号表的内存使用 方法N个元素所需的内存(引用类型)基于拉链法的散列表48N32M基于线性探测的散列表在32N和128N之间各种二叉查找树56N 自计算机发展的伊始&#xff0c;研究人员就研究了(并且现在仍在继续研究)散列表并找到了很多方法来改进我们所讨论过的几种…

知识融合与消歧:完善知识图谱的关键步骤

知识融合与消歧&#xff1a;完善知识图谱的关键步骤 一、引言&#xff1a;知识融合与消歧的重要性 在今天的数据驱动时代&#xff0c;知识图谱已成为组织和理解海量信息的关键技术。它们使得复杂的数据关系可视化&#xff0c;为人工智能提供了丰富的知识基础。然而&#xff0c…

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(九)- 向量定点算术指令

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容&#xff1a; 这是一份关于向量扩展的详细技术文档&#xff0c;内容覆盖了向量指令集的多个关键方面&#xff0c;如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

静态路由协议实验综合实验

需求&#xff1a; 1、除R5的换回地址已固定外&#xff0c;整个其他所有的网段基于192.168.1.0/24进行合理的IP地址划分。 2、R1-R4每台路由器存在两个环回接口&#xff0c;用于模拟连接PC的网段&#xff1b;地址也在192.168.1.0/24这个网络范围内。 3、R1-R4上不能直接编写到…

打造你的专属云开发环境:支持任意 IDE,任意云服务 | 开源日报 No.215

loft-sh/devpod Stars: 6.9k License: MPL-2.0 devpod 是一个开源的、仅限客户端的、不受限制的工具&#xff0c;可以与任何集成开发环境&#xff08;IDE&#xff09;一起使用&#xff0c;并允许您在任何云端、Kubernetes 或本地 Docker 上进行开发。 使用 devcontainer.json…

python文件打包找不到文件路径

引用&#xff1a;【将Python代码打包成exe可执行文件】 https://www.bilibili.com/video/BV1P24y1o7FY/?p4&share_sourcecopy_web&vd_sourced5811f31a0635dfc69a182c7bf1adb8b 在代码中&#xff0c;我们想读取文件a&#xff0c;一般使用如下方法。 import osdir os…

【Ubuntu20.04.6】VMWare Station 17安装Ubuntu20.04.6虚拟机系统

步骤1&#xff1a;下载Ubuntu20.04.6镜像ISO文件 Ubuntu20.04.6镜像ISO文件下载&#xff1a; https://mirrors.ustc.edu.cn/ubuntu-releases/20.04/ 步骤2&#xff1a;下载安装VMWare Station 17 下载和安装教程&#xff1a; https://blog.csdn.net/u012621175/article/deta…

【Docker】搭建开源免费的书签管理系统 - OneNav

【Docker】搭建开源免费的书签管理系统 - OneNav 前言 本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。 简介 OneNav是一个基于PHP的轻量级网址导航系统&#xff0c;旨在帮助用户整理和访问他们的常用网站。 OneNav的主要特点如下&#xff1a; 美观易用&#x…

分享一个基于Multi-SLAM+3DGS的新一代三维内容生产技术

基于智能空间计算&#xff0c;新一代超逼真三维内容生成技术。 可自动化生成超逼真的大场景三维模型&#xff0c;并在各类终端和空间计算设备中&#xff0c;实现前所未有的沉浸式体验。 更可接入专业三维软件和应用平台&#xff0c;进行深度的模型开发与场景落地。 支持超大复杂…

“进击的巨人”:服务器硬件基础知识解析

引言&#xff1a; 服务器是网络环境中负责处理数据、运行应用程序和服务多用户的高性能计算机系统。了解服务器的硬件构成有助于更好地管理和优化IT资源。 服务器和普通PC的差异&#xff1a; 服务器具有比个人电脑更高的处理能力、稳定性和可靠性&#xff0c;它们通常运行在没…