您当前的位置: 首页 >  负载均衡

Nginx负载均衡

发布时间:2021-08-10 11:47:36 ,浏览量:6

Nginx负载均衡
  • 简介
  • 四层负载均衡
  • 七层负载均衡
  • Nginx负载均衡实现原理
    • 示例
      • a、用一台服务器来实现负载均衡,配置如下:
      • b、 另外三台真实服务器的配置如下:
      • c、分别在三台真实服务器(当然我这里是在一台服务器中用三个端口模拟的)的项目目录下建立index.html文件
        • 第一台(/opt/app/code1):
        • 第二台(/opt/app/code2):
        • 第三台(/opt/app/code3):
        • 刷新页面,发现页面可以在三个站点间轮询显示
  • 负载均衡调度中的状态
    • 示例
  • Nginx的调度算法
    • 1、加权轮询示例
    • 2、ip_has策略示例
    • 3、hash关键数值轮询策略
    • 4、url_hash 示例:
      • url1.html
      • url2.html
      • url3.html
      • a、当我们访问 http://192.168.0.133/url1.html 时,由于一开始就进入了 server1 这台服务器,不管怎么刷新,以后也永远进入server1这台服务器,因为它是根据 request_uri来做的hash。
      • b、当我们访问 http://192.168.0.133/url2.html 时,由于一开始就进入了 server3 这台服务器,不管怎么刷新,以后也永远进入server3这台服务器。
      • c、当我们访问 http://192.168.0.133/url3.html 时,由于一开始就进入了 server2 这台服务器,不管怎么刷新,以后也永远进入server3这台服务器。
简介

在这里插入图片描述 均摊请求,让服务端整体吞吐率提高,满足不断增长的业务需求。

相比于单点服务,当其中一台服务器挂掉后,还可以继续让剩下的服务器继续服务,提高了容灾性。

四层负载均衡

即在OSI七层模型中的传输层。因为第四层支持TCP/IP协议。四层负载均衡只需要对客户端的请求进行TCP/IP协议的包转发就能实现负载均衡。

优势 非常快,只需要最底层进行应用处理,不需要进行一些复杂的逻辑,值需要负责包的转发即可。

七层负载均衡

因为是在应用层,因此可以完成很多应用方面的协议请求,比如HTTP协议的负载均衡可以实现HTTP信息的改写,头信息的改写,安全应用规则的控制,转发,rewrite等等方面的规则控制。因此在七层负载均衡里面可以做的事情就更多一些,Nginx就是一个典型的七层负载均衡的SLB。

SLB(Server Load Balancing)服务器负载均衡。

Nginx负载均衡实现原理

通过 proxy_pass 转发到后端的服务器上,只是不是转发到一台,而是一组虚拟的服务池(即 upstream server)。在upstream 组里面实现了对于多台服务器请求的不断轮询。

当用户的请求过来后,就会通过 upstream_module 这个模块将用户的请求分发到不同的服务上,从而实现负载均衡。

故 proxy_pass 和 upstream 是两个核心的配置。

在这里插入图片描述 配置语法 ngx_http_upstream_module官方文档 : http://nginx.org/en/docs/http/ngx_http_upstream_module.html

示例 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;
    }
}

说明我们的负载均衡配置成功。

注意:upstream只能配置在 http 这一层,即 server 层的外面。

b、 另外三台真实服务器的配置如下:

我这里是通过同一台服务器的不同端口模拟的。

第一台(/etc/nginx/conf.d/realserver1.conf):

在这里插入图片描述 第二台(/etc/nginx/conf.d/realserver2.conf):

在这里插入图片描述 第三台(/etc/nginx/conf.d/realserver3.conf): 在这里插入图片描述

c、分别在三台真实服务器(当然我这里是在一台服务器中用三个端口模拟的)的项目目录下建立index.html文件 第一台(/opt/app/code1):
            
关注
打赏
1688896170
查看更多评论

暂无认证

  • 6浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0502s