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资源及服务,恢复到原来的备用角色。

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

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

相关文章

蓝凌OA custom.jsp 任意文件读取

​曾子曰:“慎终追远,民德归厚矣。” 漏洞复现 访问漏洞url: 出现漏洞的文件为 custom.jsp,构造payload: /sys/ui/extend/varkind/custom.jsp var{"body":{"file":"file:///etc/passwd&q…

圆的反演 hdu 6097

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 题目大意 http://acm.hdu.edu.cn/showproblem.php?pid6097 有一个圆C,它的圆心是O(0,0), 半径是r。 在C内部或边界上有两点P和Q,OPOQ。 求解…

软考高级架构师下篇-12层次式架构设计理论与实践

目录 1. 考情分析2. 层次式体系结构概述3. 表现层框架设计4. 中间层框架设计5. 数据访问层设计6. 数据架构规划与设计7. 物联网层次架构设计8. 前文回顾1. 考情分析 根据考试大纲,层次式架构设计理论与实践知识点会涉及单选题型(约占2~5分)和案例题(25分),本小时内容偏重于方…

三分钟解决AE缓存预览渲染错误、暂停、卡顿问题

一、清除RAM缓存(内存) 你应该做的第一件事是清除你的RAM。这将清除当前存储在内存中的所有临时缓存文件。要执行此操作,请导航到编辑>清除>所有内存。这将从头开始重置RAM缓存 二、清空磁盘缓存 您也可以尝试清空磁盘缓存。执行此操作…

实现chatGPT 聊天样式

效果图 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Chat Example</title&g…

第6天----【位运算进阶之-----位与()】七夕特别版

今天我们来学习C语言的位与。 ❤️C语言的位与&#xff08;&&#xff09;操作是一种按位运算符&#xff0c;用于对两个操作数的每个对应位执行逻辑与操作。它的操作规则如下&#xff1a; 如果两个操作数的对应位都为1&#xff0c;则结果的对应位也为1。&#xff08;全1才…

【Cadence】差分管噪声贡献差别很大的可能原因

举例&#xff1a;M2 M3是一对差分管&#xff0c;噪声贡献差别很大。 理想电感下二者贡献相同&#xff0c; 但在实际电磁仿真后&#xff0c;一个17.6%&#xff0c;一个5.6% 原因是&#xff1a; 电磁仿真存在交叉&#xff0c;不对称&#xff0c;中心抽头不是理想的交流地&#x…

初识C语言

目录 一、C语言的概念 二、第一个C语言程序 三、数据类型 四、变量和常量 4.1 变量定义方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的作用域和生命周期 4.5 常量 五、字符串和转义字符 5.1 字符串 5.2 转义字符 六、注释 七、选择语句 八、循环语句 九、函数 十、数…

如何使用CSS实现一个全屏滚动效果(Fullpage Scroll)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现全屏滚动效果的CSS和JavaScript示例⭐ HTML 结构⭐ CSS 样式 (styles.css)⭐ JavaScript 代码 (script.js)⭐ 实现说明⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦…

node_modules.cache是什么东西

一开始没明白这是啥玩意&#xff0c;还以为是npm的属性&#xff0c;网上也没说过具体的来源出处 .cache文件的产生是由webpack4的插件cache-loader生成的&#xff0c;node_modules里下载了cache-loader插件&#xff0c;很多朋友都是vuecli工具生成的项目&#xff0c;内置了这部…

以创新点亮前路,戴尔科技开辟数实融合新格局

编辑&#xff1a;阿冒 设计&#xff1a;沐由 2023年&#xff0c;对于戴尔科技而言是特殊的一年&#xff0c;这是戴尔科技进入中国市场第25个年头——“巧合”的是&#xff0c;这25年也是中国产业经济发展最快&#xff0c;人们工作与生活发生变化最大的四分之一个世纪。 2023年&…

mysql全文检索使用

数据库数据量10万左右&#xff0c;使用like %test%要耗费30秒左右&#xff0c;放弃该办法 使用mysql的全文检索 第一步:建立索引 首先修改一下设置: my.ini中ngram_token_size 1 可以通过 show variables like %token%;来查看 接下来建立索引:alter table 表名 add f…

.Net程序调试时接受外部命令行参数方式

1.对项目右键&#xff0c;属性 2.在调试中打开常规&#xff0c;打开调试启动配置文件UI 3.输入需要的命令行参数

idea 左下角的Git(Version Control)中显示Local Changes窗口

打开Local Changes窗口来查看当前Git仓库的本地变更。 使用快捷键: - Windows: Alt9 - Mac: Cmd9 解决&#xff1a; &#xff08;1&#xff09;idea打开settings &#xff08;2&#xff09;点击Version Control窗口选项卡&#xff0c;选择Commit选项&#xff0c;对 Use.... in…

springBoot防止重复提交

自定义注解AOPRedis 自定义注解 package com.wzw.config.anno;import java.lang.annotation.*;/*** 自定义注解防止表单重复提交*/ Target(ElementType.METHOD) // 注解只能用于方法 Retention(RetentionPolicy.RUNTIME) // 修饰注解的生命周期 Documented public interface …

【微服务学习笔记】认识微服务

【微服务学习笔记】认识微服务 单体架构 分布式架构 微服务架构 SpringCloud 服务拆分和注意事项 服务拆分的案例demo 各个服务之间的数据库都是相互独立的&#xff0c;你不能直接访问对方的数据库&#xff0c;只能从一个服务像另外一个服务发起远程调用 在订单模块的服务中 …

【宝藏系列】一文讲透C语言数组与指针的关系

【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】 文章目录 【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】&#x1f468;‍&#x1f3eb;前言1️⃣指针1️⃣1️⃣指针的操作1️⃣2️⃣关于指针定义的争议1️⃣3️⃣对教材错误写法的小看法 2️⃣指针和数组的区别2️⃣…

Azure文件共享

什么是Azure文件共享 Azure文件共享是一种在云中存储和访问文件的服务。它允许用户在不同的计算机、虚拟机和服务之间共享数据&#xff0c;并在应用程序中进行访问、修改和管理。 Azure文件共享可以用于各种用途&#xff0c;例如&#xff1a; 共享文件资源给多个虚拟机或服务…

数学建模大全及优缺点解读

分类模型 1、距离聚类&#xff08;系统聚类&#xff09;&#xff08;常用&#xff0c;需掌握&#xff09; 优点&#xff1a; ①将一批样本数据按照他们在性质上的亲密程度在没有先验知识的情况下自动进行分类 ②是一种探索性的分析方法&#xff0c;分类结果不一定相同 例如&am…

初始C语言(7)——详细讲解有关初阶指针的内容

系列文章目录 第一章 “C“浒传——初识C语言&#xff08;1&#xff09;&#xff08;更适合初学者体质哦&#xff01;&#xff09; 第二章 初始C语言&#xff08;2&#xff09;——详细认识分支语句和循环语句以及他们的易错点 第三章 初阶C语言&#xff08;3&#xff09;——…