CentOS 7 下 Keepalived + Nginx 实现双机高可用
CentOS 7 下 Keepalived + Nginx 实现双机高可用
文章目录
- CentOS 7 下 Keepalived + Nginx 实现双机高可用
- 服务器准备
- 服务信息
- 服务架构
- 服务安装
- nginx
- Keepalived
- 服务配置
- nginx
- Keepalived
- 启动服务
- nginx
- keepalived
- 服务验证
- 查看 VIP 状态
- CURL 命令访问
- 浏览器访问
- 高可用验证
- 停止 web01 下 Nginx
- 恢复 web01 下 Nginx
- 参考
服务器准备
服务信息
| 主机名 | IP | 角色 | 其他 |
|---|---|---|---|
| my-web01 | 192.168.157.31 | nginx keepalived | master |
| my-web02 | 192.168.157.32 | nginx keepalived | backup |
| VIP | 192.168.157.30 |
服务架构

服务安装
nginx
# 所有主机
[root@my-web01 ~]$ yum -y install nginx
Keepalived
# 所有主机
[root@my-web01 ~]$ yum -y install keepalived
服务配置
nginx
- web01
[root@my-web01 ~]$ cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<h1>my web01 ~~~</h1>
- web02
[root@my-web02 ~]$ cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<h1>my web02 ~~~</h1>
Keepalived
- web01
[root@my-web01 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedvrrp_script check_nginx {script "killall -0 nginx"interval 2
}vrrp_instance VI_1 {interface ens33state MASTERpriority 200virtual_router_id 33virtual_ipaddress {192.168.157.30}authentication {auth_type PASSauth_pass password}track_script {check_nginx}
}
- web02
[root@my-web02 ~]$ cat /etc/keepalived/keepalived.conf
! Configuration File for keepalivedvrrp_script check_nginx {script "killall -0 nginx"interval 2
}vrrp_instance VI_1 {interface ens33state BACKUPpriority 100virtual_router_id 33virtual_ipaddress {192.168.157.30}authentication {auth_type PASSauth_pass password}track_script {check_nginx}
}
启动服务
nginx
# 所有节点
systemctl start nginx
keepalived
# 所有节点
systemctl start nginx
服务验证
查看 VIP 状态
# web01 -- 获取 VIP
[root@my-web01 ~]$ ip addr | grep '192.168.157'inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33inet 192.168.157.30/32 scope global ens33# web01 -- 未获取 VIP
[root@my-web02 ~]$ ip addr | grep '192.168.157'inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33
CURL 命令访问
# VIP -- 访问到 web01
[root@my-web01 ~]$ curl 192.168.157.30
<!DOCTYPE html>
<h1>my web01 ~~~</h1># web01
[root@my-web01 ~]$ curl 192.168.157.31
<!DOCTYPE html>
<h1>my web01 ~~~</h1># web02
[root@my-web01 ~]$ curl 192.168.157.32
<!DOCTYPE html>
<h1>my web02 ~~~</h1>
浏览器访问
- vip && web01

- vip && web02

高可用验证
停止 web01 下 Nginx
- 停止服务
# web01
[root@my-web01 ~]$ systemctl stop nginx
- 验证 VIP
# web01 -- VIP 漂移
[root@my-web01 ~]$ ip addr | grep '192.168.157'inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33# web02 -- 获取 VIP
[root@my-web02 ~]$ ip addr | grep '192.168.157'inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33inet 192.168.157.30/32 scope global ens33
- 浏览器访问


恢复 web01 下 Nginx
- 恢复服务
[root@my-web01 ~]$ systemctl start nginx
- 验证 VIP
# web01 -- 获取 vip
[root@my-web01 ~]$ ip addr | grep '192.168.157'inet 192.168.157.31/24 brd 192.168.157.255 scope global ens33inet 192.168.157.30/32 scope global ens33# web02 -- vip 漂移
[root@my-web02 ~]$ ip addr | grep '192.168.157'inet 192.168.157.32/24 brd 192.168.157.255 scope global ens33

参考
- Keepalived + nginx 实现高可用
相关文章:
CentOS 7 下 Keepalived + Nginx 实现双机高可用
CentOS 7 下 Keepalived Nginx 实现双机高可用 文章目录 CentOS 7 下 Keepalived Nginx 实现双机高可用服务器准备服务信息服务架构 服务安装nginxKeepalived 服务配置nginxKeepalived 启动服务nginxkeepalived 服务验证查看 VIP 状态CURL 命令访问浏览器访问 高可用验证停止…...
【Linux】IO多路转接——select接口
目录 I/O多路转接之select select初识 select函数 socket就绪条件 select基本工作流程 select服务器 select的优点 select的缺点 select的适用场景 I/O多路转接之select select初识 select是系统提供的一个多路转接接口。 select系统调用可以让我们的程序同时监视多…...
error_Network Error
此页面为订单列表,是混合开发(页面嵌入在客户端中) 此页面为订单列表,此需求在开发时后端先将代码发布在测试环境,我在本地调试时调用的后端接口进行联调没有任何问题。 此后我将代码发布在测试环境,在app中打开页面,…...
Python爱心光波
文章目录 前言Turtle入门简单案例入门函数 爱心光波程序设计程序分析 尾声 前言 七夕要来啦,博主在闲暇之余创作了一个爱心光波,感兴趣的小伙伴们快来看看吧! Turtle入门 Turtle 是一个简单而直观的绘图工具,它可以帮助你通过简…...
【分布式】Viewstamped Replication Revisited
篇前感悟: 阅读分布式系统文章的意义其实并不在于你个人真正地去开发这样一个基于这种协议的系统,因为真正去开发一个高可用的分布式系统实在是太难了(对我来说…)更多的还是汲取其中的思想,包括设计思路,优…...
微服务07-分布式缓存
前提: 单机的Redis存在四大问题: 解决办法:基于Redis集群解决单机Redis存在的问题 1、Redis持久化 Redis 具有持久化功能,其会按照设置以 快照 或 操作日志 的形式将数据持久化到磁盘。 Redis有两种持久化方案: RDB持久化AOF持久化注意: RDB 是默认持久化方式,但 Red…...
QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(2)
此前(1)解决的是在QGraphicsItem::boundingRect不变的情况下造成不绘制。这次解决的是QGraphicsItem::boundingRect随时都发生变化导致的不绘制。 这问题是我在不继承QGraphicsLineItem(调用setLine),而是继承QGraphic…...
深入理解设计模式-创建型之建造者模式(与工厂区别)
什么是建造者设计模式?和工厂设计模式有什么区别 建造者设计模式(Builder Design Pattern)和工厂设计模式(Factory Design Pattern)都是面向对象设计中的创建型模式,但它们解决的问题和应用场景有所不同。…...
Centos7多台服务器免密登录
准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…...
C语言实现哈希搜索算法
一、哈希搜索算法原理 哈希搜索,也叫散列查找,是一种通过哈希表(散列表)实现快速查找目标元素的算法。哈希搜索算法通常适用于需要快速查找一组数据中是否存在某个元素的场景,其时间复杂度最高为 O(1),而平…...
MySQL卸载并重装指定版本
MySQL卸载并重装制定版本 学习新的项目,发现之前的Navicat已经失去了与现有MySQL的链接,而且版本也不适合,为了少走弯路,准备直接重装相应版本的MySQL 卸载现有MySQL 停止windows的MySQL服务,【windowsR】打开运行框…...
文件IO编程 1 2
头文件包含路径 linux 操作系统分为两大空间:用户空间和内核空间 这样划分,是为了保护内核的核心组件,不被轻易访问和修改 系统调用:安全的访问内核空间 其核心是:函数API(API:用户编程接口&…...
Java后端框架模块整合
提示:使用Java后端开发框架能够提高开发效率、代码质量,提升可扩展性,降低开发成本和易于维护。 文章目录 前言MyBatis 框架知识Spring 框架知识SpringMVC 框架知识SpringBoot 框架知识 前言 提示:这里可以添加本文要记录的大概内…...
17 synchronized关键字使用 synchronized方法、synchronized块
synchronized方法、synchronized块 线程的同步不安全的线程示例1:示例2示例3 synchronized方法、synchronized块 线程的同步 并发:同一个对象被多个线程同时操作。 解决方案:让多个线程排队操作对象。 使用队列和锁解决多线程的并发问题。 同…...
django-基本环境配置
文章目录 django 环境安装1. 安装环境1.1 安装 Python (配置虚拟环境)1.1.1 步骤 1.2 Conda配置环境参考 django 环境安装 1. 安装环境 1.1 安装 Python (配置虚拟环境) 由于国外源速度慢,可以pip添加清华源 pip config set global.index-url https://pypi.tuna.…...
Springboot 实践(4)swagger-ui 测试controller
前文项目操作,完成了项目的创建、数据源的配置以及数据库DAO程序的生成与配置。此文讲解利用swagger-ui界面,测试生成的数据库DAO程序。目前,项目swagger-ui界面如下: 以”用户管理”为例,简单讲述swagger-ui测试数据库…...
PHP实践:分布式场景下的Session共享解决方案实现
🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…...
07 - 查看、创建、切换和删除分支
查看所有文章链接:(更新中)GIT常用场景- 目录 文章目录 1. 查看分支2. 创建和切换分支3. 删除分支 1. 查看分支 git branch -va2. 创建和切换分支 第一种: 创建分支: git branch new_branch切换分支: …...
【SpringBoot】89、SpringBoot中使用@Transactional进行事务管理
事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个操作的一致性和完整性。 1、SpringBoot 引用说明 新建的 Spring Boot 项目中,一般都会引用 spring-boot-starter 或者 spring-boot-starter-web,而这两个起步依赖中都已经包含了对…...
两天入门Linux、搭建Spring环境 第一天
一、Linux简介 1.什么是Linux 一个操作系统,未来公司里面会用到、接触的新操作系统。 2.为什么学Linux (1)个人职务需要,肯定会接触到Linux (2)职业发展,以后的发展肯定需要掌握Linux的许多使用方法 3.学哪些内容 (1)Linux基本介绍 (2)…...
保姆级教程:用VASP和VESTA搞定CO吸附在Pt(111)表面的差分电荷密度图
从零开始:CO-Pt(111)体系差分电荷密度计算全流程解析 在催化反应机理研究中,差分电荷密度分析犹如一把精密的手术刀,能够清晰揭示分子与催化剂表面之间的电子"对话"。对于刚踏入计算催化领域的研究者而言,掌握这项技能不…...
CANN/asc-devkit asc_any函数
asc_any 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...
基于PSoC 6与BMI160构建嵌入式IMU测试系统:从驱动到上位机全流程
1. 项目概述:从一颗传感器到一个完整的测试系统最近在做一个嵌入式项目,需要用到一款高性能的惯性测量单元(IMU)——博世的BMI160。这颗芯片在消费电子和物联网领域很常见,三轴加速度计加三轴陀螺仪,精度和…...
JavaSwing社团管理系统 - MySQL版
文档末尾附 文件地址 📋 项目简介 这是一个基于Java Swing开发的社团管理系统桌面应用程序。系统采用三角色权限设计,包含管理员端、社团负责人端和普通用户端(学生),为高校或机构提供从社团创建审批、成员管理、活动…...
Marshall 推出新款头戴式耳机 Milton ANC:音质续航兼得,售价 229 美元!
ZDNET 要点总结Milton ANC 是 Marshall 最新推出的头戴式耳机,在音质、耐用性和电池续航方面毫不妥协,售价为 229 美元。Marshall 宣布推出全新头戴式耳机——Milton ANC,它承诺在不牺牲电池续航的前提下,带来标志性的音效体验&am…...
避坑指南:在ArcGIS中提取DEM高程点,为什么导入Global Mapper后看不到高度?
避坑指南:ArcGIS与Global Mapper高程数据互操作的核心陷阱与解决方案 当你第一次将精心处理的DEM高程点从ArcGIS导入Global Mapper,期待看到起伏有致的三维地形时,却发现所有点都"躺平"在二维平面上——这种挫败感我深有体会。这不…...
甲级钢制隔热平开防火窗:技术参数、结构工艺与工程应用解析
一、产品概述甲级钢制隔热平开防火窗严格依照国家消防标准制造,采用加厚冷轧镀锌钢板打造框架,搭配防火填充材料、隔热防火玻璃与专用密封配件,防火隔热、密闭性强,耐用抗腐蚀。相较于低等级防火窗,本品耐火隔热性能更…...
终极指南:如何用天津大学LaTeX论文模板彻底告别格式烦恼
终极指南:如何用天津大学LaTeX论文模板彻底告别格式烦恼 【免费下载链接】TJUThesisLatexTemplate LaTeX templates for TJU graduate thesis. Originally forked from code.google.com/p/tjuthesis 项目地址: https://gitcode.com/gh_mirrors/tj/TJUThesisLatexT…...
YOLOv11城市道路摩托车与自行车目标检测数据集-1569张-motorcycle-1_2
YOLOv11城市道路摩托车与自行车目标检测数据集 📊 数据集基本信息 目标类别: [‘bike’, ‘motorcycle’]中文类别:[‘自行车’, ‘摩托车’]训练集:1374 张验证集:130 张测试集:65 张总计:1569…...
别再踩坑了!手把手教你解决RPM安装时的‘.rpm.lock’事务锁定报错
RPM事务锁机制深度解析:从原理到避坑实战 在Linux系统管理中,RPM包管理器的.rpm.lock报错堪称经典"拦路虎"——据统计,超过63%的运维人员至少遭遇过一次这类锁定问题。这个看似简单的错误背后,隐藏着RPM设计精妙的事务隔…...
