zoukankan      html  css  js  c++  java
  • nginx负载均衡及配置

    为什么要实现服务器集群?

    实现服务器集群主要就是为了负载均衡(Load Balance)——有两台或者以上的服务器或者站点提供服务,服务将来自客户端的请求,靠某种算法,去尽量平分请求到集群的机器中,从而避免一台服务器因为负载太高而出现故障,而即使其中某个机器出现故障,负载均衡会自动规避选择,使得用户也能正常访问服务。

    程序&数据库服务器分离

    动&静资源分离

    好处:减轻后端服务器的压力,提高静态资源访问速度

    坏处:爬虫抓取下来的前端的页面里,包含了大量异步加载的操作,但是爬虫无法执行也无法获得其内容,这样会导致网站的SEO受影响

    负载均衡的例子

    前面有1000个妞等着你来泡,这1000个妞等久了有可能不耐烦,就会走了不让你泡了。你要想同时泡1000个妞,那你就得有分身的能力才行。

    只要有了分身的能力,你就再也不用担心妞泡不过来了。

    结论得出:负载均衡 == 分身的能力

    你的分身把这个妞泡准了,你这个分身就要跟她一直谈下去,其他的妞过来了你肯定要拒绝丫。

    你没泡成功,当然是去寻找下一个目标。

    结论得出:负载均衡还得保持通话

    你的分身也偶尔发发小脾气,没激情来泡妞的时候,你就要去修理他,去找他聊聊心。

    结论得出:负载均衡还要懂得修理他(T出泡妞队营)

    尼玛负载均衡就为了泡妞,我们果断一起踩扁它。

    负载均衡现在市场上面已经有很多成熟的硬件设备,可以掏点钱就可以买了。当然这费用嘛......

    如果你闲费用贵,自己瞎折腾也好,来体现你的技术是多么牛xx, 你就用一台服务器,服务器里面装个nginx就可以解决了。

    尼玛负载均衡就这么简单,我们继续一起踩扁它。

    要说道每个分身的能力如何复制过去,就如每一台电脑要泡妞怎么办,是不是要具有相同的代码。怎么办?

    1. 共享主人的经验

    2. 把主人的经验复制过来

    3. 边复制边共享

    转成计算机就是说:

    1. 文件共享

    2. 文件同步

    3. 分布式文件系统

    他们都有各自的优缺点,选择适合自己的就行。

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

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



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

      Vm1 : 负载均衡服务器/WEB入口服务器/www.test.com
      Vm2 : WEB服务器/分身1/192.168.1.121
      Vm3 : WEB服务器/分身2/192.168.1.124

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

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

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

    upstream servers.test.com { 
        server 192.168.1.121:80; 
        server 192.168.1.124:80; 
    }

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

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

    server{ 
        listen 80; 
        server_name www.test.com;     location / { 
            proxy_pass http://servers.test.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;
    } 
    }    

    那么Vm2、Vm3的配置如下:

    server{ 
        listen 80; 
        server_name www.test.com; 
        index index.html; 
        root /home/wwwroot/default; 
    }

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

    upstream servers2.test.com { 
        server 192.168.1.121:8080; 
    server 192.168.1.124:8081;
    }
     
    server{ 
        listen 80; 
        server_name www.test.com;     location / { 
            proxy_pass http://servers2.test.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;     
    } 
    }

     

    那么Vm2的配置如下:

    server{ 
        listen 8080; 
        server_name www.test.com; 
        index index.html; 
        root /home/wwwroot/default; 
    }

    Vm3配置:

    server{ 
        listen 8081; 
        server_name www.test.com; 
        index index.html; 
        root /home/wwwroot/default; 
    }

     

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

    3. 那么负载均衡如何保持通话呢?
    当然现在有好几种方案,

    1、轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

    2、weight
    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    例如:
    upstream bakend {
    server 192.168.159.10 weight=10;
    server 192.168.159.11 weight=10;
    }

    3、ip_hash
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器, 

    优点:能较好地把同一个客户端的多次请求分配到同一台服务器处理,避免了加权轮询无法适用会话保持的需求。
      缺点:当某个时刻来自某个IP地址的请求特别多,那么将导致某台后端服务器的压力可能非常大,而其他后端服务器却空闲的不均衡情况。


    例如:
    upstream resinserver{
    ip_hash;
    server 192.168.159.10:8080;
    server 192.168.159.11:8080;
    }


    4、fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    upstream resinserver{
    server server1;
    server server2;
    fair;
    }

  • 相关阅读:
    windows下 安装 rabbitMQ 及操作常用命令
    C#中关于DataGridView行和列的背景色-前景色设置
    使用Linq判断DataTable数据是否重复
    C#用mouse_event模拟鼠标点击的问题
    ApartmentState.STA
    使用WebBrowser,内存一直增加的解决办法
    HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
    您访问的URL地址不被允许。
    CMSIS-DAP for STLink V2.1 and STLink v2.1 mini adapter
    DG449 High Voltage Single SPDT Analog Switch in SOT23-8
  • 原文地址:https://www.cnblogs.com/zhang0807/p/10157430.html
Copyright © 2011-2022 走看看