美文网首页nginx
nginx实现负载均衡

nginx实现负载均衡

作者: 谁在烽烟彼岸 | 来源:发表于2017-11-19 11:15 被阅读0次

    nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态、静态页面的分离,可以按照轮询、ip哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。

    如果只有一台服务器时,这个服务器挂了,那么对于网站来说是个灾难.因此,这时候的负载均衡就会大显身手了,它会自动剔除挂掉的服务器.

    Nginx负载均衡一些基础知识:

    nginx 的 upstream目前支持 4 种方式的分配

    1)、轮询(默认)

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

    2)、weight

    指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

    2)、ip_hash

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    3)、fair(第三方)

    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    4)、url_hash(第三方)

    以下是具体使用步骤:

    1. 安装

    1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本(目前是1.5.13版本)安装包;

    2) 解压后复制到部署目录。

    2. 启动和停止Nginx

    Nginx目前只支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署目录。

    1) 启动Nginx:start nginx

    2) 停止Nginx:nginx -s stop

    3) 修改配置后重启:nginx -s reload

    这三个命令可分别做成bat文件,放在部署目录下,方便后续操作。

    start nginx.bat文件内容:start nginx

    stop nginx.bat文件内容:nginx -s stop

    reload nginx.bat文件内容:nginx -s reload

    3. 反向代理配置

    修改部署目录下conf子目录的nginx.conf文件(如nginx-1.5.13\conf\nginx.conf)内容,可调整相关配置。

    反向代理配置示例:

    location / {

    #设置主机头和客户端真实地址,以便服务器获取客户端真实IP

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #禁用缓存

    proxy_buffering off;

    #设置反向代理的地址

    proxy_pass http://192.168.1.1;

    }

    代理地址根据实际情况修改。

    4. 负载均衡配置

    nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

    另外一种方式是ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

    负载均衡配置示例:

    upstream backend {

    #ip_hash;

    server 192.168.1.251;

    server 192.168.1.252;

    server 192.168.1.247;

      }

    server {

    listen 80;

    server_name trffweb;

    location / {

    #反向代理的地址

    proxy_pass http://backend;

      }

    }

    Upstream命名和服务器地址根据实际情况修改。

    5. 完整配置示例

    nginx.conf:

    worker_processes 1;

    events {

    worker_connections 1024;

    }

    http {

    include mime.types;

    default_type application/octet-stream;

    sendfile on;

    keepalive_timeout 65;

    upstream backend {

    #ip_hash;

    server 192.168.1.251;

    server 192.168.1.252;

    server 192.168.1.247;

    }

    server {

    listen 80;

    server_name 2;

    location / {

    #设置主机头和客户端真实地址,以便服务器获取客户端真实IP

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #禁用缓存

    proxy_buffering off;

    #反向代理的地址

    proxy_pass http://backend;

       }

      }

    }

    相关文章

      网友评论

        本文标题:nginx实现负载均衡

        本文链接:https://www.haomeiwen.com/subject/fymuvxtx.html