<!--

  • @Author: starkwang
  • @Contact me: https://shudong.wang/about
  • @Date: 2019-10-23 16:48:24
  • @LastEditors: starkwang
  • @LastEditTime: 2019-10-23 17:02:31
  • @Description: nginx负载均衡详解与搭建

-->

为什么要使用集群?

  1. 高性能(Performance)
  2. 价格有效性(Cost-effectiveness)
  3. 可伸缩性(Scalability)
  4. 高可用性(Availability)
  5. 可管理性(Manageability)

永久链接: https://shudong.wang/10623.html

集群的分类

  • 负载均衡集群(Load balancing clusters),简称LBC或者LB。
  • 高可用性集群(High-availability(HA)clusters),简称HAC。
  • 高性能计算集群(High-performance(HP)clusters),简称HPC。
  • 网格计算(Grid computing)集群。

负载均衡集群的作用为:

  • 分担用户访问请求及数据流量(负载均衡)。
  • 保持业务连续性,即7×24小时服务(高可用性)。
  • 应用于Web业务及数据库从库等服务器的业务。
  • 负载均衡集群典型的开源软件包括LVS、Nginx、Haproxy等。

高可用性集群

2019-10-23-15-13-43

当集群中的一个节点系统发生故障时,运行着的集群服务会迅速做出反应,将该系统的服务分配到集群中其他正在工作的系统上运行。

对于用户而言,集群里的任意一台机器宕机,业务都不会受影响(理论情况下)。

常用的集群软硬件介绍及选型

  1. 企业运维中常见的集群软硬件产品互联网企业常用的开源集群软件有:Nginx、LVS、Haproxy、Keepalived、Heartbeat。
  2. 互联网企业常用的商业集群硬件有:F5、Netscaler、Rad-ware、A10等,工作模式相当于Haproxy的工作模式。

淘宝、赶集网、新浪等公司曾使用过Netscaler负载均衡产品。
集群硬件Netscaler的产品图如图11-5所示,相关指标请大家自行查询相关资料。集群硬件F5产品,相关指标请大家自查相关资料。

Netscaler负载均衡产品

2019-10-23-15-20-44

F5负载均衡产品图

2019-10-23-15-20-50

首选Nginx负载均衡

Nginx负载均衡

  • 配置简单
  • 使用方便
  • 安全稳定
  • 社区活跃,

高可用

如果要考虑Nginx负载均衡的高可用功能,建议首选Keepalived软件,理由是安装和配置简单,使用方便,安全稳定,与Keepalived服务类似的高可用软件还有Heartbeat(使用比较复杂,不建议初学者使用)。
如果是大型企业互联网公司,负载均衡产品可以使用LVS+Keepalived在前端做四层转发(一般是主备或主主,如果需要扩展可以使用DNS或前端使用OSPF),后端使用Nginx或者Haproxy做7层转发(可以扩展到百台),再后面是应用服务器,如果是数据库与存储的负载均衡和高可用,建议选择LVS+Heart-beat,LVS支持TCP转发且DR模式效率很高,Heartbeat可以配合drbd,不但可以进行VIP的切换,还可以支持块设备级别的数据同步(drbd),以及资源服务的管理。

下面实现nginx 反向代理负载均衡

worker_processes  1;
events { 
  worker_connections  1024;
}
http {    
  include       mime.types;   
  default_type  application/octet-stream;    
  sendfile        on;    
  keepalive_timeout  65;    
  upstream shudong_wang {
    # web 节点
    server 106.54.252.181:80  weight=1;
    server 122.51.115.137:80  weight=1;    
    server 122.51.110.6:80  weight=1;   
  }    
  server {     
      # 这里是定义代理的负载均衡域名虚拟主机        
      listen       80;        
      server_name  lb.shudong.wang;       
      location / {        
        proxy_pass http://shudong_wang; 
        # 访问lb.shudong.wang
        # 请求发送给shudong_wang里面的节点  
      }    
  }
}

upstream 模块内参数

2019-10-23-16-37-18

  • weight:调节服务器的请求分配权重。
  • check:开启对该服务器健康检查。
  • inter:设置连续两次的健康检查间隔时间,单位毫秒,默认值2000。
  • fall:指定多少次不成功的健康检查后,即认为服务器为宕机状态,默认值3。
  • maxconn:指定可被发送到该服务器的最大并发连接数。
更多的Nginx upstream模块参数请参考:http://nginx.org/en/docs/http...


作者博客

2019-10-21-19-20-20


西树先森
7.1k 声望926 粉丝

从事开发多年,前端、后端(go、Python、php)、服务架构都有涉猎,经历过大公司、创业公司,擅长前端及公司技术选型。