nginx的基础应用(续)
nginx的基础应用(续)
一、简介
上一篇文章我们介绍了nginx的基础应用,其中讲到了nginx作为代理服务器的使用,但是漏了一个重要的,也是使用非常普遍的特性——负载均衡。今天,我们将这段内容补上。
通过多个实例进行负载均衡是一个比较常用的技术,它用来是资源利用最大化、提高通过率、降低延迟响应、确保容灾等。
二、负载均衡的方法
- 轮询——应用服务器间的请求按照轮询的方式分配;
- 最小连接数——下一个请求将会分配给当前连接数最小的服务器;
- ip哈希——以一种哈希的方式决定下一个请求分配到哪个服务器上(基于客户端的ip进行哈希)。
三、默认的负载均衡配置
nginx最简单的负载均衡配置如下:
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen ;
location / {
proxy_pass http://myapp1;
}
}
上面的例子中,有3个相同的实例运行在srv1-srv3上。当负载均衡的方法没有特别指定时,它将默认使用轮询的方式。所有的请求都会被代理到服务组myapp1上,nginx将应用HTTP的负载均衡分配请求。
nginx的反向代理实现包含负载均衡的种类:HTTP、HTTPS、FastCGI、uwsgi、SCGI和缓存等。
如果要用HTTPS的负载均衡,只需要使用HTTPS的协议即可。
当为FastCGI、uwsgi、SCGI和缓存设置负载均衡时,使用相应的fastcgi_pass、uwsgi_pass、scgi_pass和memcached_pass的指令集即可,这里不做详细介绍。
四、最小连接负载均衡
另外一个负载连接方式是最小连接。最小连接的方式可以使应用实例间的负载更公平,例如在一些请求需要花费更长时间去完成的情况。
使用最小连接的方式,nginx不会将过多的请求分配到一个比较忙的应用服务上,它将把请求分配到相对不忙的应用服务上。
最小连接的负载均衡方式在nginx中的配置如下,它作为服务组中的一个配置出现:
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
五、会话保持的方式
在介绍这种方式之前,大家先记住,使用轮询和最小连接的负载均衡方式,同一客户端的下一个请求有可能分配到不同的应用服务上。这两种方式不能保证同一客户端的请求总是分配到同一个服务上。
如果需要将一个客户端绑定到一个特殊的应用服务上,换句话说,使客户端的会话“粘连”或“保持”,就要使用“ip-hash”的负载均衡机制了。
使用ip-hash,客户端的ip用来做哈希的key,决定着选择服务组中的哪个应用服务这个客户端的请求。这种方法决定了相同客户端的请求总是分配给相同的服务,除非这个服务不可用了。
配置ip-hash的负载均衡,只需要将ip-hash指令添加到服务组(upstream)中,如下:
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
六、负载均衡的权重
通过使用服务权重,可以进一步影响负载均衡的逻辑。上面的例子中,没有配置权重的意思是,所有指定的服务将被看做有相同的权重。
采用轮询的方式,如果有足够的请求,并且请求通过统一的方式处理并且快速的完成的情况下,它仍然意味着在服务之间或多或少的公平的分配。
当weight参数为一个服务指定时,它将是负载均衡过程中的一部分。
upstream myapp1 {
server srv1.example.com weight=;
server srv2.example.com;
server srv3.example.com;
}
上面的配置中,每5个应用请求将分配如下:3个请求分配个srv1,1个请求分配给srv2,另一个请求分配给srv3。在nginx最近的版本中,在最小连接和ip-hash的负载均衡方式中使用权重(weight)也是有可能的。
七、健康检查
nginx的反向代理包括带内(或被动)的健康检查。如果一个服务的响应是失败的,nginx将会标记这个服务是失败的,并且在短暂的时间内,避免为下一个请求选择这个服务。
max_fails指令设置是,在fail_timeout时间内,尝试和这台服务连续通信失败的次数。默认情况下,max_fails设置为1,当设置为0时,这个服务的健康检查将失效。fail_timeout参数定义了这个服务多长时间会被标记为失效,在服务失败的fail_timeout间隔后,nginx使用活的客户端请求优雅的探测服务,如果探测成功了,这个服务将会标记为成功的。
至此,nginx用的最多的,也是最常用的部分——负载均衡 讲完了,欢迎大家拍砖~~
nginx的基础应用(续)的更多相关文章
- nginx 的基础配置[转]
nginx 的基础配置 分类: 工具软件2013-11-13 23:26 11人阅读 评论(0) 收藏 举报 目录(?)[-] 管理配置文件 全局配置 虚拟机server配置 location配置 ...
- nginx的基础应用
nginx的基础应用 一.简介 今天我们将介绍一些nginx的简单应用,启动.停止nginx,重载nginx的配置,nginx配置文件的格式,如何配置nginx服务静态资源,如何配置nginx作为反向 ...
- Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性
简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...
- Nginx——1.基础知识
Nginx——1.基础知识 作为高速.轻量.高性能等优点集于一身的服务器,Nginx在近些年迅速发展并不断扩大市场份额,甚至在最近其市场份额一举超过微软的IIS,跃身到第二位,仅次于Apache. 但 ...
- nginx实现基础web
目录 nginx实现基础web 什么是lnmp lnmp架构如何工作 Nginx与Fast-CGO详细工作流程 LNMP环境准备 一,部署LNMP 1.使用nginx官方源 2.创建nginx用户 3 ...
- Nginx web基础入门
目录 Nginx web基础入门 如何升级nginx或者添加功能 使用systemd管理nginx nginx相关配置文件 nginx的配置文件详解 日志格式 game日志记录实战 日志切割 手写虚拟 ...
- Linux架构之Nginx Web基础1
第41章 Nginx Web基础入门 41.1 Nginx部署 41.1.1 Nginx的安装方式 源码编译 官方仓库 epel仓库 优点 规范 安装简单 安装简单 便于管理 配置易读 缺 ...
- Nginx 常用基础模块
目录 Nginx 常用基础模块 Nginx日志管理 nginx日志切割 Nginx目录索引 Nginx状态监控 Nginx访问控制 Nginx访问限制 Nginx 请求限制配置实战 Nginx Loc ...
- Nginx Web 基础入门
目录 Nginx Web 基础入门 Nginx快速安装 两种方式部署Nginx 如何升级nginx或者添加功能 使用systemd管理nginx nginx相关配置文件 nginx的配置文件详解 虚拟 ...
随机推荐
- 使用Hibernate Tools从数据库逆向生成Hibernate实体类
自动生成model.java.*.hbm.xml 甚至是dao.java.*.ddl.*.html等等.一般也就如下三种方式1. MyEclipse 自带插件2. jboss的 hibernate-t ...
- LeetCode 107. Binary Tree Level Order Traversal II (二叉树阶层顺序遍历之二)
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...
- virualbox 搭建 otter
前言 为了学习otter,上一篇我们讲到了 otter 必要软件的安装,参考:virualbox 安装 otter 必备软件,现在安装otter,相比官方文档,我们尽量简化安装步骤. virualbo ...
- C++ 多态与虚函数
1.多态的概念 由虚函数实现的动态多态性就是:同一类族中不同类的对象,对同一函数调用作出不同的响应. 先看下面这个简单的例子: #include<iostream> using std:: ...
- Android_简易的短信发送器
这个随笔将介绍如何完成一个简单的第三方的短信发送器(不打开短信界面,调用android的api完成功能) 1.首先,我们来做布局 由于我这里写的是一个简易的,,短信发送,所以只是一个LinearLay ...
- SQL Server本地连接不上
1.打开SQL Server 2014配置管理器 2.启动服务
- centos命令自动补全增强
CentOS默认没有像Ubuntu系统一样命令参数补全功能,例如yum install无法补全.通过安装bash-completion安装命令参数补全增强. CentOS6 默认情况下,CentOS6 ...
- 密码学那些事———SHA-512及其C++实现
SHA-512及其C++实现 转载请注明出处 一.引言 相信大家对于哈希压缩加密算法应该不陌生,在我们用微信或者支付宝接口的时候经常会遇到用这类算法加密,以验证数据的完整性.可以说这类算法无处不在,那 ...
- Linux安装nginx代理服务器
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. ...
- vs2015添加T4模版
<#@ template language="C#" debug="false" hostspecific="true"#> & ...