代理和负载均衡

四层代理和七层代理

四层代理 是基于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;
   }
}
相关推荐
素雪风华3 分钟前
只使用Docker+Maven实现全自动化流程部署服务;Docker创建ffmpeg环境;
java·运维·后端·docker·容器·自动化·maven
roman_日积跬步-终至千里9 分钟前
【运维-架构】Starrocks生产级运维脚本设计与实现
运维
学习3人组10 分钟前
docker运行报错启动守护进程
linux·运维·centos
梵得儿SHI21 分钟前
SpringCloud 核心组件精讲:OpenFeign 实战指南-服务调用优雅实现方案(含自定义拦截器、超时重试、LoadBalance 整合避坑)
spring boot·spring·spring cloud·负载均衡·openfeign的核心应用·微服务调用·熔断组件
小张帅三代27 分钟前
华为昇腾服务器ubuntu安装Anaconda步骤
运维·服务器·ubuntu
杜子不疼.31 分钟前
【Linux】 进程控制(二):进程等待(wait/waitpid) 与 子进程获取(status)
linux·运维·服务器
炮院李教员33 分钟前
Ubuntu 24.04 安装common-extensions
linux·运维·ubuntu
满天星830357738 分钟前
【Linux】信号(下)
android·linux·运维·服务器·开发语言·性能优化
拾贰_C40 分钟前
【Ubuntu】怎么查询Nvidia显卡信息
linux·运维·ubuntu
牛老师讲GIS42 分钟前
2025年前端开发的未来:服务器优先、人工智能驱动、更贴近底层
运维·服务器·人工智能