反向代理与负载均衡
什么是正向代理?
局域网中的用户想要直接访问网络是不可行的,只能通过代理服务器来访问,这种代理
服务就被称为正向代理。
什么是反向代理?
客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端。
此时,反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实的服务器IP地址。
负载均衡(LB)目的:为了解决单个节点的压力过大,造成web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务。
均衡:实现控制用户访问调度处理 均衡分配用户访问资源给后端服务器
负载:监控网站单台服务压力
代理配置过程:
用户访问 代理服务器 web01 nginx服务 静态页面信息
代理服务器配置信息
① 确认网站集群服务地址
② 确认网站集群服务端口
③ 编辑代理服务配置文件 配置代理服务器之前先安装好nginx服务
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://172.16.1.7:8080;
}
}
④ 配置解析信息,进行测试
负载均衡过程:
① 准备集群节点服务器
web01环境准备:echo web01 10.0.0.7 >/html/www/index.html
web02环境准备:echo web02 10.0.0.8 >/html/www/index.html
② 编写负载均衡配置
定义集群节点 uptream 实现分配资源给节点 proxy_pass
upstream myserver {
server 172.16.1.7:80;
server 172.16.1.8:80;
}
server {
listen 80;
server_name localhost;
include proxy_conf;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_403 http_404 http_429;
location / {
proxy_pass http://myserver;
}
}
③ 实现负载均衡测试
代理配置参数信息:
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
作用说明:实现四层代理功能
用法一:
proxy_pass http://172.16.1.7:8080
用法二:本地架构中需要有DNS服务/本地解析
proxy_pass http://www.oldboy.com:8080
用法三:实现集群负载
proxy_pass http://集群名称
用法四:实现向后端HTTPs协议发送请求
proxy_pass https://后端节点信息
Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
作用说明: 可以修改调整请求头部信息的内容
用法一: 简单修改请求头信息
proxy_set_header oldboy $proxy_host;
用法二: 显示真正指定网站信息
proxy_set_header host $http_host;
用法三: 可以收集访问网站用户信息(真实IP地址)
proxy_set_header X-Forwarderd-For $proxy_add_x_forwarded_for;
特点说明:
所有代理信息都会记录在X-Forwarderd-For 出现请求头
proxy_set_header X-Real-IP $remote_addr;
特点说明:
将客户端代理信息都会记录在X-Real-IP出现请求头
结合:
proxy_set_header X-Forwarderd-For $remote_addr;
扩展提升代理性能指令:优化
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s; 推荐20s;
Context: http, server, location
作用说明: 代理与客户端连接超时指令
Syntax: proxy_send_timeout time;
Default: proxy_send_timeout 60s; 推荐10s;60s
Context: http, server, location
作用说明: 用户端请求间隔超时时间
Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s; 推荐10s;60s
Context: http, server, location
作用说明: 代理端响应间隔超时时间
Syntax: proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location
作用说明: 开启代理服务缓冲功能
Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k; 内存 页--- 磁盘 block 4k
Context: http, server, location
作用说明: 缓冲区默认页大小指定
Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location
作用说明: 缓冲区默认总大小指定
Syntax: proxy_http_version 1.0 | 1.1;
Default: proxy_http_version 1.0;
Context: http, server, location
作用:修改HTTP协议版本信息
PS:查看系统内存页默认大小:getconf PAGE_SIZE
cat /etc/nginx/proxy_conf (将代理模块的各个功能通过添加内置文件的方式添加)
proxy_connect_timeout 30s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 10 4k;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
负载均衡配置参数:
Syntax: upstream name { ... }
Default: —
Context: http
作用说明:创建网站web集群信息
Syntax: server address [parameters];
Default: —
Context: upstream
作用说明:指定集群节点信息
用法一:地址加端口进行指定
server 172.16.1.7:80
用法二:域名加端口进行指定
server web01:80
算法配置指令:分配流量算法
① 平均分配 rr 轮询调度
② 权重分配 wrr 权重轮询
upstream myserver {
server 10.0.0.7:80 weight=3;
server 10.0.0.8:80 weight=2;
server 10.0.0.9:80 weight=1;
}
③ 按照连接数分配:
Syntax: least_conn;
Default: —
Context: upstream
④ 热备分配原则:
upstream myserver {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80 backup;
}
⑤ 哈希算法分配方式:会话混乱情况可以避免
upstream myserver {
ip_hash;
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
健康检查指令:后端网络状态监控检查功能 LVS---与此区别就是不带健康检查功能
① 健康检查最大失败次数 max_fails
upstream myserver {
server 10.0.0.7:80 max_fails=10;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
② 健康检查失败之后间隔时间 fail_timeout (如果代码出错则显现出来)
upstream myserver{
server 10.0.0.7:80 max_fails=10 fail_timeout=10s;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
③ 将后端正常消息进行反馈 错误消息不要进行相应
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_403 http_404 http_429;
当出现以上错误状态码信息时,都忽略此节点响应信息
浙公网安备 33010602011771号