Nginx负载均衡

文章目录

1. 负载均衡概念介绍

负载均衡概念 :负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
负载概念简略:将工作任务分担到几台几十台甚至几百台服务器上以提高处理能力,分担网站压力,还有个叫cdn的技术也能实现减少网站压力

本文使用Nginx反向代理来实现负载均衡,下面是Nginx负载均衡的支持类型:

轮询、权重、ip_hash、url_hash、最小连接数、最小时间数等

其中如果要暂时保持长链接可使用ip_hash或url_hash模式(面试被问到了,就这一句话)

以下为本次实现负载均衡的架构

2.负载均衡环境搭建

本次系统使用的是乌班图ubantu-16.04.03.iso

准备共三台(u1,u2,u3),u1一台为前端服务器,u2,u3两台为后端服务器

分别在三台乌班图上安装Nginx,安装Nginx命令为

c 复制代码
apt install nginx

修改u1 的 /etc/nginx/nginx.conf文件设置反向代理,http域下的无关参数太多了,我嫌麻烦就全删了,只保留了必要的反向代理配置文件

c 复制代码
http {

upstream nginx_php{
   # 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2
   server 192.168.100.137:80 weight=100 max_fails=2 fail_timeout=30s;
   server 192.168.100.138:80 weight=200 max_fails=2 fail_timeout=30s;
   # 这里的IP请配置成你WEB服务所在的机器IP
}

server {
        listen 80;
        server_name localhost;
        index index.php index.html;
        root html;
        location / {
                # 配置一下index的地址,最后加上index.ftl。
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                # 请求交给名为nginx_boot的upstream上
                proxy_pass http://nginx_php;
        }
}



}

其中的

c 复制代码
upstream nginx_php{
   # 30s内检查心跳发送两次包,未回复就代表该机器宕机,请求分发权重比为1:2
   server 192.168.100.137:80 weight=100 max_fails=2 fail_timeout=30s;
   server 192.168.100.138:80 weight=200 max_fails=2 fail_timeout=30s;
   # 这里的IP请配置成你WEB服务所在的机器IP
}

两个server后的为u2,u3的ip,目的是代理它们。

c 复制代码
 proxy_pass http://nginx_php;

指向的是upstream nginx_php

接着分别修改u2,u3的/var/www/html/index.nginx-debian.html网页文件,来区分显示

u2

u3

重启u1的Nginx的服务,并访问u1链接,查看轮询负载均衡效果

c 复制代码
systemctl restart nginx.service //重启

第一次访问u1被指向了u2,我们多刷新几次

第二次指向了u3,而第四次则又指向了u2,至此一个简单的nginx负载均衡环境有已实现

相关推荐
苏生Susheng41 分钟前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
2601_962304911 小时前
把出片接进自动化流水线:2026 年批量 AI 视频生成工具的脚本契约与同类项目对照
运维·人工智能·自动化
Ruiery1 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
snow@li1 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
实战派K8S&DB1 小时前
《基于 Dify + FastAPI + PyTiDB 搭建大模型驱动的 TiDB 智能运维 Agent》
运维·数据库·分布式·云原生·tidb·fastapi
苏生Susheng2 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施
名字还没想好☜3 小时前
Docker buildx 多架构镜像实战:一次构建 amd64+arm64,告别 exec format error
运维·docker·eureka·架构·kubernetes
墨着染霜华3 小时前
SpringCloud Gateway线上Nginx代理后自定义下划线请求头丢失(app_name/app_version获取不到)完美解决
nginx·spring cloud·gateway
智购无人售货机厂家3 小时前
2026自动售货机软硬件版本管理策略:从版本号规范到兼容性矩阵的工程实践~YH
运维·服务器·人工智能·单片机·嵌入式硬件·线性代数·矩阵
bksczm4 小时前
Linux 五种 I/O 模型与多路复用详解
运维·服务器·网络