负载均衡与keepalived高可用
1. ✅负载均衡处理用户的流程处理静态资源用户 -- |bdns解析 -- 域名 --- lb ip上.通过三次握手与负载均衡80端口建立连接.发出http请求报文:GETURI,Host头信息,UA.到达负载均衡lb,80端口,http区域,server区域多个server请求的Host信息与80端口server的server_name进行匹配匹配成功对应站点处理,失败默认或按顺序处理.location/ proxy_pass转发,转发到对应的分组中或ip.proxy_pass的时候,带上Host头记录域名,XFF头,XRI记录ip.lb -- web三次握手,与web80端口.发出http请求,GETURI,Host头信息,UA,XFF头,XRI记录ip.到达web服务器,80端口,与nginx,http区域 server匹配根据请求的Host头与80端口的server中server_name 匹配匹配成功对应站点处理,失败默认或按顺序处理.对应的站点处理,静态站点目录uri直接返回给用户web --- lbIb --- 用户用户拿到http响应.处理动态资源用户 -- 负载均衡lbdns解析 -- 域名 --- 负载均衡lb ip上.三次握手与负载均衡80端口建立连接.发出http请求报文:GET/POSTURI,Host头信息,UA.到达负载均衡lb,80端口,与nginx,http区域 server匹配.根据请求的Host信息与80端口server的server_name进行匹配匹配成功对应站点处理,失败默认或按顺序处理.location/ proxy_pass转发,转发到对应的分组中或ip.proxy_pass的时候,带上Host头记录域名,XFF头,XRI记录ip.Ib -- web三次握手,与web80端口.发出http请求,GETURI,Host头信息,UA,XFF头,XRI记录ip.到达web服务器,80端口,与nginx,http区域 server匹配根据请求的Host头与80端口的server中server_name 匹配匹配成功对应站点处理,失败默认或按顺序处理.对应的站点处理转发给9000端口,带着php页面绝对路径(站点目录uri)php处理:解析运行php文件.php -- ngx:处理结果.web --- lb 请求web -- lbIb --- 用户用户拿到http响应.2. ✅负载均衡轮询算法算法说明应用轮询rr轮询nginx默认算法加权轮询wrr轮询通过修改权重让服务器增加或减少请求ip哈希ip_hash对客户端ip地址进行hash计算只要ip地址一样就会访问相同的web节点容易负载不均可以解决会话保持(登录保持)问题url哈希url_hash对客户端请求的url进行哈希访问相同的url就会访问相同的web节点缓存服务器最小连接数least_conn动态算法根据连接情况转发哪台web连接数最小就发给哪台最小连接时间least_time动态算法根据连接情况转发哪台web响应快就转发给哪台一致性哈希算法hast $remote_addr consistent;ip_hash的加强版智能版本增加或减少web节点原来的客户端还会访问相同的web节点2.1. ☀️加权轮询通过修改权重让服务器增加或减少请求upstream lb_pools { server 10.0.0.7:80 weight3; server 10.0.0.8:80 weight1; } server { listen 80; server_name lb.zbl.cn; #error_log #access_log location / { proxy_pass http://lb_pools; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-Ip $remote_addr; } }2.2. ip哈希对客户端ip地址进行hash计算只要ip地址一样就会访问相同的web节点upstream lb_pools { ip_hash; server 10.0.0.7:80 weight3; server 10.0.0.8:80 weight1; }2.3. url哈希upstream lb_pools { hash $request_uri; server 10.0.0.7:80 weight3; server 10.0.0.8:80 weight1; }3. 负载均衡模块指令补充upstream中server中指令说明weight权重max_fails认为这个节点无法访问失败次数默认是1可以设置3次左右即可fail_timeout默认是10秒失败后10s后再次测试backup备用节点其他所有节点挂了才会启动雪崩某个机器挂了导致其他机器也跟着挂了4. ✅HA高可用服务4.1. 概述高可用:HA HighAvailablity --keepalivedkeepalived生成vip虚拟ipdns解析到这个vip地址即可选型说明keepalived活着高可用软件负载使用一些不涉及数据服务起初开发出来是给lvs.heartbeat心跳 高可用软件涉及数据库存储数据相关可以用heartbeat drbd商业高可用软件RoseHA...略...4.2. 原理keepalived是基于VRRP协议实现高可用.VRRP虚拟路由冗余协议最开始是给网络设备实现高可用目前keepalive实现vrrp协议通过vrrp实现高可用.分为主备一般是2个节点主备之间通过vrrp协议发送数据包沟通.主给备定期发送数据包备收到数据包表示主还活着备无法收到数据包表示主挂了备接管用户请求流量.vrrp协议使用组播的ip 224.xx.xx.xx4.3. 急速上手指南高可用环境准备需要安装的服务lb01nginxkeepalivedlb02nginxkeepalived4.4. keepalived配置文件详解! Configuration File for keepalived #全局定义部分 global_defs { #每一个keepalived的名字,当前网络中唯一. router_id lb01 } #vrrp实例配置部分 用于配置VIP 设置主备 virtual_ipaddress #vrrp设置名字. #vrrp实例名字 在同1对主备之间要一致. 在当前keepalived软件中唯一. vrrp_instance vip_3 { #主/备 MASTER主 BACKUP备 大写 state MASTER #指定网卡网卡 interface ens33 #同1对主备之间这个id要一致. virtual_router_id 51 #优先级 数字越大优先级越高 设置建议: 主备 100 50 相差50 priority 100 #心跳间隔 多久发送一次vrrp数据包 advert_int 1 #授权与认证,保持默认即可. 对数据包加密. authentication { #简单认证 auth_type PASS #1111 auth_pass 1111 } #设置vip※※※※ virtual_ipaddress { #label 设置了别名 10.0.0.3 dev ens33 label ens33:0 } }4.5. 安装配置keepalived(主)yum -y install keepalived cp /etc/keepalived/keepalived.conf{,.bak} global_defs { router_id lb01 } vrrp_instance vip_3 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3 dev ens33 label ens33:0 } }4.6. 安装配置keepalived(备)yum -y install keepalived cp /etc/keepalived/keepalived.conf{,.bak} global_defs { router_id lb02 } vrrp_instance vip_3 { state BACKUP interface ens33 virtual_router_id 51 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3 dev ens33 label ens33:0 } }4.7. 启动服务systemctl enable keepalived --now4.8. 验证keepalived每1秒发送心跳报文关闭主节点keepalived抓包看报文5. ✅nginxkeepalived高可用5.1. ✂️脑裂故障脑裂/裂脑现象主备都有vip原因备认为主挂了接管资源生成VIP实际上主没有挂仍有VIP开启防火墙selinuxkeepalived配置物理线路网络介质监控监控只要备节点有VIP就告警解决找个第三方机器在这个机器上执行ssh root10.0.0.6 hostname -I 检查是否存在VIP监控备节点只要有VIP远程控制主节点只要备节点认为主挂了就让他真的挂了只能设备监控脑裂或主备切换脚本在keepalived备节点执行监控脚本 脚本流程步骤 1.统计ip a | grep 10.0.0.3 | wc -l 2.判断如果等于1则发出警告邮件使用echo替代5.2. 案例: keepalived基于主机高可用软件问题keepalived只会在主机挂了网络断开后才会进行主备切换默认情况下keepalived不会监控某个服务项目目标某个服务关闭了keepalived就进行主备切换项目步骤书写脚本过滤服务进程数端口数量检查是否允许curl/wget然后在脚本中进行判断如果服务没有运行则关闭keepalived服务修改keepalived配置文件通过keepalived调用这个脚本监控nginx创建使用脚本函数在实例中调用5.3. 自定义监控脚本注意脚本名字不要包含要监控的服务名字#!/bin/bash ############################################################## # File Name:check_lb.sh # Version:V1.0 # Author:zbl # Organization:zhubaolin.blog.csdn.net # Desc: ############################################################## #1.vars countps -ef | grep nginx | wc -l #2.stop keepalived if [ ${count} -eq 1 ];then systemctl stop keepalived fi添加执行权限chmod x /server/scripts/check_lb.sh5.4. keepalived调用监控脚本#/etc/keepalived/keepalived.conf global_defs { router_id lb01 } vrrp_script check_lb.sh { script /server/scripts/check_lb.sh interval 2 weight 1 user root } vrrp_instance vip_3 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3 dev ens33 label ens33:0 } track_script { check_lb.sh } }重启服务systemctl restart keepalived5.5. 验证关闭nginx验证是否自动关闭keepalived6. ✅wordpress接入负载均衡6.1. 将博客域名host解析到VIP地址10.0.0.3 blog.zbl.cn

相关新闻

彻底掌握Java 8日期时间API:从基础概念到实战应用

彻底掌握Java 8日期时间API:从基础概念到实战应用

彻底掌握Java 8日期时间API:从基础概念到实战应用 【免费下载链接】learn-java8 项目地址: https://gitcode.com/gh_mirrors/lea/learn-java8 Java 8引入的全新日期时间API是对传统java.util.Date和Calendar的重大改进,解决了线程不安全、API设计…

2026/5/17 11:58:49 阅读更多 →
【限时免费】 claudecodeui:AI编程助手可视化界面

【限时免费】 claudecodeui:AI编程助手可视化界面

claudecodeui:AI编程助手可视化界面 【免费下载链接】claudecodeui Claude Code UI is a web and mobile friendly app UI for Claude Code CLI that allows you to view all Claude code sessions and projects and access them remotely 项目地址: https://gitc…

2026/5/17 12:39:52 阅读更多 →
ansible剧本与变量

ansible剧本与变量

1. ansible剧本注意事项注意对齐,2个空格,不能使用tab剧本以yml或yaml结尾1.1. 第一个剧本- hosts: alltasks:- name: 01.打开冰箱门shell: echo 01.open >/tmp/lidao.txt- name: 02.大象放进去shell: echo 02.put >>/tmp/lidao.txt- name: 03.…

2026/5/17 12:39:51 阅读更多 →

最新新闻

联想拯救者BIOS高级设置一键解锁工具:3分钟开启隐藏功能终极指南

联想拯救者BIOS高级设置一键解锁工具:3分钟开启隐藏功能终极指南

联想拯救者BIOS高级设置一键解锁工具:3分钟开启隐藏功能终极指南 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh…

2026/7/3 22:48:05 阅读更多 →
【小白也能轻松玩转龙虾】虾壳云一键部署全程图文对照,新手跟着操作零难度(附最新安装包)

【小白也能轻松玩转龙虾】虾壳云一键部署全程图文对照,新手跟着操作零难度(附最新安装包)

OpenClaw(小龙虾)Windows 一键部署实操手册|十分钟搭建专属本地数字员工 适配平台:Windows 10/11(64 位)|零基础友好|全可视化界面|无编程门槛 当下热度较高的开源 AI 智…

2026/7/3 22:46:05 阅读更多 →
WzComparerR2:深入解析冒险岛WZ文件资源的专业提取器

WzComparerR2:深入解析冒险岛WZ文件资源的专业提取器

WzComparerR2:深入解析冒险岛WZ文件资源的专业提取器 【免费下载链接】WzComparerR2 Maplestory online Extractor 项目地址: https://gitcode.com/gh_mirrors/wz/WzComparerR2 WzComparerR2是一款专业的冒险岛游戏资源提取器,专门用于解密、分析…

2026/7/3 22:46:05 阅读更多 →
QtScrcpy终极指南:如何在电脑上免费流畅控制安卓手机

QtScrcpy终极指南:如何在电脑上免费流畅控制安卓手机

QtScrcpy终极指南:如何在电脑上免费流畅控制安卓手机 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy …

2026/7/3 22:44:05 阅读更多 →
LiteLLM代理配置优化:解决DeepSeek API Token异常消耗问题

LiteLLM代理配置优化:解决DeepSeek API Token异常消耗问题

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 如果你正在使用 Codex 或类似的开源 AI 编程助手,并且通过 LiteLLM 等代理工具接入了 DeepSeek 的 API,那么…

2026/7/3 22:44:05 阅读更多 →
缠论自动化分析革命:ChanlunX让技术分析从复杂到简单

缠论自动化分析革命:ChanlunX让技术分析从复杂到简单

缠论自动化分析革命:ChanlunX让技术分析从复杂到简单 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 你是否曾在K线图中迷失方向,面对缠论复杂的笔段划分和中枢识别感到无从下手&a…

2026/7/3 22:40:03 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻