keepalive和nginx高可用集群
keepalived 和 nginx 高可用集群搭建
主备模式
zyj86主机和zyj87主机安装nginx和keepalived
yum install nginx keepalived -y
systemctl enable --now nginx.service keepalived.service
主调度器配置
编辑zyj86主机(主)配置文件
vi /etc/keepalived/keepalived.conf
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.86smtp_connect_timeout 30router_id zyj86 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}}
重启keepalived
systemctl restart keepalived.service
从调度器配置
编辑zyj87主机(从)配置文件
vi /etc/keepalived/keepalived.conf
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.87smtp_connect_timeout 30router_id zyj87 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}}
重启keepalived
systemctl restart keepalived.service
zyj86 zyj87主机编写Nginx状态检测脚本
vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then# 这里需要替换成自己的nginx安装路径# 尝试重新启动nginxsystemctl restart nginx# 睡眠2秒sleep 2if [ $A -eq 0 ];then#启动失败,将keepalived服务杀死。killall keepalivedfi
fi
给脚本添加执行权限
chmod +x /etc/keepalived/nginx_check.sh
修改zyj86和zyj87主机的nginx配置文件
vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;#访问主机列表upstream myserver {server 192.168.3.88 weight=1;server 192.168.3.89 weight=1;}server {listen 80 default_server;listen [::]:80 default_server;server_name _;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {proxy_pass http://myserver;}}}
重启nginx
systemctl restart nginx
后台服务器配置
yum install httpd -y
zyj88主机
echo 88 > /var/www/html/index.html
zyj89主机
echo 89 > /var/www/html/index.html
启动服务
systemctl enable --now httpd
访问测试:
当其中一台调度器宕机后依旧可以访问
互为主备模式
zyj86主机和zyj87主机安装nginx和keepalived
yum install nginx keepalived -y
systemctl enable --now nginx.service keepalived.service
第一台调度器配置
编辑zyj86主机配置文件
vi /etc/keepalived/keepalived.conf
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.86smtp_connect_timeout 30router_id zyj86 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 # VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}vrrp_instance VI_2 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 52 # 主、备机的 virtual_router_id 必须相同priority 79 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 2222}virtual_ipaddress {192.168.3.199 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}
重启keepalived
systemctl restart keepalived.service
第二台调度器配置
编辑zyj87主机配置文件
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.3.86smtp_connect_timeout 30router_id zyj86 # 访问到主机,本机的hostname,需要修改
}vrrp_script chk_nginx {script "/etc/keepalived/nginx_check.sh" # 检测脚本位置interval 2 #(检测脚本执行的间隔)weight 2 # 权重
}vrrp_instance VI_1 {state BACKUP # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同priority 99 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.3.188 # VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}vrrp_instance VI_2 {state MASTER # 备份服务器上将 MASTER 改为 BACKUP,需要修改interface ens160 #网卡名字,使用ifconfig查看,需要修改virtual_router_id 52 # 主、备机的 virtual_router_id 必须相同priority 80 # 主、备机取不同的优先级,主机值较大,备份机值较小,一般主100从90advert_int 1 # 每隔1秒发送心跳authentication {auth_type PASSauth_pass 2222}virtual_ipaddress {192.168.3.199 #VRRP虚拟地址,也可以绑定多个虚拟ip}track_script {chk_nginx}
}
重启keepalived
systemctl restart keepalived.service
zyj86 zyj87主机编写Nginx状态检测脚本
vi /etc/keepalived/nginx_check.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then# 这里需要替换成自己的nginx安装路径# 尝试重新启动nginxsystemctl restart nginx# 睡眠2秒sleep 2if [ $A -eq 0 ];then#启动失败,将keepalived服务杀死。killall keepalivedfi
fi
给脚本添加执行权限
chmod +x /etc/keepalived/nginx_check.sh
修改zyj86和zyj87主机的nginx配置文件
vi /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;include /etc/nginx/mime.types;default_type application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf;#访问主机列表upstream myserver {server 192.168.3.88 weight=1;server 192.168.3.89 weight=1;}server {listen 80 default_server;listen [::]:80 default_server;server_name _;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {proxy_pass http://myserver;}}}
重启nginx
systemctl restart nginx
后台服务器配置
yum install httpd -y
zyj88主机
echo 88 > /var/www/html/index.html
zyj89主机
echo 89 > /var/www/html/index.html
启动服务
systemctl enable --now httpd
访问测试:
当其中一台调度器宕机后依旧可以访问
相关文章:

keepalive和nginx高可用集群
keepalived 和 nginx 高可用集群搭建 主备模式 zyj86主机和zyj87主机安装nginx和keepalived yum install nginx keepalived -y systemctl enable --now nginx.service keepalived.service主调度器配置 编辑zyj86主机(主)配置文件 vi /etc/keepalived…...
二分查找题总结
二分查找题总结 hot100搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置搜索旋转排序数组寻找旋转排序数组中的最小值寻找两个正序数组的中位数 hot100 搜索插入位置 题目链接: 35.搜索插入位置 代码: class Solution {public in…...

仕考网:公务员面试流程介绍
通知进面信息——资格审查——面试签到——抽签候考 面试形式: 面试分为结构化和无领导小组两种形式 1.在结构化面试中,当轮到某位考生时,引导员将在候考室宣布其编号,随后考生跟随引导人员前往考场入口。考生在开始考试时需回…...

(十五)SpringCloudAlibaba-Sentinel持久化到Nacos
前言 在前面我们已经将Sentinel配置的规则持久化到系统的文件中。本章节我们将Sentinel持久化到Nacos中; 传送门(Sentinel数据持久化到文件)https://blog.csdn.net/weixin_45876411/article/details/140742963 默认情况下 Sentinel 只能接收到 Nacos 推送的消息,但…...

GitHub图床
GitHub图床 文章目录 GitHub图床图床介绍Github访问GitHub手动修改hostsgithub520 加速器创建账户创建仓库创建token PicGoTypora 图床介绍 图床 存放图片的地方 为什么设置图床呢 在我认识图床之前, 有一个问题 [^放在typora上面的图片, 其实是一个链接, 并且将图片存放在本地…...

记一次高版本view-design的组件迁移到自身项目的低版本
背景 npm i -S view-design当前老项目使用view-design这个组件库,但是当我们去官网查看该组件库最新版本,竟然发现没有博主想用的image/ImagePreivew这两个基础组件 说实话,有点离谱了哈!! 自己造轮子? …...

QT运行ROS工程
文章目录 使用QT创建ROS工程项目配置修改cmake环境配置运行设置 运行 使用QT创建ROS工程 工程名字和路径 下一步(直接选择默认选项就可以)->完成 完成之后 是这样的 接下来在工作空间里面创建功能包 鼠标选中src点击右键->添加新文件 name::功能包的名字…...

电脑技巧:如何在Win11电脑上调整设置,让屏幕更加护眼?
目录 一、调整屏幕亮度 二、启用夜间模式 三、调整色彩设置 四、使用第三方护眼软件 五、保持良好的用眼习惯 总结 随着长时间使用电脑的人越来越多,护眼问题也变得越来越重要。Win11作为更新的操作系统,提供了更多的设置选项来帮助我们保护眼睛。本文将详细介绍如何在…...

【数据结构】排序算法篇二
【数据结构】排序算法篇二 1. 快速排序(hoare版本)(1)基本思想:(2)动态图解:(3)代码实现:(4)特性总结: 2. 快速…...

python进阶篇-day09-数据结构与算法(非线性结构与排序算法)
非线性结构(树状结构) 特点: 每个节点都可以有n个子节点(后继节点) 和 n个父节点(前驱节点) 代表: 树, 图...... 概述 属于数据结构之 非线性结构的一种, 父节点可以有多个子节点(后续节点) 特点 有且只有1个根节点 每个节点都可以有1个父节点及任意个子节点, 前提: 根节点除…...
线性代数基础
Base 对于矩阵 A,对齐做 SVD 分解,即 U Σ V s v d ( A ) U\Sigma V svd(A) UΣVsvd(A). 其中 U 为 A A T AA^T AAT的特征向量,V 为 A T A A^TA ATA的特征向量。 Σ \Sigma Σ 的对角元素为降序排序的特征值。显然,U、V矩阵…...
LCR 021
题目:LCR 021 解法一:计算链表长度 遍历两次,第一次获取链表长度 L(包括虚拟节点),第二次遍历到第 L-n 个节点(从虚拟节点遍历) public ListNode removeNthFromEnd(ListNode head, …...

【阿雄不会写代码】全国职业院校技能大赛GZ036第四套
也不说那么多了,要用到这篇博客,肯定也知道他是干嘛的,给博主点点关注点点赞!!!这样博主才能更新更多免费的教程,不然就直接丢付费专栏里了,需要相关文件请私聊...

Vue组件:使用$emit()方法监听子组件事件
1、监听自定义事件 父组件通过使用 Prop 为子组件传递数据,但如果子组件要把数据传递回去,就需要使用自定义事件来实现。父组件可以通过 v-on 指令(简写形式“”)监听子组件实例的自定义事件,而子组件可以通过调用内建…...

数据分析-埋点
1、数据埋点的定义 针对特定用户行为或事件进行捕获、处理何发送的相关技术及其实施过程。 2、数据埋点的原理 埋点是数据采集的重要方式。通过在页面上植入代码,监控用户行为(例:页面加载、按钮点击等)。用户一旦触发了该事件,就会根据埋点信息将相关数…...

【文心智能体】通过工作流使用知识库来实现信息查询输出,一键查看旅游相关信息,让出行多一份信心
欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 创建灵感基本配置头像名称和简介人物设定角色与目标思考路…...

服务器监控工具都是监控服务器的哪些性能和指标
服务器监控工具通常用于确保服务器及其相关服务的正常运行。这些工具可以帮助管理员快速识别并解决问题,从而减少停机时间和性能下降的风险。以下是服务器监控工具通常会监控的一些主要内容: 系统健康状态: CPU使用率 内存(RAM&…...

不小心删除丢失了所有短信?如何在 iPhone 上查找和恢复误删除的短信
不小心删除了一条短信,或者丢失了所有短信?希望还未破灭,下面介绍如何在 iPhone 上查找和恢复已删除的短信。 短信通常都是非正式和无关紧要的,但短信中可能包含非常重要的信息。因此,如果您删除了一些短信以清理 iPh…...

【skyvern 快速上手】一句话让AI帮你实现爬虫+自动化
目录 skyvern介绍主要特点工作流程 部署(重点介绍源码部署)源码部署docker快速部署 运行(基于源码)后端前端 快速使用示例总结 skyvern介绍 Skyvern 是一款利用大语言模型(LLM)和计算机视觉技术来自动化浏…...

【C++ Primer Plus习题】14.1
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "wine.h" …...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献
Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译: ### 胃肠道癌症的发病率呈上升趋势,且有年轻化倾向(Bray等人,2018&#x…...

动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...

SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...

PLC入门【4】基本指令2(SET RST)
04 基本指令2 PLC编程第四课基本指令(2) 1、运用上接课所学的基本指令完成个简单的实例编程。 2、学习SET--置位指令 3、RST--复位指令 打开软件(FX-TRN-BEG-C),从 文件 - 主画面,“B: 让我们学习基本的”- “B-3.控制优先程序”。 点击“梯形图编辑”…...