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.hqwc.cn/news/81184.html

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

相关文章

React笔记[tsx]-解决Property ‘frames‘ does not exist on type ‘Readonly<{}>‘

浏览器报错如下&#xff1a; 编辑器是这样的&#xff1a; 原因是React.Component<any>少了后面的any&#xff0c;改成这样即可&#xff1a; export class CustomFrame extends React.Component<any, any>{............ }

飞机打方块(四)游戏结束

一、游戏结束显示 1.新建节点 1.新建gameover节点 2.绑定canvas 3.新建gameover容器 4.新建文本节点 2.游戏结束逻辑 Barrier.ts update(dt: number) {//将自身生命值取整let num Math.floor(this.num);//在Label上显示this.num_lb.string num.toString();//获取GameCo…

Python Opencv实践 - 图像直方图均衡化

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像直方图计算 #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) #images&…

备份集中的数据库备份与现有的数据库不同?

数据已经成为公司的主要资产,特别是对于企业来说&#xff0c;数据库中存储的信息通常是其业务运营的核心。 因此&#xff0c;确保数据库的安全性和完整性至关重要。这导致数据库备份成为企业信息管理的重要组成部分。本文将详细介绍备份密集数据库备份的必要性&#xff0c;以及…

Packet_Tracer的使用

一、实验目的&#xff1a; 通过该实验了解Packet Tracer的使用方法&#xff0c;能够用Packet Tracer建立和模拟网络模型。 二、主要任务&#xff1a; 1.熟悉PT的界面&#xff0c;了解按键用途。 2.尝试自己建立一个小型网络&#xff0c;并测试连通性。 3.学习P…

连接pgsql数据库 sslmode sslrootcert sslkey sslcert 参数的作用

sslmode 参数的作用 sslmode 参数用于指定数据库连接时使用的 SSL 加密模式。SSL&#xff08;Secure Sockets Layer&#xff09;是一种加密协议&#xff0c;用于保护数据在客户端和服务器之间的传输过程&#xff0c;以增加数据传输的安全性。sslmode 参数可以设置不同的值&…

Linux:shell脚本:基础使用(6)《正则表达式-awk工具》

简介 awk是行处理器: 相比较屏幕处理的优点&#xff0c;在处理庞大文件时不会出现内存溢出或是处理缓慢的问题&#xff0c;通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理&#xff0c;然后输出 1&#xff09;awk命令会逐行读取文件的内容进行处理 2&#xff09;a…

Linux监控基础命令

Linux资源监控 一.资源监控常用命令汇总 内存&#xff1a;top、free、vmstat、pmap I/O&#xff1a;vmstat、sar CPU&#xff1a;top、vmstat、mpstat、iostat 二.监控命令 日常检测使用top和free就足够了&#xff0c;如果要对系统进行日常监控可以使用zabbix或者prometh…

Nat. Photonics:实时捕获了光子的量子纠缠!

渥太华大学的研究人员与罗马大学的Danilo Zia和Fabio Sciarrino合作&#xff0c;展示了一种新技术&#xff0c;可以实时可视化两个纠缠光子&#xff08;构成光的基本粒子&#xff09;的波函数。 研究成果以“Interferometric imaging of amplitude and phase of spatial biphot…

qt显示图片并转换成灰度图及伪彩图

写了个程序&#xff0c;可在途图片&#xff0c;并切换成灰度图及伪彩图显示&#xff0c;主要代码如下&#xff1a; #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainW…

重注微电子产业,“三大齿轮”能否带起香港经济的“第三轮”

文 | 智能相对论 作者 | 佘凯文 众所周知&#xff0c;微电子产业早已成为现代科技领域的关键钥匙&#xff0c;谁能掌握微电子产业&#xff0c;谁就能拥有全球科技领域的话语权。 从上世纪开始&#xff0c;微电子产业曾经历过几次重大转移&#xff0c;如70年代从美国转向日本…

流媒体服务器SRS的搭建及QT下RTMP推流客户端的编写

一、前言 目前市面上有很多开源的流媒体服务器解决方案&#xff0c;常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca。这几种的对比如下&#xff1a; &#xff08;本图来源&#xff1a;https://www.ngui.cc/zz/1781086.html?actiononClick&#xff09; 二、SRS的介绍 SRS&am…