Nginx-负载均衡

章节目录

  • 什么是负载均衡
  • 使用负载均衡要解决的问题
  • 基于LVS的中间件架构
    • GSLB
    • SLB
    • 四层负载均衡和七层负载均衡
    • Nginx 负载均衡
    • 配置语法
    • 负载均衡配置实战

什么是负载均衡

当用户请求量增加至单台服务器不能及时处理的时候
即(单台服务器可接受能够建立连接的并发请求超过上限时),
那么就需要横向扩容应用服务器来多当前场景下的高并发请求做处理,
负载均衡正是将高并发请求分流至水平节点上不同应用服务器的一种技术。

负载均衡要解决的问题

提升服务的高可用性,容灾,提升应用服务器对并发请求的处理能力。

基于LVS的中间件架构

GSLB-全局负载均衡
如下图所示:

img_2eb22045ce0971ead6bb399d7bd71ce3.png
GSLB-全局负载均衡

适用场景:跨国机房应用服务部署
如北京张三访问应用服务器,则请求先到达本地的调度节点,
调度节点返回应用服务器某服务的调用地址,
客户端再去请求对应的应用服务器。
指路

SLB
如下图所示:

img_34fc49426a8c56c1580ffa6486649545.png
SLB

调度节点转发客户请求至真正的应用服务器,
应用服务器再将响应数据返回至调度节点,调度节点再将数据返回给客户端。
从图中可以看出调度节点与服务节点在统一区域内,这样可以应对高并发请求的场景。

四层负载均衡和七层负载均衡

四层负载均衡

传输层负载均衡,TCP/IP层负载均衡,进行数据包转发,性能更高

七层负载均衡

应用层负载均衡 http nginx采用的就是七层负载均衡

Nginx 负载均衡

如下图所示:


img_213581865baa807976a0a136b70694b4.png
Nginx 负载均衡
Nginx 负载均衡采用了proxy_pass 方式将请求代理至一组虚拟的服务池,upstream server ,用户请求过来时,通过一定的负载策略,将请求分发至服务池中的某一个应用服务器中。

配置语法

语法:upstream name {}
默认:-
可配置上下文:http
注意配置到 server 层以外,且必须配置在http中

配置实战

1.新建文件夹 分别存储不同应用服务上的同名静态文件

1.cd /opt/app/ 
2.mkdir code1 code2 code3
3.cd code1 
4.touch index.html
5.vi index.html
<html>
   <title>page1</title>
  <body>
    it is page1
  </body>
</html>
同上在code2 code3 中同样建立index.html 并且index.html中的内容 page1 更改为page2、page3 。

2.新建应用服务器配置文件

1.cd /etc/nginx/conf.d
2.touch server1.conf server2.conf server3.conf
3.vi server1.conf 
server {
   listen 8081;
   server_name eshop-cache04;
   location / {
     root /opt/app/code1;
     index index.html index.htm;
   }
}
4.vi server2.conf
server {
   listen 8082;
   server_name eshop-cache04;
   location / {
     root /opt/app/code2;
     index index.html index.htm;
   }
}
5.vi server3.conf
server {
   listen 8083;
   server_name eshop-cache04;
   location / {
     root /opt/app/code3;
     index index.html index.htm;
   }
}

3.配置upstream&代理请求至虚拟服务池upstream 中

1.touch upstream_test.conf
2.vi upstream_test.conf
upstream testUpstream {
   server eshop-cache04:8081;
   server eshop-cache04:8082;
   server eshop-cache04:8083;
}

server {
  listen 80;
  server_name eshop-cache04;

  location / {
     proxy_pass http://testUpstream;//虚拟服务池名字
    # include proxy_params;
  }
}

4.检查配置文件正确性,重新加载配置文件

1.nginx -t -c /etc/nginx/conf.d
2.nginx -s reload

6.浏览器请求,验证结果

img_7fbf30ec9097c41aca5ecbdb3ff599db.png
page1

img_978505f63eba39545e80b1ec57d514fb.png
page2
img_a3982676f1b3c0efd590362cdfa61502.png
page3

可以观察到,同样的请求显示的页面内容是不一致的,所以负载均衡配置成功。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/649977

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。