Nginx详解十五:Nginx场景实践篇之负载均衡
负载均衡

GSLB(全局的负载均衡,往往是以国家为单位,或者以省为单位)

SLB

Nginx就是一个典型的SLB模型,
分为四层负载均衡和七层负载均衡

七层负载均衡可以处理应用层,如thhp信息,Nginx就是典型的七层负载均衡SLB

Nginx实现负载均衡的原理

配置语法
配置语法:upstream name {...};
默认状态:-;
配置方法:http
在/opt/app/下创建code1、code2、code3目录,并放入3个html


在/etc/nginx/conf.d/下准备好三个conf




检查配置语法并重载
nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf


在另一台服务器上配置一个conf


每次请求都会不一样,且轮流分配(轮询),此时如果有一台机器挂了,如server2挂了,那么则会在server1和server3之间不断轮询,不再访问server2

upstream举例
upstream backend{
server backend1.example.com weight=5;
server backend1.example.com:8080;
server unix:/tmp/backen3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
后端服务器在负载均衡调度中的状态



不管如何刷新都只有server3提供服务,即8001和8002不服务

把访问8003的请求drop掉:iptables -I INPUT -p tcp --dport 8003 -j DROP

服务端会把请求转到server2上,后面不管怎么刷新,都会访问server2

清理掉iptable规则再访问:iptables -F

又变回server3,且一直是server3

轮询策略与加权轮询
调度算法

加权轮询:以下配置为,当有7个请求过来的时候,会有5和请求分配给8002


ip_hash:同一个IP永远只访问一个后端,解决身份验证失效的问题


不管怎么刷新,都只定位到一台服务器上

url_hash(1.7.2之后的版本支持):
配置语法:hash key [consistent];
默认状态:-;
配置方法:upstream


此时不会执行轮询,访问哪一个url,hash绑定到一个后端服务后,就永远只访问那一台机器
Nginx详解十五:Nginx场景实践篇之负载均衡的更多相关文章
- Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置
一.静态资源WEB服务 1.静态资源类型:非服务器动态运行生成的文件 2.静态资源服务场景-CDN 假设静态资源存储中心在云南,用户在北京去请求一个文件,那么就会造成一个传输的延时,而如果Nginx同 ...
- Nginx详解十六:Nginx场景实践篇之缓存服务
缓存类型: 服务端缓存 代理缓存 客户端缓存 Nginx代理缓存 配置语法 使用之前需要先定义一个proxy_cache_path配置语法:proxy_cache_path path [levels= ...
- Nginx详解十四:Nginx场景实践篇之代理服务
代理的作用 Nginx代理 正向代理 反向代理 正向代理和反向代理的区别:代理的对象不一样 正向代理代理的对象是客户端,反向代理代理的对象是服务端 反向代理: 配置语法:proxy_pass URL; ...
- Nginx详解十三:Nginx场景实践篇之防盗链
防盗链: 目的:防止资源被盗用 防盗链设置思路 首要方式:区别哪些请求是非正常的用户请求 基于http_refer防盗链配置模块(判断refer(上一步的链接)信息是否为允许访问的网站) 配置语法:v ...
- Nginx详解十一:Nginx场景实践篇之Nginx缓存
浏览器缓存: HTTP协议定义的缓存机制(如:Expires.Cache-control等) 当浏览器第一次请求的时候,浏览器是没有缓存的 第二次请求开始就有缓存了 校验过期机制 配置语法-expir ...
- Nginx详解十八:Nginx深度学习篇之Rewrite规则
Rewrite规则可以实现对url的重写,以及重定向 作用场景: 1.URL访问跳转,支持开发设计,如页面跳转,兼容性支持,展示效果等 2.SEO优化 3.维护:后台维护.流量转发等 4.安全 配置语 ...
- Nginx详解十七:Nginx深度学习篇之动静分离
动静分离:通过中间件将动态请求和静态请求分离 作用:分离资源,减少不必要的请求消耗,减少请求延时 动静分离还有个好处就是,当动态请求的后端服务出问题了,只会影响动态的部分,静态资源不影响,照样加载 如 ...
- Nginx详解八:Nginx基础篇之Nginx请求限制的配置语法与原理
Nginx的请求限制: 连接频率的限制:limit_conn_module 配置语法:limit_conn_zone key zone=name:size;默认状态:-配置方法:http 配置语法:l ...
- Nginx详解七:Nginx基础篇之Nginx官方模块
Nginx官方模块 --with-http_stub_status_module:Nginx的客户端状态,用于监控连接的信息,配置语法如下:配置语法:stub_status;默认状态:-配置方法:se ...
随机推荐
- 【blog】Markdown的css样式推荐
参考博客 分享一款Markdown的css样式:https://www.cnblogs.com/zhangjk1993/p/5442676.html 美化Markdown输出的HTML文档:http: ...
- VMware 11安装Mac和Linux
VMware 11安装Mac OS X 10.10_百度经验 https://jingyan.baidu.com/article/ff411625b9011212e48237b4.html?qq-pf ...
- dom解析xml随笔
1.dom解析jar包准备: dom解析需用到dom4j的jar包,比如我在项目中用到的的是dom4j-1.6.1jar,因为项目用的是MAVEN,所以可直接到maven中央库去搜索相关pom坐标配置 ...
- 20165337学习基础和C语言基础调查
20165337学习基础和C语言基础调查 你有什么技能比大多人(超过90%以上)更好? 讲道理我感觉我自己没有什么能比90%以上的人都做得好的技能,我就瘸子里面拔将军挑一个我自认为还不错的技能吧. 我 ...
- python基础-----函数/装饰器
函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 函数的优点之一是,可以将代码块与主程 ...
- springboot中spring.profiles.active来引入多个properties文件 & Springboot获取容器中对象
1. 引入多个properties文件 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据, ...
- NOIP2018 20天训练
Day 0 2018.10.20 其实写的时候已经是Day 1了--(凌晨两点) 终于停课了,爽啊 get树状数组+线段树(延迟标记) 洛谷:提高组所有nlogn模板+每日一道搜索题(基本的图的遍历题 ...
- Django 的系统时区设置 RPC
PRC Deprecated +08:00 +08:00 Link to Asia/Shanghai settings.py 文件的设置项: TIME_ZONE = 'PRC' 来源 ...
- MySQL数据库之auto_increment【转】
一.概述 在数据库应用中,我们经常需要用到自动递增的唯一编号来标识记录.在MySQL中,可通过数据列的auto_increment属性来自动生成.可在建表时可用“auto_increment=n”选项 ...
- python性能分析之line_profiler模块
line_profiler使用装饰器(@profile)标记需要调试的函数.用kernprof.py脚本运行代码,被选函数每一行花费的cpu时间以及其他信息就会被记录下来. 安装 pip3 insta ...