(6)Nginx 配置实例三 负载均衡

一、实现效果

    (1)浏览器地址栏输入地址 http://服务器IP/bs-manager,负载均衡效果,平均 8081 和 8082 端口中;

                    

二、准备工作

    (1)准备两台tomcat服务器

  • 准备两台 tomcat 服务器,一台 8081,一台 8082
  • 上面的反向代理第二个实例中已经配置成功了。但是需要添加点东西,如下哦。

    (2)修改地方

  • 在两台 tomcat 里面 webapps 目录中,创建名称是 edu 文件夹,在 edu 文件夹中创建 页面 a.html,用于测试。
  • 由于第二个实例中,8082中有了 edu 的文件夹,所以只在8081 文件夹下创建即可。
    然后使用在vod文件下使用命令:
cp a.html ../edu/  

即可完成,查看命令

cd ../edu/     # 进入到 edu 目录下

cat a.html #查看内容

三、在 nginx 的配置文件中进行负载均衡的配置

  •  修改了第一个示例的 配置

      å¨è¿éæå¥å¾çæè¿°

配置代码:

   upstream myserver { 
    
        ip_hash; //按照IP地址hash轮询
        server 208.208.128.122:8081;
        server 208.208.128.122:8082;
    }
    server {
        listen       80;
        server_name  208.208.128.122;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass   http://myserver;
            #proxy_pass   http://127.0.0.1:8081;
            index  index.html index.htm;
    }

四、最终测试

 测试URL: http://服务器IP地址/edu/a.html

å¨è¿éæå¥å¾çæè¿°å¨è¿éæå¥å¾çæè¿°

五、Nginx 分配服务器的策略

        随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题, 顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应 足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品, 很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务,而且 Nginx 提供了几种分配方式(策略):

         

  •  轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。
  • weight(权重)。weight 代表权重, 默认为 1,权重越高被分配的客户端越多; 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。如下所示,8082的访问比率要比8081的访问比率高一倍。

upstream myserver {
        server 208.208.128.122:8081 weight=5;   #  在这儿
        server 208.208.128.122:8082 weight=10;
    }
    server {
        listen       80;
        server_name  208.208.128.122;
        location / {
            root   html;
            proxy_pass   http://myserver;
            index  index.html index.htm;
    }
  • ip_hash(访问IP) 。 ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。可以解决session的问题。

    upstream myserver {
    	ip_hash;							//  在这儿
        server 208.208.128.122:8081 ;   
        server 208.208.128.122:8082 ;
    }
    server {
        listen       80;
        server_name  208.208.128.122;
        location / {
            root   html;
            proxy_pass   http://myserver;
            index  index.html index.htm;
    }
  • fair(第三方)。fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

    upstream myserver {					
        server 208.208.128.122:8081 ;   
        server 208.208.128.122:8082 ;
        fair;            #  在这儿
    }
    server {
        listen       80;
        server_name  208.208.128.122;
        location / {
            root   html;
            proxy_pass   http://myserver;
            index  index.html index.htm;
    }
  • url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
  • 注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
 upstream resinserver{ 
      server 10.0.0.10:7777; 
      server 10.0.0.11:8888; 
      hash $request_uri; 
      hash_method crc32; 
}

upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:

  • down: 表示单前的server暂时不参与负载.
  • weight: 默认为1.weight越大,负载的权重就越大。
  • max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
  • fail_timeout :max_fails次失败后,暂停的时间。
  • backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream bakend{ #定义负载均衡设备的Ip及设备状态 
      ip_hash; 
      server 10.0.0.11:9090 down; 
      server 10.0.0.11:8080 weight=2 max_fails=1 fail_timeout=1s; 
      server 10.0.0.11:6060 max_fails=1 fail_timeout=1s; 
      server 10.0.0.11:7070 backup; 
}

  

发布了108 篇原创文章 · 获赞 58 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_41893274/article/details/104736197