zoukankan      html  css  js  c++  java
  • 负载均衡----实现配置篇(Nginx)

    吐槽:自从那篇“探讨负载均衡”那篇文章被博客园吐槽后,心里极度不平衡,思来想去还是把名字改成“负载均衡----概念认识篇”,再加多几篇文章来诠释上篇文章的精华所在。

    还不了解负载均衡的,推荐你阅读:负载均衡----概念认识篇

    ----------- 华丽的分割线 正文开始---------------

    首先我们来回顾下上篇的概念: 负载均衡 == 分身的能力。

    既然要有分身的能力嘛,这好办,多弄几台服务器就搞定了。
    今天我们讲的实例嘛…..我们还是先看图比较好:



    还是图比较清晰,以下我都用别名称呼:

      PA : 负载均衡服务器/WEB入口服务器/www.mydomain.com
      P1 : WEB服务器/分身1/192.168.2.3
      P2 : WEB服务器/分身2/192.168.2.4
      P3 : WEB服务器/分身3/192.168.2.5

    PS:首先我们学这个的开始之前吧,不懂防火墙的童鞋们,建议你们把PA、P1、P2、P3的防火墙关闭,尽量不要引起不必要的麻烦。

    首先 :PA、P1、P2、P3都安装了Nginx,不会安装的可以去官网查看教程:http://www.nginx.cn/install (中文版教程、非常的牛X)

    1. 装完之后哈,我们先找到 PA 的nginx.conf配置文件:
    在http段加入以下代码:

    upstream servers.mydomain.com { 
        server 192.168.2.3:80; 
        server 192.168.2.4:80; 
        server 192.168.2.5:80;
    }

    当然嘛,这servers.mydomain.com随便取的。

    那么PA的server配置如下:
    在http段加入以下代码:

    复制代码
    server{ 
        listen 80; 
        server_name www.mydomain.com; 
        location / { 
            proxy_pass http://servers.mydomain.com; 
            proxy_set_header Host $host; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        } 
    }    
    复制代码

    那么P1、P2、P3的配置如下:

    复制代码
    server{ 
        listen 80; 
        server_name www.mydomain.com; 
        index index.html; 
        root /data/htdocs/www; 
    }
    复制代码

    2. 有人就问了,我用其它端口行不行啊,当然也是可以的,假设PA的nginx.conf配置文件:

    复制代码
    upstream servers2.mydomain.com { 
        server 192.168.2.3:8080; 
        server 192.168.2.4:8081; 
        server 192.168.2.5:8082;
    }
    
    server{ 
        listen 80; 
        server_name www.mydomain.com; 
        location / { 
            proxy_pass http://servers2.mydomain.com; 
            proxy_set_header Host $host; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        } 
    }
    复制代码

    那么P1的配置如下:

    复制代码
    server{ 
        listen 8080; 
        server_name www.mydomain.com; 
        index index.html; 
        root /data/htdocs/www; 
    }
    复制代码

    P2配置:

    复制代码
    server{ 
        listen 8081; 
        server_name www.mydomain.com; 
        index index.html; 
        root /data/htdocs/www; 
    }
    复制代码

    P3配置:

    复制代码
    server{ 
        listen 8082; 
        server_name www.mydomain.com; 
        index index.html; 
        root /data/htdocs/www; 
    }
    复制代码

    重启之后,我们访问下,恩不错,确实很厉害。
    当我们把一台服务器给关闭了后。
    访问网址,还是OK的。说明:负载均衡还要懂得修理他(T出泡妞队营)

    3. 那么负载均衡如何保持通话呢?
    当然现在有好几种方案,我们这次只是讲一种。
    IP哈希策略
      优点:能较好地把同一个客户端的多次请求分配到同一台服务器处理,避免了加权轮询无法适用会话保持的需求。
      缺点:当某个时刻来自某个IP地址的请求特别多,那么将导致某台后端服务器的压力可能非常大,而其他后端服务器却空闲的不均衡情况。


    要想了解更深刻的印象,这儿有篇博文,推荐可以看看:
    http://blog.csdn.net/xiajun07061225/article/details/9334477


    nginx的配置也很简单,代码如下:

    复制代码
    upstream servers2.mydomain.com { 
        server 192.168.2.3:8080; 
        server 192.168.2.4:8081; 
        server 192.168.2.5:8082;
        ip_hash;
    }
    复制代码

    其实一切就这么简单,来赶快试试吧!

    4. 说了这么多,其实你有没有发现一个问题的所在,就是这么多服务器,他们共同需要的文件从哪里来?
    想知道如何解决,请继续关注:负载均衡 ---- 文件服务策略

  • 相关阅读:
    angular2怎么使用第三方的库(jquery等)
    线性代数:方程组的几何解释
    2016新的计划
    ES+Hbase对接方案概述
    sparkR操作HDFS上面的CSV文件
    spark1.6配置sparksql 的元数据存储到postgresql中
    spark读写Sequoiadb
    Spring Boot与Docker部署
    Docker中使用Tomcat并部署war工程
    CentOS7安装使用Docker
  • 原文地址:https://www.cnblogs.com/lcword/p/9732503.html
Copyright © 2011-2022 走看看