主要讲解几个参数具体查看官方解释:
一、服务器组
句法: 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.1和1.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 |
---|---|
upstream | 192.168.11.182 |
httpd | 192.168.11.184 |
nginx | 192.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
三、访问测试