• nginx负载均衡


    一:为什么要实现负载均衡

    当一台服务器的单位时间内访问量越大的时候,服务器压力会越大,当一台服务器压力大得超过自身的承受压力的时候,服务器会崩溃。为了避免服务器崩溃,让用户更好的体验,我们通常通过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?我们可以建立很多个服务器,这些服务器组成一个服务器集群,然后当用户访问我们的网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器。这样,用户每次的访问,都会保证服务器集群中的每个服务器的压力区域平衡,分担了服务器的压力,避免了服务器崩溃的情况。

    二:Nginx的优势

    nginx是一款可以通过反向代理实现负载均衡的服务器,使用nginx服务器实现负载均衡的时候,用户首先会访问到nginx服务器,然后nginx服务器再从服务器群中选择压力较小的服务器,把该访问请求引入到该服务器。若服务器群中的某个服务器崩溃,那么从待选的服务器列表中删除,也就是说如果一个服务器崩溃了,那么nginx肯定不会把访问引入该服务器了。

    三:负载均衡

    当使用了代理服务器时,一般代理服务器后面不仅仅只有一台原始服务器,而是有很多台服务器一起在处理用户发过来的请求,这时就要协调好多台服务器怎样合作共同处理用户的请求

    若所有的原始服务器配置相差不大的情况下,负载均衡的手段一般为轮询,即每台服务器平等地处理用户的请求,当请求到来时会自动交给当前所负责事务最少的服务器去处理;

    若原始服务器的配置有一定差异时,则采用加权轮询的方式,配置较好的服务器将负责更多的请求处理,反之亦然;

    而一旦采取轮询方式,而要考虑session共享的问题,因为要是用户的请求被分配给不同的服务器处理而未实现session共享的话则需要用户重复登陆操作,当前实现session共享的方式有写入数据库或者写入memcached;

    若不想处理session共享,则采用ip哈希的方式将某一用户的请求指定分配给某一台服务器,在配置中加上 ip_hash 这句即可;

    几种常用的负载均衡方式

    • 最少连接:系统把新连接分配给当前连接数目最少的服务器。该算法在各个服务器运算能力基本相似的环境中非常有效。

    • 最快算法:最快算法基于所有服务器中的最快响应时间分配连接。该算法在服务器跨不同网络的环境中特别有用。

    • 轮询:轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有的服务器。轮询算法在大多数情况下都工作的不错,但是如果负载均衡的设备在处理速度、连接速度和内存等方面不是完全均等,那么效果会更好。

    • 加权轮询:该算法中,每个机器接受的连接数量是按权重比例分配的。这是对普通轮询算法的改进,比如你可以设定:第三台机器的处理能力是第一台机器的两倍,那么负载均衡器会把两倍的连接数量分配给第3台机器。

    四:测试

    1、实现效果 (1)浏览器地址栏输入地址http://192.168.180.113/dev/a.html,负载均衡效果,平均8080 和8088端口中

    2、准备工作 (1)准备两台tomcat服务器,一台8080,一台8088 (2)在两台tomcat里面webapps目录中,创建名称是dev文件夹,在dev文件夹中创建页面a.html,用于测试

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

     upstream myserver {
         server  192.168.180.112:8088;
         server  127.0.0.1:8080;
        }
    ​
        server {
            listen       80;
            server_name  192.168.180.113;
    ​
            #charset koi8-r;
    ​
            #access_log  logs/host.access.log  main;
    ​
            location / {
                root   html;
                proxy_pass   http://myserver;
                index  index.html index.htm;
            }

     

  • 相关阅读:
    线性时不变系统的频率选择滤波器
    Why Programmmers dont have a High Social Status?
    Oracle 的DBA考证
    基于matlab的FIR加窗滤波器设计
    奥本海姆《离散时间信号处理》第二版书评
    Altium Designer 发现的机密——摘自CRAZY BINGO
    sql server 2008 添加登录名
    Silverlight listbox横向排列
    IOS 摄像头使用(1)UIImagePickerController
    ios 如何获得系统时间和日期
  • 原文地址:https://www.cnblogs.com/dalianpai/p/11754062.html
Copyright © 2020-2023  润新知