动态管理nginx负载均衡


0. 负载均衡是什么?

nginx负载均衡是个强大的功能,提供多种策略(round robin, ip_hash, least_conn等),将请求分发到后端的服务器,从而起到服务器负载均衡的效果。先来看下如何使用。

1. 最简单的例子:

upstream backend {

    server backend1.example.com       weight=5;

    server backend2.example.com:8080;

    server unix:/tmp/backend3;

    server backup1.example.com:8080   backup;

    server backup2.example.com:8080   backup;

}


server {

    location / {

        proxy_pass http://backend;

    }

}

2. 内部结构

从上面的例子中,可以看出。nginx可以定义多个upstream,每个upstream有自己的名称。一个upstream包含多个server。每个server对应后端的某台服务器。server可以是域名,也可以是addr。nginx在配置解析完成后,server都会解析成addr。所以可以描述成这样,{} 表示多个。

nginx      -> { upstream }

upstream   -> { server }

server     -> ip:port

更多细节参考: http://nginx.org/en/docs/http/ngx_http_upstream_module.html

3. 如何动态管理?

fly是动态管理upstream的模块,使用简单方便。在线演示: http://nglua.com/fly

a)配置

upstream a-backend {
    zone  fly  128k;
   192.168.1.101:81;
    192.168.1.101:82;
    192.168.1.101:83;
}

upstream b-backend {
    zone  fly  128k;
   192.168.1.102:81;
    192.168.1.102:82;
    192.168.1.102:83;
}

server {

  location /fly {
      fly  on;
  }

  location /assets {
      alias  html/fly;
  }

}

b)安装fly模块
> wget http://nglua.com/download/nglua-fly.tar.gz && tar zxvf nglua-fly.tar.gz
> ./configure --add-module=nglua-fly/nginx-http-fly-module && make
> cp -R nglua-fly/html/fly > {dir}/html

4. 欢迎交流

你可能感兴趣的:(动态管理nginx负载均衡)