当前位置: 首页 > news >正文

nginx+keepalived

一、简介

很久没有配置keepalived了,最近业务医院需要配置前置机做转发,并且配置keepalived.
因为医院的生产环境和外界是完全隔离的,所以需要做前置机做网络请求转发

二、服务器列表

角色IP备注
nginx + keepalived master192.168.1.22
nginx + keepalived slave192.168.1.32
vip192.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了&#xff0c;最近业务医院需要配置前置机做转发&#xff0c;并且配置keepalived. 因为医院的生产环境和外界是完全隔离的&#xff0c;所以需要做前置机做网络请求转发 二、服务器列表 角色IP备注nginx keepalived master192.168.1.22ngin…...

Re51:读论文 Language Models as Knowledge Bases?

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;Language Models as Knowledge Bases? ArXiv网址&#xff1a;https://arxiv.org/abs/1909.01066 官方GitHub项目&#xff1a;https://github.com/facebookresearch/LAMA 本文是2019年…...

.NET 使用配置文件

我简单测试了一下json格式配置文件&#xff0c;在这里记录一下&#xff0c;方便以后查看。 需要引用的库&#xff1a; Microsoft.Extensions.Hosting 创建json格式文件&#xff1a;appsettings.json 在工程文件中包含json文件&#xff1a; <ItemGroup><Content In…...

vue 通过ref调用router-view子组件的方法

由于用的vue2.7版本&#xff0c;但用了vue3 setup的语法&#xff1b; 注意&#xff1a;是vue2的template结构&#xff0c;vue3的setup语法&#xff1b;非这种情况需要举一反三。 处理方案&#xff1a; 1、对router-view加上ref template修改 直接对router-view加上ref&#x…...

在全球碳市场中崭露头角的中碳CCNG

在全球气候治理的大背景下&#xff0c;中国碳中和发展集团有限公司&#xff08;简称中国碳中和&#xff09;正在成为全球碳交易市场的一个重要参与者。随着国际社会对碳排放的日益关注&#xff0c;中国碳中和凭借其在碳资产开发、咨询与管理等领域的深厚积累&#xff0c;正成为…...

uni-app - 弹出框

目录 1.基本介绍 2.原生uinapp 通过uni.showActionSheet实现 3.使用组件 Popup 弹出层 ③效果展示 1.基本介绍 弹出框让我们在需要时在屏幕底部弹出一个菜单&#xff0c;它通常用于在各种应用程序中进行选择操作。Uniapp为我们提供了基本的底部弹出框组件&#xff0c;但它也有…...

深度学习之基于Tensorflow卷积神经网络鸟类目标识别检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;在鸟类目标识…...

关闭EntityFramework日志输出SQL

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; EntityFramework日志输出SQL 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; EntityFramework日志输出SQL&#xff0c;造成发布后&#xff0c;无效日志太多&#xff0c;且容器化部…...

重新开启GPT Plus充值通道——基于前端开发者工具

chatGPT PLUS充值通道的关闭 由于chatGPT用户激增&#xff0c;近日&#xff0c;OpenAI的CEO Sam Altman宣布需要暂停新用户对ChatGPT Plus的订阅。在X上&#xff0c;他表达了对于确保用户体验的承诺&#xff0c;同时也提到了用户可以通过应用程序内的通知功能来了解服务恢复的…...

技术细分|推荐系统——推荐系统中的数据去偏方法

本篇的主要脉络同样依据中科大何向南教授、合工大汪萌教授联合在 TKDE 上的一篇综述文章展开&#xff1a;Bias and Debias in Recommender System: A Survey and Future Directions。 下面按照前导文章中介绍的数据偏差 Selection Bias、Conformity Bias、Exposure Bias、Posit…...

多功能回馈式交流电子负载的应用

多功能回馈式交流电子负载是用于模拟和测试电源、电池等电子设备的负载工具。它具有多种应用&#xff0c;可以用于测试和评估各种类型的电源&#xff0c;包括直流电源和交流电源。它可以模拟各种负载条件&#xff0c;如恒定电流、恒定电压和恒定功率&#xff0c;以验证电源的性…...

AIGC专题报告:生成式人工智能用例汇编

今天分享的是AIGC系列深度研究报告&#xff1a;《AIGC专题报告&#xff1a;生成式人工智能用例汇编》。 &#xff08;报告出品方&#xff1a;德勤&#xff09; 报告共计&#xff1a;16页 生成式人工智能&#xff08;AI&#xff09;的兴起 生成式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的功能模块以及设计方式进行分析&#xff0c;使用Android平台和Ssm框架进行开发设计&#xff0c;具体研究内容如下&#xff1a; (1) 系统管理员主要对用户管理、类型管理、娱乐天地管理、投诉举报管理、学习平台、我的收藏管理、系统管理等功能进…...

geemap学习笔记013:为遥感动态GIF图添加图名

前言 遥感动态GIF图可以展示地理区域随时间的变化&#xff0c;这对于监测自然灾害、湿地变化、城市扩展、农田变化等方面非常有用&#xff0c;并且可以反复观察图像&#xff0c;以更深入地了解地表的动态变化。本节主要是对遥感动态GIF图添加图名&#xff0c;以便于更好地理解…...

【开源】基于JAVA的高校实验室管理系统

项目编号&#xff1a; S 015 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S015&#xff0c;文末获取源码。} 项目编号&#xff1a;S015&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…...

为啥 有了锤子,看啥都是钉子?

坏处&#xff1a;有了锤子&#xff0c;看啥都是钉子&#xff0c;有何坏处&#xff1f; 事倍功半&#xff0c;甚至适得其反。比如具有高并发设计经验的人&#xff0c;在初创系统初期&#xff0c;就设计高并发架构&#xff0c;其复杂度大概率无法支持试点业务快速落地&#xff0…...

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内测中的常见方法有哪些?

苹果企业签名是使用苹果企业开发者账号对苹果安装包&#xff08;IPA&#xff09;进行打包的一个过程&#xff0c;它基于非对称加密算法实现&#xff0c;表示该苹果企业账号认可了这份数据&#xff0c;然后发送给其他人。企业签名后的APP无需上架到App Store&#xff0c;可绕开苹…...

远程开发环境冷启动从47s到≤3s,全链路优化实战,含Docker Compose缓存策略、devcontainer.json深度配置与GPU直通配置

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;远程开发环境冷启动性能瓶颈全景分析 远程开发环境的冷启动延迟是影响开发者首次编码体验的关键障碍。当开发者从零拉起一个云端 IDE 实例&#xff08;如 VS Code Server、Gitpod 或 JetBrains Space&a…...

golang如何实现多活架构方案_golang多活架构方案实现教程

多活核心是流量调度而非服务启动&#xff0c;需在注册、发现、路由、重试等全链路显式支持region标签与fallback。Golang因轻量稳定适配手写逻辑&#xff0c;读多活写单中心是务实起点&#xff0c;DNS/K8s/grpc默认机制均需绕过&#xff0c;必须通过context传region、自定义res…...

Windows Cleaner深度指南:彻底解决C盘爆红和系统卡顿的终极方案

Windows Cleaner深度指南&#xff1a;彻底解决C盘爆红和系统卡顿的终极方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否曾经遇到过这样的情况&#xff…...

Sunshine游戏串流服务器:三步搭建你的跨平台游戏乐园

Sunshine游戏串流服务器&#xff1a;三步搭建你的跨平台游戏乐园 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏吗&#xff1f;Sunshine作为一款免费开…...

华硕笔记本优化工具G-Helper:10个实用技巧提升系统性能管理效率

华硕笔记本优化工具G-Helper&#xff1a;10个实用技巧提升系统性能管理效率 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, …...

深度模型权重初始化:原理、方法与工程实践

1. 深度模型权重初始化&#xff1a;被低估的起跑线十年前我第一次训练神经网络时&#xff0c;曾天真地认为权重初始值不过是随机数而已。直到某次在ImageNet数据集上&#xff0c;相同的网络结构因为初始化方式不同&#xff0c;最终准确率相差了12个百分点&#xff0c;我才真正理…...

线条小人动画制作 -开源项目自荐

一、核心问题及解决方案&#xff08;按踩坑频率排序&#xff09; 问题 1&#xff1a;误删他人持有锁——最基础也最易犯的漏洞 成因&#xff1a;释放锁时未做身份校验&#xff0c;直接执行 DEL 命令删除键。典型场景&#xff1a;服务 A 持有锁后&#xff0c;业务逻辑耗时超过锁…...

OpenNARS:非公理推理系统入门与实践指南

1. 项目概述&#xff1a;一个通用人工智能的“思维引擎”如果你对人工智能的认知还停留在“下围棋的AlphaGo”或者“能写诗的ChatGPT”&#xff0c;那么“OpenNARS”这个项目可能会彻底刷新你的理解。它不是一个针对特定任务的AI模型&#xff0c;而是一个试图模拟人类通用推理和…...

什么是mvcc,面试的时候怎么说

文章目录第一部分&#xff1a;底层实现的三大支柱1. 隐藏字段&#xff08;数据在哪&#xff09;2. Undo Log 版本链&#xff08;历史怎么找&#xff09;3. Read View&#xff08;看哪一条&#xff09;第二部分&#xff1a;可见性判断逻辑&#xff08;核心算法&#xff09;第三部…...

为什么92%的MCP 2026日志检测系统在POC阶段失败?资深架构师亲授4个反直觉调优原则

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么92%的MCP 2026日志检测系统在POC阶段失败&#xff1f; MCP 2026&#xff08;Multi-Channel Protocol 2026&#xff09;是新一代分布式日志采集与异常模式识别协议&#xff0c;其设计目标是在毫秒…...