nginx负载均衡及配置
nginx负载均衡及配置
1 负载均衡概述
负载均衡由来是因为当一台服务器单位时间内的访问量很大时,此时服务器的压力也会很大,当超过自身承受能力时,服务器就会崩溃.为避免让服务器崩溃,用户拥有更好的体验,就诞生了负载均衡来分担服务器压力.
负载均衡实质上就是用反向代理的原理实现的,是一种优化服务器资源,合理处理高并发的一种技术,能够平衡个服务器的压力,减少用户请求等待时间,并确保容错.一般采用nginx作为一种高效的HTTP负载均衡服务器,将流量分配到多个应用服务器上以提高性能,可扩展和高可用性.
原理: 内网可以建很多服务器,组成服务器集群,当用户访问该网站时,先访问公网中间服务器,中间服务器根据算法合理分配到内网服务器,分担服务器的压力,因此户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
nginx反向代理实现包括下面这些负载均衡HTTP、HTTPS、FastCGI、uwsgi,SCGI和memcached。
要配置HTTPS的负载均衡,只需使用'http'开头的协议。
当要设置FastCGI,uwsgi,SCGI,或者memcached的负载平衡,分别使用fastcgi_pass,uwsgi_pass,scgi_pass和memcached_pass指令。
2 负载均衡的常见平衡机制
1 轮询(round-robin) :以轮询方式将请求分配到不同服务器上,每个请求按时间顺序逐一分配到不同的后端服务器, 如果后端服务器挂掉,自动剔除,保证正常的服务。
配置1:
upstream server_back { #nginx分发服务请求
server 192.168.162.49;
server 192.168.162.50;
}
配置2:
http {
upstream servergroup { # 服务组接受请求,nginx轮询分发服务请求
server srv1.demo.com;
server srv2.demo.com;
server srv3.demo.com;
}
server {
listen 80;
location / {
proxy_pass http://servergroup; #所有的请求被代理到servergroup服务组
}
}
}
proxy_pass 后面是被代理的服务器ip,也可以是主机名,域名,ip端口模式
upstream 设定负载均衡后台服务器列表
2 权重负载均衡(weight):如果没有配置权重,每个服务器的负载都是一样的,当出现服务器性能不均时,采用 权重轮询,指定的服务器的权重参数,权重占比为负载均衡决定的一部分。权重大负载就大。
upstream server_back {
server 192.168.162.49 weight=3;
server 192.168.162.50 weight=7;
}
3 最少连接数(least-connected):将下一个请求分配到连接数最少的那台服务器上,当一些请求需要更长的时 间响应, 最少连接可以更公平地控制应用程序实例的负载。nginx会将请求转发到负载较少的服务器。
upstream servergroup {
least_conn;
server srv1.demo.com;
server srv2.demo.com;
server srv3.demo.com;
}
4 ip-hash :基于客户端的IP地址。原因时负载均衡每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样明显不太妥。采用ip_hash解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。
每个请求按照IP hash的结果分配,因此请求被固定到某一个后端服务器,也可以解决session问题
upstream servergroup {
ip-hash;
server srv1.demo.com;
server srv2.demo.com;
server srv3.demo.com;
}
附上一个实例:
#user nobody;
worker_processes 4;
events {
# 最大并发数
worker_connections 1024;
}
http{
# 待选服务器列表
upstream myserver{
# ip_hash指令,将同一用户引入同一服务器。
ip_hash;
server 125.219.42.4 fail_timeout=60s; #max_fails失败后暂定时间60s
server 172.31.2.183;
}
server{
# 监听端口
listen 80;
# 根目录下
location / {
# 选择哪个服务器列表
proxy_pass http://myserver;
}
}
}
max_fails 允许请求失败的次数默认为1
fail_timeout=60s fail_timeout=60s失败暂停的时间
down 表示当前的服务器暂时不参与负载
backup 所有非backup机器忙的时候会请求backup,因此其压力会最轻
参考:http://www.ttlsa.com/nginx/using-nginx-as-http-loadbalancer/ 非常感谢
更多:http://nginx.com/blog/load-balancing-with-nginx-plus/
http://nginx.com/blog/load-balancing-with-nginx-plus-part2/
nginx负载均衡及配置的更多相关文章
- nginx负载均衡简单配置
nginx负载均衡简单配置准备三台虚拟机来做这个实验:192.168.232.132 web服务器192.168.232.133 web服务器192.168.232.134 ...
- nginx 负载均衡简单配置
配置要求: 三台服务器 127.0.0.1 主负载(把访问请求分给主机池) 127.0.0.2 主机2 127.0.0.3 主机3 第一步: 配置127.0.0.1 ...
- nginx负载均衡常见问题配置信息
nginx为后端web服务器(apache,nginx,tomcat,weblogic)等做反向代理 几台后端web服务器需要考虑文件共享,数据库共享,session共享问题.文件共享可以使用nfs, ...
- Nginx负载均衡各种配置方式
Nginx负载均衡 - 小刚qq - 博客园http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html Module ng ...
- php nginx 负载均衡简单配置过程
负载均衡 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解 ...
- Nginx负载均衡NFS配置
Nginx配置 首先在两台服务器上部署同一个项目,例如下: 测试网站节点1: http://192.168.168.61/nfstest/ 测试网站节点2: http://192.168.64.145 ...
- window下nginx负载均衡简单配置-----权重的实现
下面介绍一个在window下的nginx的负载均衡配置. 需要你在你的电脑上跑两个tomcat.一个8080,一个9080. 需要一个nginx服务器. 需要修改本机的host 注意:我们这里配置不会 ...
- NGINX负载均衡缓存配置
环境:VMware-Workstation-12-Pro,Windows-10,CentOS-7.5,Xshell5 1 概述 如果我们的架构是前端负载均衡后端WEB集群时,可以开启nginx的缓存功 ...
- Nginx负载均衡简易配置
多台Web服务器水平扩展,进行负载均衡对外服务,是一种很常见的方案. 常用方法用DNS轮询,LVS. DNS轮询虽然有配置简单的有点,但无法实现健康检查,DNS修改需要较长时间失效,对于无域名的内部服 ...
随机推荐
- WPF ListView 分组 Grouping
在Resource里定义数据源和分组字段: <CollectionViewSource x:Key="listData" Source="{Binding Cate ...
- Error no matching function for call to 'std::exception::exception(const char [15])'
Error no matching function for call to 'std::exception::exception(const char [15])' Error 'logic_err ...
- 云数据库Redis版256M双机热备款
云数据库Redis版是兼容Redis协议标准的.提供持久化的缓存式数据库服务,基于高可靠双机热备架构:全新推出的256M小规格款,适用于高QPS.小数据量业务,并支持免费全量迁移,完美服务于个人开发者 ...
- 今年新鲜出炉的30个流行Android库,你一定需要
作者|Michal Bialas 2017年快过去了,你年初的定的目标都快完成了吗?总结过去三个月内发布的 最新的30 个 Android 库和项目.你一定需要,建议收藏!让你事半功倍 1.Mater ...
- Flutter:Slivers大家族,让滑动视图的组合变得很简单!
今天呢,我小拉面主要想给大家讲一讲Flutter中的Slivers大家族的使用场景和方法.开发过列表布局的同学们应该对Slivers系列的控件不陌生,或多或少都用过这个库中的控件,来解决复杂的滑动嵌 ...
- oracle 删除表的几种方法及回收站
1.删除表结构和表数据 drop table 表名 [purge] purge表示不放入回收站 2.删除表数据 delete from 表名 [where ...] 特点:高水位线不降:记录日志,速 ...
- hibernate的延迟加载和抓取策略
一,延迟加载 1.实体类延迟加载 通过代理机制完成,由javassist类库实现运行时代理,修改实体类的字节码实现了运行时代理 <class lazy="true|false& ...
- Azure 镜像市场发布商指南
Azure 镜像市场发布商指南 本指南提供独立软件供应商产品上架到 Azure 镜像市场(以下简称 Azure 镜像市场)需要遵循的全流程. 文档适用范围 本指南适用于希望通过由世纪互联运营的Micr ...
- Springboot 报application.properites文件找不到的解决方法
部署项目遇到了找不到application.properties的问题.网上搜了找不到答案,后面经过测试发现,问题在于clean了maven之后,target包还没删除,所以编译的时候才会出现 ...
- centos安装不上的问题
Installing VMware Tools, please wait...mount: special device /dev/hda does not existmount: block dev ...