Nginx 负载均衡

官方网址

主要讲解几个参数具体查看官方解释:

一、服务器组

句法:	upstream name { ... }
默认:	-
内容:	http

定义一组服务器。服务器可以在不同的端口上侦听

二、后端服务器

句法:	server address [parameters];
默认:	-
内容:	upstream

注释:
address : 可以指定为域名或IP地址,可选端口,如果未指定端口,则使用端口80
parameters:
在这里插入图片描述

weight=number     设置服务器的权重,默认情况下为1
max_fails=number  默认情况下,不成功尝试的次数设置为1,失败的尝试次数
fail_timeout=time 默认情况下10秒,服务器将不可用的时间段、指定次数的不成功尝试与服务器通信的时间范围内,应考虑服务器不可用.
backup   将服务器标记为备份服务器。当主服务器不可用时,将传递请求。(该参数不能与 hash,ip_hash和随机 负载平衡方法一起使用。)
down	 将服务器标记为永久不可用。
resolve  定义域名解析,resolver必须在http块或相应的上游块中指定指令 。
slow_start=time  默认值为零,即禁用慢速启动。设置time服务器不正常运行时,或者在一段时间后服务器变为不可用时,服务器将其重量从零恢复到标称值的时间。(该参数不能与 hash,ip_hash和随机 负载平衡方法一起使用。)

三、负载平衡方法
1、ip_hash(固定)

句法:	ip_hash;
默认:	-
内容:	upstream

请求将基于客户端IP地址在服务器之间分配,该方法确保了来自同一客户端的请求将始终传递到同一服务器,除非该服务器不可用。在后一种情况下,客户端请求将传递到另一台服务器。最有可能的是,它也将永远是同一台服务器。
无法使用ip_hash负载平衡方法为服务器指定权重

2、least_conn(最少连接)

句法:	least_conn;
默认:	-
内容:	upstream
该指令出现在版本1.3.11.2.2中。

指定组应使用负载平衡方法,其中将请求传递到活动连接数最少的服务器,同时考虑服务器的权重。如果有多个这样的服务器,则依次使用加权循环平衡方法进行尝试。

3、 random(随机)

句法:	random [two [method]];
默认:	-
内容:	upstream
该指令出现在1.15.1版中。

指定组应使用负载平衡方法,其中将请求传递到随机选择的服务器,同时考虑服务器的权重。
可选two参数指示nginx随机选择 两个 服务器,然后使用指定的选择服务器method。默认方法是least_conn 将请求传递到活动连接数最少的服务器

四、该ngx_http_upstream_module模块支持以下嵌入式变量:

$upstream_addr 
保留IP地址和端口或上游服务器UNIX域套接字的路径。如果在请求处理期间联系了多个服务器,则它们的地址用逗号分隔,例如“ 192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock”。如果发生由“ X-Accel-Redirect”或error_page发起的从一个服务器组到另一个服务器组的内部重定向 ,则来自不同组的服务器地址用冒号分隔,例如“ 192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80”。如果无法选择服务器,则变量保留服务器组的名称。

$upstream_bytes_received
从上游服务器收到的字节数(1.11.4)。来自多个连接的值由逗号和冒号分隔,例如$ upstream_addr变量中的地址 。

$upstream_bytes_sent
发送到上游服务器的字节数(1.15.8)。来自多个连接的值由逗号和冒号分隔,例如$ upstream_addr变量中的地址 。

$upstream_cache_status
保持访问响应缓存(0.8.3)的状态。状态可以是“ MISS”,“ BYPASS”,“ EXPIRED”,“ STALE”,“ UPDATING”,“ REVALIDATED”或“ HIT”。

$upstream_connect_time
保留时间与上游服务器建立连接(1.9.1);时间以毫秒为单位,以秒为单位。对于SSL,包括握手所花费的时间。几个连接的时间之间用逗号和冒号分隔,例如$ upstream_addr变量中的地址 。

$upstream_cookie_name
name上游服务器在“ Set-Cookie”响应标头字段(1.7.1)中发送的 具有指定值的cookie。仅保存来自最后一个服务器响应的cookie。

$upstream_header_time
花费时间从上游服务器接收响应头(1.7.10);时间以毫秒为单位,以秒为单位。几次响应的时间之间用逗号和冒号分隔,例如$ upstream_addr变量中的地址 。

$upstream_http_name
保留服务器响应头字段。例如,“服务器”响应标头字段可通过

$upstream_http_server变量获得。将标头字段名称转换为变量名称的规则与以“ $ http_ ”前缀开头的变量的规则相同。仅保存来自最后一个服务器的响应的标头字段。

$upstream_queue_time
将请求保留在上游队列中的时间 (1.13.9);时间以毫秒为单位,以秒为单位。几次响应的时间之间用逗号和冒号分隔,例如$ upstream_addr变量中的地址 。

$upstream_response_length
保持从上游服务器获得的响应的长度(0.7.27);长度以字节为单位。几个响应的长度由$ upstream_addr变量中的逗号和冒号(如地址)分隔 。

$upstream_response_time
花费时间从上游服务器接收响应;时间以毫秒为单位,以秒为单位。几次响应的时间之间用逗号和冒号分隔,例如$ upstream_addr变量中的地址 。

$upstream_status
保留从上游服务器获得的响应的状态码。几个响应的状态码由逗号和冒号分隔,例如$ upstream_addr变量中的地址 。如果无法选择服务器,则该变量将保留502(错误网关)状态代码。

$upstream_trailer_name
从上游服务器(1.13.10)获得的响应末尾保留字段。

五、实验

主机名IP
upstream192.168.11.182
httpd192.168.11.184
nginx192.168.11.185

一、安装后端服务
考虑显示明显,测试偷懒直接在后面两台机器分别安装httpd、Nginx服务

1、httpd主机安装httpd服务

yum install  -y  httpd

2、启动httpd服务

 systemctl  start  httpd

3、访问httpd服务:
在这里插入图片描述

4、nginx 主机安装nginx服务
安装nginx

yum install  -y  nginx

5、启动Nginx服务

nginx

6、访问Nginx服务:
在这里插入图片描述

接下来我们配置主题负载均衡

二、配置负载均衡
1、master主机安装nginx服务不再累赘

yum install  -y  nginx

2、配置负载均衡

 vim default.conf
upstream dm {
        server 192.168.11.184 weight=3 max_fails=2  fail_timeout=20;

        server 192.168.11.185 weight=1 max_fails=2  fail_timeout=10;
}

#weight权重值 max_fails失败次数 fail_timeout有两层含义,一是在10s 时间内最多容许2 次失败;二是在经历了 2 次失败以后,10s时间内不分配请求到这台服务器。

server {
    listen       80;
    server_name  www.jiayoua.com;  #这个需要再windown下hosts配置下(192.168.11.182)IP: 域名 www.jiayoua.com 因为靠windown加载时候解析这个域名 可以再cmd输入命令 ipconfig /flushdns 刷新DNS解析缓存
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
            proxy_set_header Host $host;                 #默认情况下反向代理是不会转发请求的Host头部。如果需要转发,就要添加此条配置
            proxy_set_header X-Real-IP $remote_addr;     #在web服务器端获得用户的真实,ip$remote_addr——客户地址
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #如果客户端请求标头中不存在“ X-Forwarded-For”字段,则该$proxy_add_x_forwarded_for变量等于该$remote_addr变量。
            proxy_pass http://dm;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

3、检查配置语法

nginx -t

在这里插入图片描述

4、配置windown解析文件

C:\Windows\System32\drivers\etc\hosts

在这里插入图片描述

三、访问测试
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值