Nginx的负载均衡配置

名词解释,网络搜索结果

正向代理(Forward Proxy):

客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

反向代理(Reverse Proxy):

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。

upstream节点的分配方式及配置说明

upstream resinserver{            # 定义负载均衡设备的Ip及设备状态
  ip_hash;
  server 127.0.0.1:8000 down;
  server 127.0.0.1:8080 weight=10 fail_timeout=5;
  server 127.0.0.1:6801;
  server 127.0.0.1:6802 backup;
} 

设备的状态:
1.down      表示单前的server暂时不参与负载
2.weight     权重,默认为1。权值越高被分配到的几率越大
3.max_fails   许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout max_fails次失败后,暂停的时间。
5.backup     其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

下面开始简要的负载均衡配置:

负载均衡:多台服务器平均分担负载,不会因某台服务器的负载宕机而某台服务器闲置的情况,也会不会因某台宕机而影响业务。

实验所需环境

准备三台已安装了nginx服务的服务器:
   A服务器ip: 10.10.10.10(Master)
   B服务器ip: 10.10.10.11
   C服务器ip: 10.10.10.12
测试域名: test.com
部署思路: A服务器作为主服务器,域名直接解析到A服务器上,由A服务器负载均衡到B和C服务器上
域名解析: 在要访问的Windows的hosts文件中加入: 10.10.10.10 test.com
首先确保三台服务都安装的相同版本或者版本差别不大的nginx服务并且启动,默认的nginx.conf文件

A主服务器的nginx.conf在http节点中加入如下代码

http {
......
......
upstream MyServer {       # 定义负载设备ip及其设备状态
    server 10.10.10.11:80;   # 做负载均衡的服务器地址B
    server 10.10.10.12:80;   # 做负载均衡的服务器地址C
   }
server {
    listen 80;
    location / {
            proxy_pass http://MyServer;          # 指向上面设置反向代理转发的服务器
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
   }
......
......
} 

/usr/local/nginx/sbin/nginx -s reload  # 保存后重启 nginx

B、C服务器nginx.conf在http节点中加入如下代码

http {
......
......
server {
    listen       80;        # 和A服务器中upstream中对应设置的server端口要相同
    server_name  test.com;     # 域名
    location / {
      root   html;
      index  index.html index.htm;
 }
 ......
 ......
 }
/usr/local/nginx/sbin/nginx -s reload  # 保存后重启 nginx

至此,简要的nginx负载已配置完毕,在添加了hosts的Windows主机上打开浏览器,输入http://test.com,就可以看到默认的index.html页面,刷新会在B/C服务器上负载轮询。

为了可以直观的查看2台负载,可以在修改B、C服务器的index.html默认文件,以此区别刷新页面的显示。同时也可以通过B、C服务器nginx的log日志查看访问记录

B服务器


C服务器

可以测试,分别把B、C的nginx服务stop,刷新页面是否正常,达到负载需求。

此时会发现A服务器只做了Master,负载分发,是否也可以提供服务呢。做如下设置后,就可以让ABC三台服务器做负载均衡

在A服务的nginx.conf 做如下设置,将A服务加入到upstream节点中,其它B、C服务器配置不变化

http {
.....
.....
     upstream MyServer {
            server 10.10.10.11:80;    # 做负载均衡的服务器地址B
            server 10.10.10.12:80;    # 做负载均衡的服务器地址C
            server 10.10.10.12:8081;   # 做负载均衡的服务器地址A(添加A服务的地址)
       }
     server {
             listen 80;
            location / {
            proxy_pass           http://MyServer;  # 指向上面设置反向代理转发的服务器
            proxy_set_header   Host   $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
           }
         }
     server {
            listen 8081;                 # 端口
            server_name test.com;    # 域名
            location / {
            root html;
            index index.html index.htm;
        }
        }
....
....
}
/usr/local/nginx/sbin/nginx -s reload # 重启nginx

再刷新页面,此时就可以发现三台主机页面都已分别显示

A服务器

B服务器

C服务器

时间: 2024-10-13 09:40:40

Nginx的负载均衡配置的相关文章

nginx四层负载均衡配置

nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 没安装则进行安装 操作步骤如下 至此 已保证在没中断服务的情况下成功添加stream模块 步骤二 配置 mysql负载均衡案例 修改Nginx配置文件nginx.conf 内容如下图 测试步骤如下 后端Mysql需做好读写分离 创建好相应权限的用户 到客户端连接Nginx创建wuguiyunwei

Nginx+Tomcat负载均衡配置

Tomcat安装:#官方网站下载tomcat 6.0.30或者其他版本: cd /usr/src && tar xzf apache-tomcat-6.0.30.tar.gz #直接解压就可以使用,解压完成执行,同时拷贝两个tomcat,命名为tomcat1 tomcat2 mv apache-tomcat-6.0.30 /usr/local/tomcat1 cp /usr/local/tomcat1 /usr/local/tomcat2 -r #分别修改tomcat1和tomcat2 端

CentOS6.5安装nginx及负载均衡配置

所有的安装包可以去以下地址下载,或者自行去官网下载,下面都有介绍. 所有安装包地址:http://download.csdn.net/detail/carboncomputer/9238037 原文地址:http://www.cnblogs.com/zhongshengzhen/p/nginx.html 1.下载PCRE, 是一个用C语言编写的正则表达式函数库 [[email protected] pcre-8.36]# cd /tmp/download/ [[email protected]

Linux记录-Nginx+Tomcat负载均衡配置

Nginx负载均衡配置及策略: 轮询(默认) 优点:实现简单缺点:不考虑每台服务器的处理能力配置示例如下:upstream www.xxx.com {# 需要负载的server列表server www.xxx.com:8080;server www.xxx.com:9080;}权重,使用的较多的策略优点:考虑了每台服务器处理能力的不同,哪台机器性能高就给哪台机器的权重高一些配置示例如下:upstream www.xxx.com {# 需要负载的server列表,weight表示权重,weight

Nginx + Tomcat 负载均衡配置详解

Nginx作为反向代理服务器,实现负载均衡.首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器. 在这过程中,对于浏览器来说,并不知道后端的存在, 相对于Tomact来说,当前的客户端是Nginx服务器.这就完成了一个代理的过程. 首先准备三台Linux服务器:IP地址分别为 192.168.1.61  192.168.1.62  192.168.1.63 其中61安装nginx服

生产环境使用nginx做负载均衡配置的五种策略

nginx的upstream目前支持5种方式的分配1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. 例如: upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 3.ip_hash每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后

傻瓜式安装nginx以及负载均衡配置

概述 需求 做了一个对内的http api应用.由于只有一台服务器,考虑到升级问题(即升级时会造成几秒钟用户访问不了),决定搭一个nginx,公共端口:9999,部署2套应用,端口:9981,9982.这样我升级时,先升级端口9981端口的应用,待用户可以访问后,再升级9982的应用,达到不中断访问的目的. 流程 搭建 安装依赖包 yum -y install make gcc gcc-c++ ncurses-devel #编译环境 yum -y install zlib zlib-devel

nginx+tomcat 负载均衡配置

一.下载nginx http://nginx.org/en/download.html 二.配置tomcat 2.1 tomcat01 修改三个端口,http端口为 8088,主页修改内容为:111111 2.2 tomcat02 修改三个端口,http端口为 8089,主页修改内容为:22222 三.配置nginx 编辑 E:\nginx-1.16.1\conf>nginx.conf 文件: #user nobody; worker_processes 1; #error_log logs/e

nginx常用负载均衡配置

轮询方式 轮询方式是默认方式,每次请求都会平均分配#server_name 改为你的主机IP或域名.server {    listen    80;    server_name  172.16.2.101;    location / {        proxy_pass http://server_url;    }}#需要负载的服务upstream server_url{    server 172.168.2.11:8080;    server 172.168.2.12:8080;