nginx+keepalived
一、简介
很久没有配置keepalived了,最近业务医院需要配置前置机做转发,并且配置keepalived.
因为医院的生产环境和外界是完全隔离的,所以需要做前置机做网络请求转发
二、服务器列表
| 角色 | IP | 备注 |
|---|---|---|
| nginx + keepalived master | 192.168.1.22 | |
| nginx + keepalived slave | 192.168.1.32 | |
| vip | 192.168.1.100 |
三、安装nginx
1.安装依赖
yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel zlib zlib-devel openssl openssl-devel
2.安装
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-pcre --with-http_stub_status_module --with-http_dav_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-streammake && make installn -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
3.配置启动脚本
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true[Install]
WantedBy=multi-user.target
四、安装keepalived
yum -y install keepalived
五、配置master
配置1.22的keepalived
1.配置keepalived
vim /etc/keepalived/keepalived.conf! Configuration File for keepalived
global_defs {# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一router_id Internet_MASTERscript_user rootenable_script_security
}
vrrp_script check_nginx {script "/etc/keepalived/check_nginx.sh"interval 2 # 每隔两秒运行上一行脚本weight -5 # 如果脚本运行成功,则升级权重+5 ; weight -5 # 如果脚本运行失败,则升级权重-5fall 2 #检测连续两次失败才算真的失败rise 1 #检测1次成功就算成功
}
vrrp_instance VI_10 {state MASTER # 表示状态是MASTER主机还是备用机BACKUPinterface ens33 # 该实例绑定的网卡名称virtual_router_id 100 # 保证主备节点一致即可,这个其实就是虚拟出来路由器的id,id一样才能说明所有节点在一个组priority 51 # 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选advert_int 1 # 主备之间同步检查时间间隔,单位秒authentication { # 认证权限密码,防止非法节点进入auth_type PASSauth_pass 2222}virtual_ipaddress { # 虚拟出来的ip,可以有多个(vip)192.168.1.100/24 dev ens33 label ens33:1}track_script {check_nginx # 追踪nginx脚本}
}
2.配置检测脚本
vim /etc/keepalived/check_nginx.sh#!/bin/bash
nginx_stat=$(ps axu |grep -w nginx|wc -l)
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $nginx_stat -eq 1 ];thensystemctl start nginx# 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机sleep 3if [ $(ps axu |grep -w nginx |wc -l) -eq 1 ];thensystemctl stop keepalivedfi
f
六、配置backup
配置1.32服务器
1.配置keepalived
! Configuration File for keepalived
global_defs {# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一router_id Internet_BACKUPscript_user rootenable_script_security
}
vrrp_script check_nginx {script "/etc/keepalived/check_nginx.sh"interval 2 # 每隔两秒运行上一行脚本weight -5 # 如果脚本运行成功,则升级权重+5 ; weight -5 # 如果脚本运行失败,则升级权重-5fall 2 #检测连续两次失败才算真的失败rise 1 #检测1次成功就算成功
}
vrrp_instance VI_10 {state BACKUP # 表示状态是MASTER主机还是备用机BACKUPinterface ens33 # 该实例绑定的网卡名称virtual_router_id 100 # 保证主备节点一致即可,这个其实就是虚拟出来路由器的id,id一样才能说明所有节点在一个组priority 50 # 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选advert_int 1 # 主备之间同步检查时间间隔,单位秒authentication { # 认证权限密码,防止非法节点进入auth_type PASSauth_pass 2222}virtual_ipaddress { # 虚拟出来的ip,可以有多个(vip)192.168.1.100/24 dev ens33 label ens33:1}track_script {check_nginx # 追踪nginx脚本}
}
2.配置检测脚本
#!/bin/bash
nginx_stat=$(ps axu |grep -w nginx|wc -l)
if [ $nginx_stat -le 1 ];thennginxsleep 3if [ $(ps axu |grep -w nginx |wc -l) -le 1 ];thensystemctl stop keepalivedfi
fi
七、启动keepalived
1.测试检测脚本
两台机器分别进行启动测试
nginx启动成功,说明脚本生效
[root@node4 keepalived]# sh check_nginx.sh
[root@node4 keepalived]# ps aux |grep nginx
root 19245 0.0 0.0 20708 636 ? Ss 04:36 0:00 nginx: master process nginx
nobody 19247 0.0 0.1 21148 1080 ? S 04:36 0:00 nginx: worker process
root 19253 0.0 0.0 112812 980 pts/0 R+ 04:36 0:00 grep --color=auto nginx
2.测试keepalived
分别启动主备服务器
systemctl start keepalived
在1.22服务器上查看
[root@node4 keepalived]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.22 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::aafa:3af8:b0c0:5970 prefixlen 64 scopeid 0x20<link>ether 00:0c:29:fb:fe:b6 txqueuelen 1000 (Ethernet)RX packets 291331 bytes 376368562 (358.9 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 138247 bytes 118532393 (113.0 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.100 netmask 255.255.255.0 broadcast 0.0.0.0ether 00:0c:29:fb:fe:b6 txqueuelen 1000 (Ethernet)
在1.32服务器上查看,没有1.100的vip
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:8a:ba:00 brd ff:ff:ff:ff:ff:ffinet 192.168.1.32/24 brd 192.168.1.255 scope global noprefixroute dynamic ens32valid_lft 1614sec preferred_lft 1614secinet6 fe80::cf4e:8df6:7cb2:e053/64 scope link noprefixroute valid_lft forever preferred_lft forever
3.测试check_nginx脚本实时性
keepalived是2秒钟运行一次脚本,在配置文件有配置,这里进行测试一下。
先看查nginx状态
[root@node4 ~]# ps aux |grep nginx
root 19245 0.0 0.0 20708 636 ? Ss 04:36 0:00 nginx: master process nginx
nobody 19247 0.0 0.1 21148 1080 ? S 04:36 0:00 nginx: worker process
root 51295 0.0 0.0 112812 976 pts/0 R+ 20:26 0:00 grep --color=auto nginx
停止nginx后,查看keepalived会不会通过脚本来启动nginx.
这里发现nginx的pid发生了变化,说明nginx是keepalived通过脚本进行启动了
[root@node4 ~]# nginx -s stop
[root@node4 ~]# ps aux |grep nginx
root 51382 0.0 0.0 20708 628 ? Ss 20:26 0:00 nginx: master process nginx
nobody 51384 0.0 0.1 21144 1068 ? S 20:26 0:00 nginx: worker process
root 51506 0.0 0.0 112812 980 pts/0 R+ 20:27 0:00 grep --color=auto nginx
4.测试漂移功能
停止master(1.22)的keepalived
[root@node4 ~]# systemctl stop keepalived
[root@node4 ~]# ps aux |grep keep
root 51815 0.0 0.0 112812 976 pts/0 R+ 20:29 0:00 grep --color=auto keep
此时发现vip已经漂移到了1.32服务器上
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:8a:ba:00 brd ff:ff:ff:ff:ff:ffinet 192.168.1.32/24 brd 192.168.1.255 scope global noprefixroute dynamic ens32valid_lft 1788sec preferred_lft 1788secinet 192.168.1.100/24 scope global secondary ens32:1valid_lft forever preferred_lft foreverinet6 fe80::cf4e:8df6:7cb2:e053/64 scope link noprefixroute valid_lft forever preferred_lft forever
然后恢复master的keepalived,发现vip已经漂移到了1.22服务器上。1.32服务器上没有了vip
[root@node4 ~]# ip a |grep ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000inet 192.168.1.22/24 brd 192.168.1.255 scope global dynamic ens33inet 192.168.1.100/24 scope global secondary ens33:1相关文章:
nginx+keepalived
一、简介 很久没有配置keepalived了,最近业务医院需要配置前置机做转发,并且配置keepalived. 因为医院的生产环境和外界是完全隔离的,所以需要做前置机做网络请求转发 二、服务器列表 角色IP备注nginx keepalived master192.168.1.22ngin…...
Re51:读论文 Language Models as Knowledge Bases?
诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:Language Models as Knowledge Bases? ArXiv网址:https://arxiv.org/abs/1909.01066 官方GitHub项目:https://github.com/facebookresearch/LAMA 本文是2019年…...
.NET 使用配置文件
我简单测试了一下json格式配置文件,在这里记录一下,方便以后查看。 需要引用的库: Microsoft.Extensions.Hosting 创建json格式文件:appsettings.json 在工程文件中包含json文件: <ItemGroup><Content In…...
vue 通过ref调用router-view子组件的方法
由于用的vue2.7版本,但用了vue3 setup的语法; 注意:是vue2的template结构,vue3的setup语法;非这种情况需要举一反三。 处理方案: 1、对router-view加上ref template修改 直接对router-view加上ref&#x…...
在全球碳市场中崭露头角的中碳CCNG
在全球气候治理的大背景下,中国碳中和发展集团有限公司(简称中国碳中和)正在成为全球碳交易市场的一个重要参与者。随着国际社会对碳排放的日益关注,中国碳中和凭借其在碳资产开发、咨询与管理等领域的深厚积累,正成为…...
uni-app - 弹出框
目录 1.基本介绍 2.原生uinapp 通过uni.showActionSheet实现 3.使用组件 Popup 弹出层 ③效果展示 1.基本介绍 弹出框让我们在需要时在屏幕底部弹出一个菜单,它通常用于在各种应用程序中进行选择操作。Uniapp为我们提供了基本的底部弹出框组件,但它也有…...
深度学习之基于Tensorflow卷积神经网络鸟类目标识别检测系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络(Convolutional Neural Networks,CNN)在鸟类目标识…...
关闭EntityFramework日志输出SQL
项目场景: 提示:这里简述项目相关背景: EntityFramework日志输出SQL 问题描述 提示:这里描述项目中遇到的问题: EntityFramework日志输出SQL,造成发布后,无效日志太多,且容器化部…...
重新开启GPT Plus充值通道——基于前端开发者工具
chatGPT PLUS充值通道的关闭 由于chatGPT用户激增,近日,OpenAI的CEO Sam Altman宣布需要暂停新用户对ChatGPT Plus的订阅。在X上,他表达了对于确保用户体验的承诺,同时也提到了用户可以通过应用程序内的通知功能来了解服务恢复的…...
技术细分|推荐系统——推荐系统中的数据去偏方法
本篇的主要脉络同样依据中科大何向南教授、合工大汪萌教授联合在 TKDE 上的一篇综述文章展开:Bias and Debias in Recommender System: A Survey and Future Directions。 下面按照前导文章中介绍的数据偏差 Selection Bias、Conformity Bias、Exposure Bias、Posit…...
多功能回馈式交流电子负载的应用
多功能回馈式交流电子负载是用于模拟和测试电源、电池等电子设备的负载工具。它具有多种应用,可以用于测试和评估各种类型的电源,包括直流电源和交流电源。它可以模拟各种负载条件,如恒定电流、恒定电压和恒定功率,以验证电源的性…...
AIGC专题报告:生成式人工智能用例汇编
今天分享的是AIGC系列深度研究报告:《AIGC专题报告:生成式人工智能用例汇编》。 (报告出品方:德勤) 报告共计:16页 生成式人工智能(AI)的兴起 生成式AI给人类文明创造了无限的可…...
php xml数据转数组两种方式
目录 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 方法二、使用PHP内置的DOMDocument类来将XML数据转换为数组的方法 方法一、可以使用simplexml_load_string()函数将XML数据转换为数组。 $xmlData <root><name>John Doe</name>&l…...
wagtail-安装配置
系列文章目录 文章目录 系列文章目录安装虚拟环境安装wagtail查看安装后的包 创建wagtail项目安装依赖迁移创建超级用户运行项目 安装虚拟环境 https://blog.csdn.net/gsl371/article/details/117917857 安装wagtail (wagenv) C:\djproject\wagprj>pip list Package V…...
基于Android校园交流uniAPP+vue 微信小程序v7e1
本系统结合现今XX校园交流APP的功能模块以及设计方式进行分析,使用Android平台和Ssm框架进行开发设计,具体研究内容如下: (1) 系统管理员主要对用户管理、类型管理、娱乐天地管理、投诉举报管理、学习平台、我的收藏管理、系统管理等功能进…...
geemap学习笔记013:为遥感动态GIF图添加图名
前言 遥感动态GIF图可以展示地理区域随时间的变化,这对于监测自然灾害、湿地变化、城市扩展、农田变化等方面非常有用,并且可以反复观察图像,以更深入地了解地表的动态变化。本节主要是对遥感动态GIF图添加图名,以便于更好地理解…...
【开源】基于JAVA的高校实验室管理系统
项目编号: S 015 ,文末获取源码。 \color{red}{项目编号:S015,文末获取源码。} 项目编号:S015,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…...
为啥 有了锤子,看啥都是钉子?
坏处:有了锤子,看啥都是钉子,有何坏处? 事倍功半,甚至适得其反。比如具有高并发设计经验的人,在初创系统初期,就设计高并发架构,其复杂度大概率无法支持试点业务快速落地࿰…...
java实现连接linux(上传文件,执行shell命令等)
1 导入pom <dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency> 2 编写配置类 package com.budwk.app.atest;import com.budwk.app.common.config.AppExceptio…...
苹果企业签名和TF签名都是iOS内测中的常见方法有哪些?
苹果企业签名是使用苹果企业开发者账号对苹果安装包(IPA)进行打包的一个过程,它基于非对称加密算法实现,表示该苹果企业账号认可了这份数据,然后发送给其他人。企业签名后的APP无需上架到App Store,可绕开苹…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
