nginx实现负载均衡与例子详解

1. 什么是nginx负载均衡

随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担 。 对服务器升级费用十分高昂(F5、Radware),甚至性能再卓越的设备也不能满足当前业务量增长的需求。

针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。

nginx负载均衡就是一种是通过软件来进行解决的,基于Linux系统并且开源的负载均衡策略.

2. 一般中型网站架构图

3.实战配置nginx负载均衡

负载均衡有多种算法:

1.源地址哈希法

2.轮询法

3.随机法

4.加权轮询法

5.最小连接数法 具体算法的意思网上一大把

++3.1 负载均衡拓扑++

++3.2 如何配置++

bash 复制代码
upstream  test-server{
    server    47.106.98.90:80 weight=1;
    server    47.93.240.141:80 weight=2;
}

server {
    listen       80;
    server_name  www.test.com;
    location / {
        proxy_pass http://test-server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr; //获取转发 客户端ip
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_redirect default;
    }

}
复制代码

这段是nginx调度服务器上 nginx.conf里的设置

nginx的负载均衡主要就是以上代码。 它放在http区块里

test-server 是自定义的命名,可以自己自定。

意思是:

  1. 当用户访问 www.test.com时 , 该访问会根据权重 随机分配到47.106.98.90 或 47.93.240.141 中,端口指定80

  2. 这里用了权重的算法

++3.3 演示++

重启nginx,第一次访问http://www.test.com如图所示

第一次

第二次

在我们10次的刷新访问中,有3次是跳转到90这个服务器中,基本符合权重的算法

4. 负载均衡的服务器如何保持内容一致

++4.1 那么如果其中一个服务器挂了,会怎样呢?++

我们把2号服务器(47.93.240.141)停掉

我们刷新下页面 ,可以看到无论怎么刷新 , 都是只有1号服务器

++4.2 负载均衡的服务器内容如何保持内容一致++

① ==图片问题==

可以单独建立图片服务器 或 7牛云的 图片服务器 ,就是对象存储OSS

5.同样的,负载均衡也可以是作为堡垒机

bash 复制代码
upstream  test-server{
    server    47.106.98.99:80 weight=1;
}

server {
    listen       80;
    server_name  www.test.com;
    location / {
        proxy_pass http://test-server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr; //获取转发 客户端ip
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_redirect default;
    }

}

这样就能保护 47.106.98.99 的真实ip 不暴露 , 真正暴露的是这个堡垒机的ip 。 (比如 47.100.100.100)

域名设置方面把 域名解析到 47.100.100.100 .

6. 配置转发 https

bash 复制代码
server {
    listen       443 ssl;
    server_name  www.test.com;
    ssl_certificate  /usr/local/wap.pem;
    ssl_certificate_key  /usr/local/wap.key;
    ssl_protocols        TLSv1.2;
    ssl_ciphers          HIGH:!aNULL:!MD5;
    location / {
        limit_req zone=mylimit burst=50 nodelay;
        proxy_pass https://192.168.1.62;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect default;
    }

}
复制代码

转发 https ,需要证书 ,划下重点

bash 复制代码
ssl_certificate  /usr/local/wap.pem;
ssl_certificate_key  /usr/local/wap.key;

7.国内网址反向代理到国外https网址

bash 复制代码
server {
    listen       80;
    server_name  ai.abc.com;
    location / {
        proxy_ssl_server_name on;
        proxy_ssl_name api.openai.com;
        proxy_ssl_verify off;
        proxy_pass https://api.openai.com;
        proxy_set_header Host api.openai.com;
        proxy_set_header Accept-Encoding '';
    }

}
相关推荐
王志来137944730083 分钟前
聚焦五大核心场景:工控服务器机箱平台的垂直深耕之路
运维·服务器·python
ii_best17 分钟前
手机自动化脚本按键精灵实战:随机布局安全数字键盘的自动化输入方案
android·运维·ios·自动化·手机
鲁邦通物联网19 分钟前
充电站底层脱机DLB引擎解构:基于Linux调度的边缘计算网关并发控制实战
linux·运维·人工智能·边缘计算·边缘计算网关·5g数采·工业级边缘计算网关
便利店102439 分钟前
边界与远程:墙、洞与加密通道
运维·服务器·防火墙·acl·nat
Zhang~Ling1 小时前
Linux多线程互斥锁:从现象到原理解析
linux·运维·网络
KaiwuDB1 小时前
KaiwuDB 运维实战 03:双副本仲裁节点部署与高可用实践
运维·时序数据库·raft·kaiwudb·数据库运维·双副本高可用·仲裁节点
三言老师10 小时前
K8s集群运行时自动化运维全覆盖落地实操(下)
linux·运维·服务器·网络
躺不平的理查德12 小时前
嵌入式 Linux 系统移植与 SD 卡量产镜像制作
linux·运维·服务器
一直走下去-明13 小时前
centos7无法安装tcpreplay
linux·运维
IT大白鼠14 小时前
n8n工作流自动化平台技术架构与应用价值评估
运维·架构·自动化·n8n