Nginx作为负载均衡服务
1、示意图
2、好处
均摊请求,让服务端整体吞吐率提高,满足不断增长的业务需求。
相比于单点服务,当其中一台服务器挂掉后,还可以继续让剩下的服务器继续服务,提高了容灾性。
二、负载均衡的分类 1、GSLB(全局负载均衡)
一般是以国家或省为单位进行全局负载的。
示意图如下:
2、SLB 示意图:
三、基于LVS的中间件架构
LVS(Linux Virtual Server )Linux 虚拟服务器
1、四层负载均衡
即在OSI七层模型中的传输层。因为第四层支持TCP/IP协议。四层负载均衡只需要对客户端的请求进行TCP/IP协议的包转发就能实现负载均衡。
优势
非常快,只需要最底层进行应用处理,不需要进行一些复杂的逻辑,值需要负责包的转发即可。
示意图
2、七层负载均衡
因为是在应用层,因此可以完成很多应用方面的协议请求,比如HTTP协议的负载均衡可以实现HTTP信息的改写,头信息的改写,安全应用规则的控制,转发,rewrite等等方面的规则控制。因此在七层负载均衡里面可以做的事情就更多一些,Nginx就是一个典型的七层负载均衡的SLB。
SLB(Server Load Balancing)服务器负载均衡。
示意图
Nginx负载均衡实现原理
通过 proxy_pass 转发到后端的服务器上,只是不是转发到一台,而是一组虚拟的服务池(即 upstream server)。在upstream 组里面实现了对于多台服务器请求的不断轮询。
当用户的请求过来后,就会通过 upstream_module 这个模块将用户的请求分发到不同的服务上,从而实现负载均衡。
故 proxy_pass 和 upstream 是两个核心的配置。
示意图
配置语法
gx_http_upstream_module官方文档 : http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Syntax: upstream name { ... } Default: — Context: http
示例: a、用一台服务器来实现负载均衡,配置如下:
upstream chrdai { server 192.168.0.133:8001; server 192.168.0.133:8002; server 192.168.0.133:8003; } server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/proxy_cache_access.log main; location / { proxy_pass http://chrdai; include proxy_params; } }