keepalived保活nginx1,nginx2

news2025/2/5 7:47:43

1    下载两个小玩意

  yum -y install keepalived

   yum install psmisc  -y

  

2    配置nginx1,2自启脚本

vim /root/shell/check-nginx.sh          我的脚本放在root/shell里

#!/bin/bash
#获取nginx正在运行的进程数
npsnum=`ps -C nginx --no-header | wc -l`

if [ $npsnum == 0 ]; then
  #等0说明nginx没启动
   /usr/local/nginx/sbin/nginx
  #再次判断nginx是否活着
  if [ `ps -C nginx --no-header | wc -l` == 0 ]; then
    #等0说明nginx启动失败
      killall  keepalived
  fi

fi

 chmod +x  /root/shell/check-nginx.sh      

3    测试脚本是否能用

ll   /root/shell/check-nginx.sh 

ps -ef |grep nginx |grep -v grep    (有的话杀死)

kill -9 1304    kill -9  1306           (我的有我杀)

 ps -ef |grep nginx |grep -v grep  再次查看

./check-nginx.sh   启动  (进脚本目录可以这样,没进去全路径)

ps -ef |grep nginx |grep -v grep     再次查看

4    nginx-1keepalived配置 

vim /etc/keepalived/keepalived.conf      如果错了cat /var/log/messages可以看

   #配置邮件服务器连接超时时间
   smtp_connect_timeout 30
   #路由id,唯一的,当前机子
   router_id LVS_27
}
#vrrp脚本   名字与下面track_script里面的名字一致
vrrp_script aaa{
   script "/root/shell/check-nginx.sh"
   #调用脚本间隔时间 秒 不配默认1秒
   interval 2
   weight -1
}
vrrp_instance VI_1 {
     #服务器状态
    state MASTER
     #当前实例绑定的网卡接口
    interface ens33 
      #虚拟路由id,主备必须相同,相同为一组
    virtual_router_id 51 
   #优先级取值1-255,master一般比backup高50
    priority 100
    #主备心跳间隔时间 单位是秒
    advert_int 1 
    #认证  主备切换时,进行认证  主备必须相同
    authentication { 
        auth_type PASS
        auth_pass 1111
    }   
    #虚拟ip配置 LVS=IPVS   keepavlied虚拟出的ip
    virtual_ipaddress {
         #虚拟IP 必须和要和保活的软件所在的主机的IP的网段一致
        192.168.58.188 
    }   
    #追踪脚本
    track_script{
      aaa
}     
}

service keepalived start   启动

5    nginx-2 keepalived配置 

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   #唤醒邮箱配置
   notification_email {
     acassen@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   #配置邮件服务器连接超时时间
   smtp_connect_timeout 30
   #路由id,唯一的,当前机子
   router_id LVS_28
}
#vrrp脚本   名字与下面track_script里面的名字一致
vrrp_script aaa{
   script "/root/shell/check-nginx.sh"
   #调用脚本间隔时间 秒 不配默认1秒
   interval 2
   weight 1
}
     #服务器状态
    state BACKUP
     #当前实例绑定的网卡接口
    interface ens33 
      #虚拟路由id,主备必须相同,相同为一组
    virtual_router_id 51 
   #优先级取值1-255,master一般比backup高50
    priority 50
    #主备心跳间隔时间 单位是秒
    advert_int 1 
    #认证  主备切换时,进行认证  主备必须相同
    authentication { 
        auth_type PASS
        auth_pass 1111
    }   
    #虚拟ip配置 LVS=IPVS   keepavlied虚拟出的ip
    virtual_ipaddress {
         #虚拟IP 必须和要和保活的软件所在的主机的IP的网段
一致     
        192.168.58.188
    }   
    #追踪脚本
    track_script{
      aaa
}     
} 

service keepalived start   启动

6    配置后

黑窗口     arp -a 192.168.58.188    查看虚拟ip在nginx-1机子上   00-0c-29-d4-55-dc 

                ping  -t 192.168.58.188      可以一直ping

nginx-1         killall keepalived      黑窗口会出现连接超时,然后 继续ping

     结束这次ping

      再次  黑窗口     arp -a 192.168.58.188    查看虚拟ip在nginx-2机子上  00-0c-29-e9-a0-36

       再次        ping  -t 192.168.58.188      

      service   keepalived  start    启动   再次出现 

结束这次ping

  黑窗口     arp -a 192.168.58.188    查看虚拟ip在nginx-1机子上   00-0c-29-d4-55-dc 

7   keepalived   作用  目的

高可用  和   负载均衡

Keepalived的作用是检测服务器(目前保活的是nginx,可以保活其他软件)的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

      Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载平衡和高可用性设施 。底层基于VRRP( Virtual Router Redundancy Protocol,简称VRRP)协议编写。VRRP作用:它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱。

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

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

相关文章

Unity AB包

AB包比对文件内容: ab包名 包大小 包内容md5字符串 编辑器功能-设置默认资源: 可以选择资源作为默认资源保存到StreamingAssets文件夹并且为他们生成资源对比文件1. 在Unity菜单中添加一个功能按钮触发该功能(MenuItem特性)2. 获取在Project窗口选择的资源信息(Selection类)3. …

【js引擎】如何使用 quickjs 把一个 js 值转换成 c 字符串

开发 js 运行时时,最重要的模块莫过于 console.log 了。有了它,才可以在 js 代码中打印日志。那么如何用 quickjs 引擎实现该模块呢? 实际上 quickjs 已经实现了一个 console 的模块 js_print 实现 其中使用了接口 str JS_ToCStringLen(c…

【Linux】Linux(centos7)安装jdk1.8

第一步:卸载系统自带的JDK rpm -qa|grep java # xxx yyy zzz为你要卸载的插件,插件之间以空格隔开 rpm -e --nodeps xxx yyy zzz 先卸载JDK 第二步:安装JDK1.8 安装JDK rpm -ivh jdk-8u172-linux-x64.rpm 第三步:查看是否安…

基于x86 平台opencv的图像采集和seetaface6的人脸检测功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的人脸检测功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的人脸检测模块从而实现…

特斯拉FSD软件进化史

特斯拉FSD软件进化史 01前言 特斯拉FSD自动驾驶是以摄像头为核心的纯视觉解决方案。 纯视觉方案的最初设计灵感来自对人类视觉的研究;即人眼睛搜集的信息到达视网膜后,经过大脑皮层的多个区域、神经层,最终形成生物视觉,并在脑…

Wyn商业智能助力零售行业数字化决策高效驱动

最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/ 项目背景及痛点 百利商业的业务覆盖赛格、 SKP、奥莱、王府井等多地区具有代表性的商场,并创立了多个自有品牌。随着新零售模式的兴起,百利商业紧跟时代步伐&am…

集团数字化转型方案(六)

集团数字化转型方案旨在通过引入前沿技术,如人工智能(AI)、大数据分析、云计算和物联网(IoT),全面提升业务运营效率和市场竞争力。该方案首先实现业务流程的自动化,减少人工干预,通过…

python-求距离(赛氪OJ)

[题目描述] 给你一个 1−>n 的排列,现在有一次机会可以交换两个数的位置,求交换后最小值和最大值之间的最大距离是多少?输入格式: 输入共两行。 第一行一个数 n 。 第二行 n 个数表示这个排列。输出格式: 输出一行一…

嵌入式day28

线程退出 ---pthread_exit() 线程结束方式: 1.pthread_exit //pthread_join 2.从线程执行函数中return //此时等价于1 3.pthread_cancel //线程可以被取消 4.任何一个线程调用了exit 或者 主线程main函数return…

浮点数的使用

浮点运算 浮点,英文float point,其字面意义就是可以漂移的小数点(浮动的小数点),来表示含有小数的数值。 我们在数学运算中,经常会遇到无限小数,如1/3=0.333333…无限循环,然而计算机存储容量是有限的,需要舍弃掉一些精度,存储近似值。 讨论浮点精度的目的也是在于程…

Python酷库之旅-第三方库Pandas(090)

目录 一、用法精讲 381、pandas.Series.plot方法 381-1、语法 381-2、参数 381-3、功能 381-4、返回值 381-5、说明 381-6、用法 381-6-1、数据准备 381-6-2、代码示例 381-6-3、结果输出 382、 pandas.Series.plot.area方法 382-1、语法 382-2、参数 382-3、功…

嵌入式软件开发学习二:GPIO

Tips: 本文全部的TTL肖特基触发器应该均为施密特触发器,有些忘记改了。 资料来源:[3-1] GPIO输出_哔哩哔哩_bilibili 一、GPIO简介: GPIO(General Purpose Input Output)是指通用输入输出接口,…

GitLab Merge Request流水线

GitLab Merge Request 流程文档 为了提升代码质量,让开发人员参与代码review,现在输出Merge Request的流程文档: 1.项目创建各自开发者的分支,命名规则是dev_名字首字母,比如我是dev_cwq.然后把本地分支推到远端orgin…

数据库管理-第232期 初探OpenTenBase(20240819)

数据库管理232期 2024-08-19 数据库管理-第232期 初探OpenTenBase(20240819)1 OpenTenBase简介2 架构介绍3 集群规划4 部署集群4.1 操作系统配置4.2 数据库软件下载与安装4.3 配置集群4.4 分发软件4.5 启动数据库4.6 查看集群状态 5 访问数据库总结 数据…

Java并发常见面试题总结

文章目录 1 多线程1.1 进程、线程和协程的区别?🔥1.2 Java 线程和操作系统的线程有啥区别?1.3 如何创建线程?🔥1.4 runnable 和 callable 两个接口创建线程有什么不同呢?🔥1.5 如何停止一个正在…

2024.8.20

思维导图 C语言中指针数组和数组指针的区别 数组指针本质上是一个指针变量,用于存储整个数组的起始地址,指针每偏移一个单位,内存就会偏移整个数组的容量的大小,一般用于二维数组,二维数组的数组名,本质上是…

【可视化】封装滚动菜单列表组件

源码及源码分析 <template><!-- 滚动菜单的主要容器 --><div class"scrolling-menu"><!-- 如果headers数组有内容&#xff0c;就渲染表头 --><divclass"table-header"v-if"headers.length":style"{ backgroundC…

LLM向量嵌入知多少

向量嵌入是机器学习领域中一项引人入胜且极具实用性的技术。它们构成了众多自然语言处理&#xff08;NLP&#xff09;、推荐系统和搜索算法的基础。如果您曾经使用过推荐引擎、语音助手或语言翻译工具&#xff0c;那么您已经体验过嵌入技术的强大功能。 机器学习算法&#xff0…

如何为您的专用IP地址选择正确的IP SSL证书

随着互联网的不断发展&#xff0c;网站安全变得越来越重要。SSL证书不仅为网站提供了加密通道&#xff0c;还增强了用户对网站的信任感。对于那些使用专用IP地址的网站来说&#xff0c;选择合适的IP SSL证书至关重要。本文将为您详细介绍如何挑选最适合您网站需求的IP SSL证书。…

Cocos Creator2D游戏开发(14)---CocosCreator常用组件详解

Canvas RenderRoot2D 组件所在的节点是 2D 渲染组件数据收集的入口,而 Canvas&#xff08;画布&#xff09; 组件继承自 RenderRoot2D 组件&#xff0c;所以 Canvas 组件也是数据收集入口。所有 2D 渲染元素都必须作为 RenderRoot2D 的子节点才能被渲染。 Canvas还作为屏幕适配…