nginx+keepalived实现nginx服务的高可用

news2024/11/25 17:07:21

本章教程,简单介绍如何利用keepalived实现nginx服务高可用。

keepalived是一个开源的高可用性解决方案,它可以在Linux系统上实现负载均衡和故障转移。它主要用于确保在服务器集群中的主服务器出现故障时,能够快速切换到备用服务器,从而保证系统的可用性。

keepalived通过VRRP(Virtual Router Redundancy Protocol)协议实现故障转移。VRRP协议允许多个路由器组成一个虚拟路由器,其中一个路由器作为主路由器,负责转发数据流量,其他路由器作为备用路由器,当主路由器故障时接管数据流量。

除了故障转移功能,keepalived还提供了负载均衡功能。它可以根据不同的负载均衡算法将流量分发到多个服务器上,从而提高系统的性能和可扩展性。

目录

一、前置条件

1、安装keepalived

2、安装nginx

3、查看网卡名称

 二、修改配置

1、状态检查脚本

2、修改keepalived(主)配置文件

3、修改keepalived(从)配置文件

三、故障模拟

 1、访问虚拟VIP地址

2、将主节点的nginx服务停止

3、将主节点的nginx服务重新开启


一、前置条件

准备两台虚拟机服务(CentOS7):192.168.101.3(主) 和192.168.101.5(从)

规划虚拟virtual_ipaddress:192.168.101.10(VIP)

分别两台虚拟机服务上安装keeplived和nginx

 

1、安装keepalived

# 安装
yum -y install keepalived

# 启动
systemctl start keepalived

# 重启
systemctl restart keepalived

# 停止
systemctl stop keepalived

# 查看状态
systemctl status keepalived

2、安装nginx

参考以往教程:Linux 安装 nginx 服务教程_putty 安装nginx-CSDN博客

3、查看网卡名称

 echo `ip ad|awk '/state UP/ {gsub(":", "");print $2}'`

 

 二、修改配置

1、状态检查脚本

 vim /etc/keepalived/check_nginx.sh
#!/bin/bash

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ];then
	/usr/bin/kill -15 `cat /var/run/keepalived.pid`
fi

赋予脚本执行权限:chmod +x nginx_check.sh

2、修改keepalived(主)配置文件

配置文件位置:/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

#状态检查脚本
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
  interval 1 # (检测脚本执行的间隔)1s
  weight -10 # 权重
}

vrrp_instance VI_1 {
    state MASTER #备份节点
    interface enp0s3  #网卡名称
    virtual_router_id 51
    priority 100  # 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
     track_script {
    chk_nginx #执行脚本
  }
    virtual_ipaddress {
        192.168.101.10 # 虚拟VIP
    }
}

3、修改keepalived(从)配置文件

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

#状态检查脚本
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 状态检查脚本位置
  interval 1 # (检测脚本执行的间隔)1s
  weight 2 # 权重
}

vrrp_instance VI_1 {
    state BACKUP #备份节点
    interface enp0s3  #网卡名称
    virtual_router_id 51
    priority 100  # 优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
     track_script {
    chk_nginx #执行脚本
  }
    virtual_ipaddress {
        192.168.101.10 # 虚拟VIP
    }
}

 配置完成之后,需要重启一下keepalived服务,才会有效。

三、故障模拟

请先确保两台虚拟机的keepalived和nginx都处于运行状态。 

 1、访问虚拟VIP地址

 可以看到,默认情况下,优先访问主节点服务器。

2、将主节点的nginx服务停止

systemctl stop nginx

然后,再次访问虚拟VIP地址。 

 此时,你就会发现,我的配置已经生效了,自动切换到从节点服务器。

3、将主节点的nginx服务重新开启

systemctl start nginx

到此,本章教程就结束了,如果你也感兴趣的话,最好自己动手试试,效果会更好。

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

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

相关文章

如何处理不稳定的自动化测试?

abluecolor 在解决这个问题之前,请停止编写更多测试,因为这将花费你较高的测试维护成本。你需要尽快行动起来对不稳定的原因进行深入研究,找到不稳定的根因,并且尝试在流程、环境和代码方面做一些优化工作解决它。 MasterKindew…

GB28181和RTSP使用场景区别有哪些?

场景差异 好多开发者纠结,到底使用GB28181还是RTSP,这里简单的谈下二者使用场景区别,GB28181和RTSP(Real-Time Streaming Protocol)是用于视频监控和流媒体传输的两种不同的协议。 GB28181是中国国家标准委员会发布的…

网页游戏开发引擎的特点

网页游戏开发引擎是用于创建游戏应用程序的工具,可以在网页浏览器中运行。这些引擎通常基于Web技术,如HTML5、JavaScript和CSS,以便在不同平台上实现跨平台的游戏开发。以下是一些流行的网页游戏开发引擎以及它们的主要特点,希望对…

软件项目管理办法

图片来自网络,如有侵权请联系删除

实时检测并识别视频中的汽车车牌

对于基于摄像头监控的安全系统来说,识别汽车牌照是一项非常重要的任务。我们可以使用一些计算机视觉技术从图像中提取车牌,然后我们可以使用光学字符识别来识别车牌号码。在这里,我将引导您完成此任务的整个过程。 要求: import cv2import numpy as npfrom skimage impor…

NUXT前端服务端渲染技术框架

服务端渲染又称SSR(Server Side Render)实在服务端完成页面的内容,而不是在客户端通过AJAX获取数据 优势:更好的SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面 Nuxt.js是一个基于Vue.js的轻量级应用框架&a…

数据库的事务四大特性(ACID)、详解隔离性以及隔离级别、锁

文章目录 🎉数据库的事务四大特性(ACID)以及隔离性一、事务的四大特性✨1、原子性(Atomicity)🎊2、一致性(Consistency)🎊3、隔离性(Isolation)&a…

springboot打包时依赖jar和项目jar分开打包;jar包瘦身

概述 最近感觉项目在部署时时jar包传输太慢了; 看了下jar包内容,除了项目代码,其余大部分都是依赖jar; 平时改动较多的只是项目代码,依赖jar改动比较少; 所以就在想能不能分开打包;这样只部署项…

基于SSM的国外摇滚乐队交流和周边售卖系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

【设计模式】第12节:结构型模式之“外观模式”

一、简介 门面模式,也叫外观模式,英文全称是Facade Design Pattern。门面模式为子系统提供一组统一的接口,定义一组高层接口让子系统更易用。 目的:简化复杂系统的交互方式 特点:提供一个统一的交互接口 二、UML类…

vue-devtools 下载

创建空文件夹,然后 cmd 运行: npm install vue-devtools 然后打开在node_modules->vue-devtools->vender->manifest.json文件 persistent:false 改成 true 最后把vender文件夹拖到chrome浏览器扩展中 提示小消失

【Vue】vant上传封装方法,van-uploader上传接口封装

项目场景&#xff1a; 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 在移动端项目中&#xff0c;使用vant组件上传&#xff0c;但是vant没有上传方法&#xff0c;需要自己写。 html代码 <van-uploader v-model"fileList" :max-size"50…

腾讯云双十一活动,海量云产品优惠,上云正当时!

腾讯云2023年双十一推出了一场盛大的促销活动&#xff0c;活动涵盖了各种产品优惠&#xff0c;包括云服务器、数据库、存储、网络、安全、企业应用等各个领域的产品&#xff0c;让用户享受全方位的优惠&#xff01; 一、腾讯云双11活动入口 活动地址&#xff1a;https://txy.i…

基于MFC的串口通信(Mscomm)

1、串口通信的概述&#xff1a; 串口是一种重要的通信资源&#xff0c;例如鼠标口、USB接口都是串口。串行端口是CPU和串行设备间的编码转换器。当数据从CPU经过端口发送出去的时候&#xff0c;字节数据会被转为串行的位&#xff0c;在接收数据时&#xff0c;串行的位被转换为…

Apache Dolphinscheduler如何不重启解决Master服务死循环

个人建议 Apache Dolphinscheduler作为一个开源的调度平台&#xff0c;目前已经更新到了3.X版本&#xff0c;4.0版本也已经呼之欲出。3.0版本作为尝鲜版本&#xff0c;新添加了许多的功能&#xff0c;同时也存在非常多的隐患&#xff0c;本人使用3.0版本作为生产调度也踩了很多…

开放式耳机和骨传导耳机哪个好,开放式耳机和骨传导耳机区别

虽然开放式耳机和骨传导耳机两者都能够听到周边的声音&#xff0c;但开放式耳机和骨传导耳机区别还是挺大的&#xff0c;下面让我来给大家详细的分析一下两者的区别。 1、音频传导方式 开放式耳机&#xff1a;开放式耳机设计允许声音从耳机的驱动单元透过外部空气传播到听觉器…

浅谈搜索展现层场景化技术-tanGo实践

作者 | 搜索技术平台 导读 本文为搜索展现层相关技术&#xff0c;主线会先通过介绍搜索阿拉丁的产品形态&#xff0c;让读者初步了解什么是阿拉丁&#xff0c;及相关展现概念。之后会聚焦场景化产品&#xff0c;场景化是搜索构建沉浸式完美体验&#xff08;重新组合整页阿拉丁和…

Win10系统 如何使用cmd脚本命令,连接到指定WIFI并免手工输入WIFI密码连接?

环境&#xff1a; Win10 专业版 19041 WiFi 名称&#xff1a;LTG 问题描述&#xff1a; Win10系统 如何使用cmd脚本命令&#xff0c;连接到指定WIFI并免手工输入WIFI密码连接&#xff1f; 解决方案&#xff1a; 1.找一台已经连接过LTG这个wifi的电脑&#xff0c;导出.xlm配…

EasyRecovery16专业版激活码序列号

当不小心将回收站的文件删除了怎么办&#xff1f;想找回但是不知道怎么找回需要的数据文件&#xff1f;别担心今天小编就为大家介绍一款非常专业的电脑数据文件恢复工具&#xff0c;easyrecovery14是由Ontrack专为电脑用户推出的一款专业的数据恢复软件&#xff0c;这款软件功能…

opencv 连通域操作示例代码记录connectedComponentsWithStats()函数示例

void CrelaxMyFriendDlg::OnBnClickedOk() {hdc this->GetDC()->GetSafeHdc();// TODO: 在此添加控件通知处理程序代码string imAddr "c:/Users/actorsun/Pictures/";string imAddr1 imAddr"rice.png";Mat relax1, positive;relax1 imread(imAdd…