当前位置: 首页 > news >正文

Nginx高可用集群

目录

  • 一.简介
  • 二.案例
    • 1.实现思路
    • 2.配置文件修改
    • 3.实现效果
    • 故障转移机制

一.简介

以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用的容错效果。例如“故障切换”、“双机热备”、“多机热备”等都属于高可用集群技术。HA的工作方式包括双工主从两种模式,双工即所有节点同时上线,而主从只有主节点在线提供服务,当主节点出现问题后备接替出故障的主节点为用户提供服务

集群实现的方式:
在企业中一般通过软件、硬件两种方式来实现集群

企业中常用的开源集群软件有:Nginx、LVS、Haproxy、Keepalived、Heartbeat等

企业中常用的商业集群硬件有:F5、Netscaler、Radware、A10等

二.案例

1.实现思路

在这里插入图片描述

2.配置文件修改

主机上配置

#修改Nginx1的配置文件
vi /usr/local/nginx/conf/nginx.conf
upstream myserver {server 10.10.100.222:8080;server 10.10.100.222:8081;
}server {listen       80;server_name  10.10.100.222;#charset koi8-r;#access_log  logs/host.access.log  main;location / {proxy_pass http://myserver;}
#启动主节点上的tomcat/usr/local/tomcat1/bin/startup.sh/usr/local/tomcat2/bin/startup.sh
#Nginx1上安装keepalivedyum install -y keepalived#配置keepalived的配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc#邮件服务器通知地址(暂不配置,默认即可)smtp_server 192.168.200.1#邮件服务器超时时间(暂不配置,默认即可)smtp_connect_timeout 30#当前虚拟机的IP地址router_id 10.10.100.222
}vrrp_script Monitor_Nginx {script "/etc/keepalived/nginx_check.sh"    #检测脚本执行的路径interval 2                                 #检测脚本执行的间隔weight 2                                   #检测脚本执行的权重
}vrrp_instance VI_1 {state MASTER         #标识这个机器是MASTER还是BACKUPinterface ens192       #当前机器的网卡名称  virtual_router_id 51 #虚拟路由的编号,主备必须一致priority 100         #主、备机取不同的优先级,主机值较大,备份机值较小advert_int 1         #(VRRP Multicast广播周期秒数)authentication {auth_type PASS   #(VRRP认证方式)auth_pass 1111   #(密码)}track_script {Monitor_Nginx #(调用Nginx进程检测脚本)}virtual_ipaddress {10.10.100.198  #虚拟IP地址}
}
#编写脚本
#!/bin/bashnginxpid=`ps -C nginx --no-header |wc -l`if [ $nginxpid -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 1nginxpid=`ps -C nginx --no-header |wc -l`if [ $nginxpid -eq 0 ];thensystemctl stop keepalivedfifi

脚本功能说明:统计nginx进程数量,如果进程数量的值等于0,说明nginx挂了,那么执行/usr/local/nginx/sbin/nginx去启动分发器,等待1秒后再次检查进程数量,如果进程数量的值还是等于0,则执行systemctl stop keepalived停止keepalived服务。这样就停止发组播,释放VIP,而备用服务器就开始接手工作了。

备机上配置

#安装nginx
#修改配置文件
vi /usr/local/nginx/conf/nginx.conf
upstream myserver {server 10.10.100.222:8080;server 10.10.100.222:8081;
}server {listen       80;server_name  10.10.100.222;#charset koi8-r;#access_log  logs/host.access.log  main;location / {proxy_pass http://myserver;}#启动nginx服务
/usr/local/nginx/sbin/nginx

一定要注意router_id、state、interface的值

#安装keepalived
yum install -y keepalived#修改keepalived的配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc#邮件服务器通知地址(暂不配置,默认即可)smtp_server 192.168.200.1#邮件服务器超时时间(暂不配置,默认即可)smtp_connect_timeout 30#当前虚拟机的IP地址router_id 10.10.100.221
}vrrp_script Monitor_Nginx {script "/etc/keepalived/nginx_check.sh"    #检测脚本执行的路径interval 2                                 #检测脚本执行的间隔weight 2                                   #检测脚本执行的权重
}vrrp_instance VI_1 {state BACKUP         #标识这个机器是MASTER还是BACKUPinterface ens192       #当前机器的网卡名称  virtual_router_id 51 #虚拟路由的编号,主备必须一致priority 90         #主、备机取不同的优先级,主机值较大,备份机值较小advert_int 1         #(VRRP Multicast广播周期秒数)authentication {auth_type PASS   #(VRRP认证方式)auth_pass 1111   #(密码)}track_script {Monitor_Nginx #(调用Nginx进程检测脚本)}virtual_ipaddress {10.10.100.198  #虚拟IP地址}
}#编辑脚本
#!/bin/bashnginxpid=`ps -C nginx --no-header |wc -l`if [ $nginxpid -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 1nginxpid=`ps -C nginx --no-header |wc -l`if [ $nginxpid -eq 0 ];thensystemctl stop keepalivedfifi#启动keepalived服务

3.实现效果

222,221,198机器都能访问到内容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看网络,100.198虚拟ip在主服务器上
在这里插入图片描述
在这里插入图片描述

当主机出现故障,主机上的的keepalived的服务不在了,备机开始工作
查看网络
在这里插入图片描述
在这里插入图片描述

故障转移机制

keepalived高可用服务之间故障切换转移,是通过VRRP的来实现的,在keepalived服务正常工作时,住Master节点会不断的向备节点发送(组播的方式)心跳包,用于告诉备Backup节点自己还属于存活状态,当Master节点发送故障时,就无法发送心跳包消息,备节点也就因此无法继续检测到来之Master的心跳了,于是调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点心跳恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

相关文章:

Nginx高可用集群

目录 一.简介二.案例1.实现思路2.配置文件修改3.实现效果故障转移机制 一.简介 以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用的容错效果。例如“故障切换”、“双机热备”、“多机热备”等都属于高可用集…...

Rust 基础入门 ——所有权 引言 :垃圾自动回收机制的缺陷。

在以往,内存安全几乎都是通过 GC 的方式实现,但是 GC 会引来性能、内存占用以及 Stop the world 等问题,在高性能场景和系统编程上是不可接受的, 我们先介绍一下这些概念都是什么: 内存安全是指程序在运行过程中不会访…...

Ubuntu20.04安装软件报错:The following packages have unmet dependencies

Ubuntu20.04更换阿里云源后安装软件都会报错:The following packages have unmet dependencies 查看资料,大概是ubuntu本身的源比较版本较老,而阿里云的源比较新,因此版本不匹配造成依赖的库不匹配,所以只要将阿里云的…...

Java 与设计模式(12):享元模式

一、定义 享元模式是一种结构型设计模式,旨在有效地共享对象以减少内存使用和提高性能。该模式的核心思想是通过共享尽可能多的相似对象来减少内存占用。它将对象分为可共享的内部状态和不可共享的外部状态。内部状态是对象的固有属性,可以在多个对象之…...

React配置代理(proxy)

使用axios进行请求,而配置代理过程。 第一种 在package.json中,添加proxy配置项,之后所有的请求都会指向该地址 但这种方法只能配置一次,也只有一个 示例: "proxy":"https://localhost:5000" 添加后&am…...

队列(Queue):先进先出的数据结构队列

栈与队列https://blog.csdn.net/qq_45467165/article/details/127958960?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127958960%22%2C%22source%22%3A%22qq_45467165%22%7D 队列(Queue)是一种常见的线…...

CentOS ens160 显示disconnected

使用nmcli device查看网卡状态,显示如图: 检查宿主机系统VMware DHCP Sevice和VMware NAT Sevice服务是否正常运行。 右键点击我的电脑管理按钮,打开计算机管理点击服务...

使用 ChatGPT 创建 PowerPoint 演示文稿

让 ChatGPT 成为您的助手来帮助您编写电子邮件很简单,因为众所周知,它非常能够生成文本。很明显,ChatGPT 无法帮助您做饭。但您可能想知道它是否可以生成文本以外的其他内容。在上一篇文章中,您了解到 ChatGPT 只能通过中间语言为您生成图形。在这篇文章中,您将了解使用中…...

matlab将数组值划分为两类

例如:大于0的处理为1,小于0的处理为-1. 当然,可以选择循环结构和选择结构,但是效率会很低。 这里直接使用逻辑语句完成。 % 不使用循环语句,将数组内值划分为两类 clc; clearvars; a[-0.1422 , -0.0433 , 0.1131 …...

【点击新增一个下拉框 与前一个内容一样 但不能选同一个值】

点击新增一个下拉框 与前一个内容一样 但不能选同一个值 主要是看下拉选择el-option的disabled,注意不要混淆 <el-form label-width"120px" :model"form" ref"form" style"color: #fff"><template v-for"(trapolicy, i…...

【Gitee提交pr】

Gitee提交pr 什么是pr怎样提交一个pr嘞&#xff1f; 什么是pr pr:指的是将自己的修改从自己的账号仓库dev下提交到官方账号仓库master下&#xff1b; 通俗来讲就是Gitee线上有属于自己的分支&#xff0c;然后本地在自己地分支修改完代码之后&#xff0c;提交到自己的线上分支&a…...

一款打工人必备的电脑端自律软件!!冲鸭打工人!!

你&#xff01;有没有渴望进步&#xff01;&#xff01; 你&#xff01;有没有渴望变强&#xff01;&#xff01;&#xff01; 成为大佬&#xff01;&#xff01;&#xff01;超越巨佬&#xff01;&#xff01;&#xff01; 这就是一款为这样的你量身定做的程序&#xff1a;输入…...

【Vue框架】 router和route是什么关系

前言 之前没太注意&#xff0c;写着写着突然发现它们貌似不太一样&#xff0c;记录以下&#xff0c;回顾的看总结就好。 1、总结✨ route&#xff1a;当前激活路由的对象&#xff0c;用于访问和操作当前路由的信息 router&#xff1a;管理多个route的对象&#xff0c;整个应…...

整理mongodb文档:聚合管道

个人博客 整理mongodb文档:聚合管道 个人博客&#xff0c;求关注&#xff0c;电脑版看体验更加&#xff0c;如果不够清晰&#xff0c;请指出来&#xff0c;谢谢 文章概叙 文章主要通过几个常用的聚合表达式来介绍聚合管道的使用&#xff0c;以及从索引的角度来介绍聚合管道…...

Delphi 11.3 FMX 多设备平台中使用 TGrid 实现类似 TDBGrid 的效果

Delphi Firemonkey 中 TDBGrid 这个控件已经没有了。如何实现类似这个效果呢。其实可以用TGrid 来实现。以下用 11.3 来讲解。 查询里面用到的 connection 和 query 等控件那些一般的数据库用法&#xff0c;就不做过多描述了。请参考其他资料。 方法一.通过界面配置来实现 在…...

Qt-事件循环与QtConcurrent、QThread结合使用时注意的点

QEventLoop和QtConcurrent可以结合使用达到主线程ui不阻塞同步执行的效果&#xff0c;但是要小心避坑&#xff0c;查看如下代码&#xff1a; QEventLoop loop; QtConcurrent::run([&]() {doSomething();loop.quit(); }); loop.exec();上述写法存在两个问题&#xff1a; Q…...

基于MongoDB的空间数据存储与查询

一、概念说明 1.1 空间地理数据 MongoDB 中使用 GeoJSON对象 或 坐标对 描述空间地理数据。MongoDB使用 WGS84 参考系进行地理空间数据查询。 1、MongoDB支持空间数据的存储&#xff0c;数据类型需要限制为GeoJSON; 2、MongoDB可以为GeoJSON类型数据建立索引&#xff0c;提升空…...

jquery中pdf的上传、下载及excel导出

jquery中pdf的上传、下载及excel导出 1.PDF上传 pdfUpload2. pdf下载和excel导出用的一种方法&#xff0c;并且需要引入utils.js2.1PDF下载 pdfDownload2.2导出Excel excelExport 1.PDF上传 pdfUpload //PDF上传 pdfUpload window.pdfUploadfunction (obj){layer.open({type:…...

【MyBatis】:PageHelper分页插件与特殊字符处理

目录 一、PageHelper介绍 二、PageHelper使用 1. 导入pom依赖 2. Mybatis.cfg.xml 配置拦截器 3. 配置 Mapper.xml 4. 编写测试 三、特殊字符处理 1. 使用转义字符 2. 使用CDATA 区段 一、PageHelper介绍 PageHelper 是 Mybatis 的一个插件&#xff0c;这里就不扯了&a…...

C语言练习1(巩固提升)

C语言练习1 选择题 前言 “人生在勤&#xff0c;勤则不匮。”幸福不会从天降&#xff0c;美好生活靠劳动创造。全面建成小康社会的奋斗目标&#xff0c;为广大劳动群众指明了光明的未来&#xff1b;全面建成小康社会的历史任务&#xff0c;为广大劳动群众赋予了光荣的使命&…...

eCharts热力图Y轴左上角少一块

问题&#xff1a; 如图 在图例的左上角 Y轴会少一块 官方demo https://echarts.apache.org/examples/zh/editor.html?cheatmap-cartesian 事实上 把官方demo的左上角坐标 [ 6, 0, 1 ] 修改为 [ 6, 0, 0 ] 后 依旧会出现该问题 查遍文档 并无解释 也没有任何配置项可解决…...

RabbitMQ介绍

RabbitMQ的概念 RabbitMQ 是一个消息中间件&#xff1a;它接受并转发消息。你可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递员最终会把你的快递送到收件人那里&#xff0c;按照这种逻辑 RabbitMQ 是 一个快递…...

玩转软件|钉钉个人版内测启动:AI探索未来的工作方式

目录 前言 正文 AI为核心&#xff0c;个人效率为王&#xff01; 指令中心&#xff0c;解锁AI技巧&#xff01; 灵感Store&#xff0c;探索更多可能&#xff01; 未来的AI&#xff0c;即将问世&#xff01; 个人内测体验 前言 重磅消息&#xff1a;钉钉个人版在8月16日正…...

【Linux】一张图了解系统文件

首先先认识磁盘结构 系统文件分布图 文件查找 文件删除 文件的增删改查都是围绕inode来完成的&#xff0c;所以当我们要进行文件删除的时候&#xff0c;只需要通过inode来获取到它对应的block bitmap和inode bitmap数据块容器和保存文件属性的位置置为 0即可 &#xff0c;如果想…...

自动化测试平台seldom-platform部署及使用

介绍 seldom-platform是一个基于seldom测试框架的测试平台 项目地址&#xff1a;https://github.com/SeldomQA 文档&#xff1a;seldom 语雀 首先&#xff0c;专门为seldom测试框架提供平台化支持。其次&#xff0c;只负责自动化测试项目的解析、执行用例&#xff0c;当然…...

2023年8月第3周大模型荟萃

2023年8月第3周大模型荟萃 2023.8.22版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 1、LLM-Adapters&#xff1a;可将多种适配器集成到大语言模型 来自新加坡科技设计大学和新加坡管理大学的研究人员发布了一篇题为《LLM-Adapters: An …...

win11 设置小任务栏

设置后效果 以下两种工具均可 1、StartAllBack 2、Start11...

在 React 中获取数据的6种方法

一、前言 数据获取是任何 react 应用程序的核心方面。对于 React 开发人员来说&#xff0c;了解不同的数据获取方法以及哪些用例最适合他们很重要。 但首先&#xff0c;让我们了解 JavaScript Promises。 简而言之&#xff0c;promise 是一个 JavaScript 对象&#xff0c;它将…...

Docker基础入门:常规软件安装与镜像加载原理

Docker基础入门&#xff1a;常规软件安装与镜像加载原理 一、Docker常规软件安装1.1、部署nginx1.2、部署tomcat1.3、部署elasticsearch1.4、如何部署kibana-->连接elasticsearch1.5、部署可视化工具 二、 镜像加载原理2.1、镜像是什么2.2、Docker镜像加速原理2.3、分层理解…...

redis初识

目录 前言&#xff1a; 核心全局命令 key过期实现方式 定时器实现方式 基于优先级队列/堆 redis特性 redis优点 redis单线程模型 redis单线程为什么效率这么高&#xff1f; 核心五种数据类型内部编码方式 前言&#xff1a; redis作为当前主流的内存数据库&#xff08…...

泌阳专业网站建设/西安百度公司官网

地址 http://www.jianshu.com/p/736dd7b63ece 目录 概念存储读取概念 文件存储是 Android 中最基本的一种数据存储方式&#xff0c;它不对存储的内容进行任何的格式化处理&#xff0c;所有数据都是原封不动的保存到文件当中的。它比较适合用于存储一些简单的文本数据或二进制数…...

做二维码推送网站/直接登录的网站

layout_weigh——权重 总的来说就是屏幕的剩余空间按比例分配 首先声明只有在Linearlayout中&#xff0c;该属性才有效。之所以android:layout_weight会引起争议&#xff0c;是因为在设置该属性的同时&#xff0c;设置android:layout_width为wrap_content和match_parent会造成…...

网站数据库5g/优化网站标题名词解释

目录一 当前文件路径二 python路径拼接os.path.join()函数的用法三 print格式化输出四 将 print 输出到文件五 log模块1 配置文件2 全局log3 使用4 运行程序5 结果六 删除文件七 判断文件/文件夹是否存在八 文本文件操作九 pandas读文件(不把第一行作列属性)十 图片显示1 openc…...

网站建设源代码交付/安徽网络seo

转载请标明出处&#xff1a;http://blog.csdn.net/xx326664162/article/details/50599911 文章出自&#xff1a;薛瑄的博客 你也可以查看我的其他同类文章&#xff0c;也会让你有一定的收货&#xff01; 一、系统分区 # adb shell # mount rootfs / rootfs ro 0 0 tmpfs /d…...

网站内链是什么 怎么做/小区推广最有效的方式

2019独角兽企业重金招聘Python工程师标准>>> CentOS6.5安装Tab增强版:bash-completion&#xff0c;可补全命令参数&#xff1b; 因为CentOS官方源并不带有bash-completion的包&#xff0c;所以&#xff0c;为了可用yum安装&#xff0c;增加epel的源&#xff0c; 首…...

做生鲜的网站/semseo

西安邮电大学计算机学院本科论文西 安 邮 电 大 学毕 业 设 计(论 文)题 目&#xff1a; JSP用户注册登录系统设计——重设密码模块学 院&#xff1a; 计算机学院专 业&#xff1a; 计算机科学与技术班 级&#xff1a; 计科1101班学生姓名&#xff1a; 廖建军导师姓名&#xff…...