您的位置:首页 > 运维架构 > Nginx

关于LVS+Nginx同时使用

2018-04-03 17:26 218 查看

最初的理解

(也可以每个nginx都挂在上所有的应用服务器) 
nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单、配置简单、相关材料也特别多。lvs是国内的章文嵩博士的大作,比nginx被广泛接受还要早7年,并且已经被红帽作为了系统内置软件,可谓很牛了。lvs相对于nginx来说配置上就要相对复杂一些。但是,有时候我们会看到大牛们分享的经验里面是lvs+nginx作为负载均衡了,一直想不明白这是个什么道理。为什么会出现两者被同时使用呢?其实,这要从两者的各自优势来说了。nginx用来做http的反向代理,能够upsteam实现http请求的多种方式的均衡转发。由于采用的是异步转发可以做到如果一个服务器请求失败,立即切换到其他服务器,直到请求成功或者最后一台服务器失败为止。这可以最大程度的提高系统的请求成功率。lvs采用的是同步请求转发的策略。这里说一下同步转发和异步转发的区别。同步转发是在lvs服务器接收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。异步转发是nginx在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户端。进一步来说:当做为负载均衡服务器的nginx和lvs处理相同的请求时,所有的请求和响应流量都会经过nginx;但是使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。也就是,当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。但是仅仅使用lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。但是如果在lvs的后端在添加一层nginx(多个),每个nginx后端再有几台应用服务器,那么结合两者的优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时一锤子买卖的问题二、nginx.conf配置文件的配置user  www www;

worker_processes 10;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid  logs/nginx.pid;

#最大文件描述符

worker_rlimit_nofile 51200;

events {

  use epoll;

  worker_connections 51200;

}

http {

  include conf/mime.types;

  default_type  application/octet-stream;

  keepalive_timeout 120;

  cp_nodelay on;

upstream  www.hws.com  {

   server   192.168.1.2:80;

   server   192.168.1.3:80;

   server   192.168.1.4:80;

   server   192.168.1.5:80;

}

upstream  blog.hws.com  {

    server   192.168.1.7:8080;

    server   192.168.1.7:8081;

    server   192.168.1.7:8082;

    }

server{

        listen  80;

        server_name  www.hws.com;

location / {

            proxy_pass        http://www.hws.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;

              }

log_format  www_s135_com  '$remote_addr - $remote_user [$time_local] $request '

''$status' $body_bytes_sent '$http_referer' '

''$http_user_agent' '$http_x_forwarded_for'';

access_log  /data1/logs/www.log  www_hws_com;

     }

server{

        listen  80;

        server_name  blog.hws.com;

location / {

            proxy_pass   http://blog.hws.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;

            }

log_format  blog_s135_com  '$remote_addr - $remote_user [$time_local] $request '

''$status' $body_bytes_sent '$http_referer' '

''$http_user_agent' '$http_x_forwarded_for'';

access_log  /data1/logs/blog.log  blog_hws_com;

      }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: