亿级流量网站架构核心技术 第二章 负载均衡与反向代理

二层负载均衡是经过改写报文的目标MAC地址为上游服务器MAC地址,源IP地址和目标IP地址是没有变的nginx

四层负载均衡是根据端口将报文转发到上游服务器算法

七层负载均衡是根据端口号和应用层协议,转发报文到上游服务器缓存

 

 

 

upstream配置服务器

经过nginx的http指令下的upstream配置上游服务器架构

1 IP地址和端口负载均衡

2 权重分布式

 

 

 

负载均衡算法代理

1 round-robin:轮询进程

2 ip_hash:相同ip负载均衡到同一个upstreamip

3 hash key:哈希算法和一致性哈希算法

4 least_conn:将请求负载均衡到最少活跃链接的上游服务器

5 least_time:最小平均响应时间进行负载均衡

 

 

 

失败重试

配置max_fails和fail_timeout,当fail_timeout时间内失败了max_fails次请求,则认为服务器不可用,而后fail_timeout时间后再次将该服务器加入

 

 

 

 

健康检查

1 TCP心跳检查

2 HTTP心跳检查

 

 

 

其余配置

1 域名上游服务器

  在nginx解析配置文件的阶段将域名解析成IP地址并保存,可是域名对应IP变化时,该upstream不会更新

2 备份上游服务器

  当主服务器不存活时,才会发给备服务器

3 不可用上游服务器

 

 

 

长链接

keepalive指令配置长链接数量,指每一个worker进程与上游服务器可缓存的空闲链接的最大数量,超过此数量,最近最少使用的链接将被关闭。

此指令不限制worker进程与上游服务器的总链接

 

 

 

 

HTTP反向代理示例

 

 

 

 

HTTP动态负载均衡

将upstream动态注册到nginx上,从而实现upstream服务的自动发现

Consul是一款开源的分布式服务注册与发现系统,

实现架构:

1 consul+cousul-template

  (1)upstream启动,经过管理后台向consule注册服务

  (2)在nginx上启动consul-template agent,监听服务变动

  (3)动态修改upstream列表

  (4)重启nginx

2 consul+openResty

  (1)经过Consul管理后台注册服务

  (2)nginx启动,拉取配置,更新到共享字典。经过定时器,按期去拉取配置

  (3)使用共享字典的upstream列表进行动态负载均衡

 

 

 

 

nginx四层负载均衡

1 静态负载均衡

  配置在stream指令下

2 动态负载均衡

相关文章
相关标签/搜索