多台Web服务器水平扩展,进行负载均衡对外服务,是一种很常见的方案。

常用方法用DNS轮询,LVS。

DNS轮询虽然有配置简单的有点,但无法实现健康检查,DNS修改需要较长时间失效,对于无域名的内部服务需要手动修改客户端hosts。

LVS实现功能强大,可配置项多,能实现会话保持,但消耗机器数多,不适合中型和小型项目。

其实Nginx也能实现负载均衡,而且配置简单,通过ip_hash也能实现会话保持。

配置方法:

1.轮询:

此种配置最为简单也最为常用,请求将会依次交给不同的服务器处理,但无法实现会话保持。

upstream 配置名称 {
server 192.168.1.1:; # 服务器A
server 192.168.1.2:; # 服务器B
server 192.168.1.3:; # 服务器C
}

2.权重

此种配置适用于多台服务器配置有高低之分,需要根据实际配置情况分配请求,此方法依然无法实现会话保持。

#weight越大,处理请求的次数则越多,实际值=weight/sum(weight) * 总请求数
upstream 配置名称 {
server 192.168.1.1: weight=; # 服务器A
server 192.168.1.2: weight=; # 服务器B
server 192.168.1.3: weight=; # 服务器C
}

3.ip_hash

此配置根据ip的hash值决定处理请求的服务器,所以同一ip多个请求将交给同一服务器处理,这种方法可以解决会话保持的问题。

upstream 配置名称 {
ip_hash; # 使用ip_hash方法
server 192.168.1.1:; # 服务器A
server 192.168.1.2:; # 服务器B
server 192.168.1.3:; # 服务器C
}

4.其他方法

籍由第三方扩展,Nginx还可以实现多种负载均衡算法,例如:url_hash、fair等等,由于实际使用较少,在此不一一赘述。

5.应用负载均衡

server {
listen ;
location / {
root html;
proxy_pass http://配置名称;
index index.html index.htm;
}
}

注意:请不要在upstream中设置的服务器上添加proxy_pass,否则会出现死循环,导致请求失败。

6.更多的upstream配置选项

#weight 默认为1,值越大权重越大,处理请求次数越多
#down 该服务器不会被转发请求
#backup 该服务器用于备份,只有其他服务器都失效时才使用
#max_fails 允许的最大失败次数
#fail_timeout 达到最大失败次数后,暂停处理请求的时间,单位:秒

最新文章

  1. redis DB操作
  2. hdu2896 病毒侵袭 ac自动机
  3. CSS定位之position详解(转载)
  4. Windows安装 ANT
  5. web前端性能概述
  6. EasyUI 自定义DataGrid分页
  7. 网络延迟查看器 Network latency view 1.4
  8. 解决VS2010使用comboBox死机问题
  9. struts2 JS获取上传文件的绝对路径,兼容IE和FF
  10. AOP技术基础
  11. 【桌面虚拟化】之三 Persistent vs NonP
  12. Working——流程关系状态表
  13. iPhone APP 扫码下载
  14. mysql性能调优与架构设计(一)商业需求与系统架构对性能的影响
  15. Android开发手册 (Android的手工教程MtAndroid开发手册)
  16. [转]学好Mac常用命令,助力iOS开发
  17. 织梦DEDE文章列表前面自动加递增数字标签
  18. #Java学习之路——基础阶段(第二篇)
  19. spark streaming的容错:防止数据丢失
  20. payload

热门文章

  1. Matcher类详解2-group
  2. NieR:Automata中的一段文字
  3. Java面试常问的问题(转载)
  4. 参数化1--jmeter参数化数据(_csvread函数、用户自定义变量等)
  5. todo提纲
  6. mybatis配置mapperLocations多个路径
  7. 2017.2.20 activiti实战--第二章--搭建Activiti开发环境及简单示例(一)搭建开发环境
  8. C/C++中作用域详解(转)
  9. mysql 时间函数date_format
  10. Oracle 优化器