代理和负载均衡-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
四层代理和七层代理
四层代理 是基于tcp/udp协议的 IP+端口数据包转发对请求没有任何操作和处理
七层代理 基于http协议对请求的内容进行处理转发到后端服务器
速度四层的速度快内核不做任何处理转发速度比较快
七层走的是用户态需要对内容进行处理转发速度相对较慢
正向代理和反向代理
正向代理都是通过代理服务器访问明确指向后端服务器一般的都是一对一
反向代理也是通过代理服务器访问一个代理服务器会有多台后端服务器提供代理服务器进行转发请求一对多
只有一对多才涉及负载均衡的算法问题
算法
1、轮询 默认算法可以不加
2、加权轮询给后端服务器设置不同的权重通过权重分发代理客户端的请求权重高的轮询的次数就多权重的少轮询的次数就比较少但是不绝对权重高德服务器会被频繁的请求
weight=权重值
3、最小连接数会把请求转发到当前连接数较小的服务器避免请求全集中到高性能或者高权重的服务器可以和加权轮询配合使用
使用大部分场景
4、ip_hash根据客户端请求的IP地址生成一个hash值然后转发到后端服务器下一次在访问还是之前的服务器而且还有缓存
需要把请求客户端地址转发到固定的服务器可以使用这个方法大并发可以小并发也可以但是后端服务器发生变化请求的后端服务器也会发生变化后端服务器数量变少了后端服务器的数量增加了请求的地址未必会变
缩容的情况业务量比较少不需要那么多后端服务器才会缩容只会扩
5、url_hash根据请求的url地址生成一个hash值然后转发到后端服务器但是下次访问如果请求的url不变还是上次访问的后端服务器而且也有缓存
url地址发生变化或者后端服务器数量也会发生变化可能会变更后端服务器的地址
实验
正向代理配置
类似于vpn 科学上网加速器
关闭防火墙安全机制
location / {
root html;
index index.html index.htm;
proxy_pass http://指定的服务器
}
企业架构都是反向代理
客户端通过代理服务器访问但是后端有多台
七层代理
#在http全局配置
upstream 自定名称 {
server IP地址;
server IP地址;
}
location / {
root html;
index index.html index.htm;
proxy_pass http://自定名称;
}
负载均衡的算法
加权轮询
upstream 自定名称 {
server IP地址 weight=2;
server IP地址 weight=3;
}
在http全局配置
location / {
root html;
index index.html index.htm;
proxy_pass http://自定名称;
}
最少连接数算法
upstream 自定名称 {
least_conn;
server IP地址 weight=2;
server IP地址 weight=3;
}
在http全局配置
location / {
root html;
index index.html index.htm;
proxy_pass http://自定名称;
}
ip_hash
upstream 自定名称 {
ip_hash;
server IP地址 weight=2;
server IP地址 weight=3;
}
在http全局配置
location / {
root html;
index index.html index.htm;
proxy_pass http://自定名称;
}
url_hash
upstream 自定名称 {
hash $request_uri consistent;
server IP地址 weight=2;
server IP地址 weight=3;
}
在http全局配置
location / {
root html;
index index.html index.htm;
proxy_pass http://自定名称;
}
反向代理
基于域名
#改主机名
upstream 自定名称 {
server 域名1 weight=2;
server 域名2 weight=3;
}
location / {
root html;
index index.html index.htm;
proxy_pass http://自定名称;
proxy_set_header HOST $host;
#请求本机的IP地址
proxy_set_header X-Real-IP $remote_addr;
#传给后端服务器
}
#改变剩余两台客户机的域名加主机
四层反向代理
在全局模块中写
stream {
upstream test {
server IP地址1:80;
server IP地址2:80;
}
server {
listen 80;
#监听端口
proxy_pass test;
}
}