当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Linux 系统 nginx 服务器安装及负载均衡配置详解(4)

    栏目:Linux/apache问题 时间:2019-11-07 20:21

    由于未曾配置域名解析服务,无法将 URLhttp://backend 定位到正确的位置。

    可以修改 server1 上的 /etc/hosts 文件,添加如下一条记录:

    127.0.0.1 backend

    即可将该域名解析到本地 IP ,完成对负载均衡服务器的访问。

    重启 nginx 服务,在 server1 上访问http://backend ,效果如下:

    $ curl http://backend
    <html>
      <head>
        <title>Index Page From Server1</title>
      </head>
      <body>
        <h1>This is Server1, Address 192.168.1.102.</h1>
      </body>
    </html>
    $ curl http://backend
    <html>
      <head>
        <title>Index Page From Server2</title>
      </head>
      <body>
        <h1>This is Server2, Address 192.168.1.102:8000.</h1>
      </body>
    </html>
    $ curl http://backend
    <html>
      <head>
        <title>Index Page From Server1</title>
      </head>
      <body>
        <h1>This is Server1, Address 192.168.1.102.</h1>
      </body>
    </html>
    $ curl http://backend
    <html>
      <head>
        <title>Index Page From Server2</title>
      </head>
      <body>
        <h1>This is Server2, Address 192.168.1.102:8000.</h1>
      </body>
    </html>

    从输出中可以看出,server1 对负载均衡服务器http://backend 的访问,完成了对应用服务器 server2 上两个 Web 站点的 轮询 ,起到负载均衡的作用。

    四、负载均衡方法

    nginx 开源版本提供四种负载均衡的实现方式,简单介绍如下。

    1. Round Robin

    用户请求 均匀 地分配给后端服务器集群(可以通过 weight 选项设置轮询的 权重 ),这是 nginx 默认使用的负载均衡方式:

    upstream backend {
      server backend1.example.com weight=5;
      server backend2.example.com;
    }

    2. Least Connections

    用户请求会优先转发给集群中当前活跃连接数最少的服务器。同样支持 weight 选项。

    upstream backend {
      least_conn;
      server backend1.example.com;
      server backend2.example.com;
    }

    3. IP Hash

    用户请求会根据 客户端 IP 地址 进行转发。即该方式意图保证某个特定的客户端最终会访问 同一个 服务器主机。

    upstream backend {
      ip_hash;
      server backend1.example.com;
      server backend2.example.com;
    }

    4. Generic Hash

    用户请求会根据一个 自定义键值 确定最终转发的目的地,该键值可以是字符串、变量或者组合(如源 IP 和端口号)。

    upstream backend {
      hash $request_uri consistent;
      server backend1.example.com;
      server backend2.example.com;
    }

    权重

    参考下面的示例配置:

    upstream backend {
      server backend1.example.com weight=5;
      server backend2.example.com;
      server 192.0.0.1 backup;
    }

    默认权重(weight)为 1 。 backup 服务器 只有在所有其他服务器全部宕机的情况下才会接收请求。

    如上面的示例,每 6 个请求会有 5 个转发给 backend1.example.com,1 个转发给 backend2.example.com。只有当 backend1 和 backend2 全部宕机时,192.0.0.1 才会接收并处理请求。