网站首页 > 精选教程 正文
第二天。。小废给大废买了杯奶茶。。
大废:这才差不多,讲了这么多早就应该给我奶茶了,吧唧吧唧。。
大废:那今天就来讲讲Nginx是如何实现负载均衡吧。
二废:这个我知道,我看过Nginx的配置,nginx通过upstream下的配置,对配置的服务器进行负载均衡,具体配置如下*。
http {
listen 80;
server_name localhost;
upstream webservers {
ip_hash;
server 192.168.0.1:8080;
server 192.168.0.2:8080;
}
...
}
其中,listen是访问nginx的端口,server_name是访问路径,这里默认是 localhost,端口默认是80。server是两台应用服务器,由Nginx通过负载均衡策略来选择访问应用服务器,做到了应用负载。
大废:二废看来昨天偷偷做功课了呀。这样的架构设计看起来是可以支撑业务的快速增长,但所有的访问都会直接请求服务器,这显然是不太安全,因此一般也会在软负载均衡后面,增加一个网关。这样所有流量经过Server时都要先去网关进行鉴权,除了鉴权外,网关还可以起到协议转换、流量控制等功能。
小废:我看书上介绍Nginx还可以对静态资源进行处理,这是怎么做到的呀
大废:没错,如果应用服务器有一些静态资源,后端服务器每次都要从磁盘加载文件会比较影响性能,而Nginx的proxy cache功能能够提升对静态资源的处理能力。
location /static/images/ {
root /home/www/;
charset utf-8;
}
注:实际上静态资源在服务器上的位置为:/home/www/static/images/hello.png
这样配置后,如此访问便可以访问到对应的静态资源 http://localhost:8080/static/images/hello.png 此时Nginx作为了一台静态资源服务器。
location /static/images/ {
alias /home/www;
charset utf-8;
}
注:这样访问的服务器上的位置为:/home/www/hello.png
小废:这样是不是就做到了动静分离。那Nginx如何保证高可用呢?
大废:由于Nginx在上面整个架构中作为流量的入口,如果Nginx不能正常工作或服务器宕机,将导致整个服务不可用。因此可以通过keepalived的机制来保证Nginx双活。
大废:架构一定要根据实际业务来设计,脱离业务的设计是没有意义的,对于业务量不大的系统,用Nginx作为负载均衡是完全够用的。当然,对于大型互联网企业则需要调整一些设计,比如静态资源应该部署在CDN上, CDN 会自动选择离用户最近的节点返回给用户,同时,流量很大时可以选择DNS负载均衡解析域名,大概如下图。
总结:
轮询策略配置:
在配置文件upstream中,ip_hash是指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,可以解决session不能跨服务器的问题。同时,还有以下其他几种轮询策略,依次介绍如下。
- 轮询,默认策略,不需要加任何配置,是upstream模块默认的负载均衡策略,会将每个请求顺序分发到不同的后端服务器上。
- 权重(weight):指定轮询的访问权重,用于后端服务器性能不均时的策略。
- upstream webservers {
server 192.168.0.1:8080 weight=7;
server 192.168.0.2:8080 weight=3;
} - ip_hash(依据ip分配):指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,可以解决session不能跨服务器的问题。
- least_conn(最少连接):将请求转发给连接数较少的服务器。
upstream webservers {
least_conn;
server 192.168.0.1:8080 weight=7;
server 192.168.0.2:8080 weight=3;
}
6. fair:按照服务器端的响应时间来分配请求,响应时间短的优先分配。
upstream webservers {
fair;
server 192.168.0.1:8080 weight=7;
server 192.168.0.2:8080 weight=3;
}
- 上一篇: 7、Nginx+Apache环境配置——动静分离
- 下一篇: 负载均衡架构举例说明
猜你喜欢
- 2024-09-24 负载均衡架构举例说明
- 2024-09-24 7、Nginx+Apache环境配置——动静分离
- 2024-09-24 高性能web服务器Nginx反向代理、动静分离和负载均衡
- 2024-09-24 Nginx + Tomcat 动静分离实现负载均衡,你知道多少?
- 2024-09-24 Nginx配置负载均衡与动静分离
- 2024-09-24 使用Nginx实现动静分离
- 2024-09-24 nginx的动静分离,你真的懂吗?
你 发表评论:
欢迎- 最近发表
-
- java 服务之间调用(rpc)(java实现服务器)
- Java机器学习库(Java ML)(二、聚类)
- 「Java库」如何使用优秀的加密库Jasypt来保护你的敏感信息?
- GitHub精选 | 轻量级Android和Java日志库
- Java面试官:MySQL binlog 有什么作用?主从延迟的了解么?
- Excel函数核武器库:50个高频场景公式——第二弹
- Excel函数核武器库:50个高频场景公式——第一弹
- Spring Cache高性能缓存库 - Caffeine简介
- Java通过Kafka Streams库来实现数据流处理
- 一连问了好几个大佬,竟然都不知道Redis为什么默认16个数据库?
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)