• 代理和负载均衡


    四层代理和七层代理

    四层代理 是基于tcp/udp协议的 IP+端口,数据包转发,对请求没有任何操作和处理

    七层代理 基于http协议,对请求的内容进行处理,转发到后端服务器

    速度:四层的速度快,内核,不做任何处理,转发速度比较快

    七层走的是用户态,需要对内容进行处理,转发速度相对较慢

    正向代理和反向代理

    正向代理:都是通过代理服务器访问,明确指向后端服务器,一般的都是一对一

    反向代理:也是通过代理服务器访问,一个代理服务器会有多台后端服务器提供代理服务器进行转发请求,一对多

    只有一对多,才涉及负载均衡的算法问题

    算法

    1、轮询 ,默认算法可以不加

    2、加权轮询,给后端服务器设置不同的权重,通过权重分发代理客户端的请求,权重高的轮询的次数就多,权重的少,轮询的次数就比较少,但是不绝对,权重高德服务器会被频繁的请求

    weight=权重值;

    3、最小连接数,会把请求转发到当前连接数较小的服务器,避免请求全集中到高性能或者高权重的服务器,可以和加权轮询配合使用

    使用大部分场景

    4、ip_hash,根据客户端请求的IP地址生成一个hash值,然后转发到后端服务器,下一次在访问,还是之前的服务器,而且还有缓存

    需要把请求客户端地址,转发到固定的服务器,可以使用这个方法,大并发可以,小并发也可以,但是后端服务器发生变化,请求的后端服务器也会发生变化(后端服务器数量变少了,后端服务器的数量增加了,请求的地址未必会变)

    缩容的情况,业务量比较少,不需要那么多后端服务器,才会缩容,只会扩

    5、url_hash,根据请求的url地址生成一个hash值,然后转发到后端服务器,但是下次访问,如果请求的url不变,还是上次访问的后端服务器,而且也有缓存

    url地址发生变化,或者后端服务器数量也会发生变化,可能会变更后端服务器的地址

    实验

    正向代理配置

    类似于vpn ,科学上网,加速器

    关闭防火墙安全机制

    1. location / {
    2. root html;
    3. index index.html index.htm;
    4. proxy_pass http://指定的服务器
    5. }

    企业架构都是反向代理

    客户端通过代理服务器访问,但是后端有多台

    七层代理

    1. #在http全局配置
    2. upstream 自定名称 {
    3. server IP地址;
    4. server IP地址;
    5. }
    6. location / {
    7. root html;
    8. index index.html index.htm;
    9. proxy_pass http://自定名称;
    10. }

    负载均衡的算法

    加权轮询

    1. upstream 自定名称 {
    2. server IP地址 weight=2;
    3. server IP地址 weight=3;
    4. }
    5. 在http全局配置
    6. location / {
    7. root html;
    8. index index.html index.htm;
    9. proxy_pass http://自定名称;
    10. }

    最少连接数算法

    1. upstream 自定名称 {
    2. least_conn;
    3. server IP地址 weight=2;
    4. server IP地址 weight=3;
    5. }
    6. 在http全局配置
    7. location / {
    8. root html;
    9. index index.html index.htm;
    10. proxy_pass http://自定名称;
    11. }

    ip_hash

    1. upstream 自定名称 {
    2. ip_hash;
    3. server IP地址 weight=2;
    4. server IP地址 weight=3;
    5. }
    6. 在http全局配置
    7. location / {
    8. root html;
    9. index index.html index.htm;
    10. proxy_pass http://自定名称;
    11. }

    url_hash

    1. upstream 自定名称 {
    2. hash $request_uri consistent;
    3. server IP地址 weight=2;
    4. server IP地址 weight=3;
    5. }
    6. 在http全局配置
    7. location / {
    8. root html;
    9. index index.html index.htm;
    10. proxy_pass http://自定名称;
    11. }

    反向代理

    基于域名

    1. #改主机名
    2. upstream 自定名称 {
    3. server 域名1 weight=2;
    4. server 域名2 weight=3;
    5. }
    6. location / {
    7. root html;
    8. index index.html index.htm;
    9. proxy_pass http://自定名称;
    10. proxy_set_header HOST $host;
    11. #请求本机的IP地址
    12. proxy_set_header X-Real-IP $remote_addr;
    13. #传给后端服务器
    14. }
    15. #改变剩余两台客户机的域名加主机

    四层反向代理

    1. 在全局模块中写
    2. stream {
    3. upstream test {
    4. server IP地址1:80;
    5. server IP地址2:80;
    6. }
    7. server {
    8. listen 80;
    9. #监听端口
    10. proxy_pass test;
    11. }
    12. }

  • 相关阅读:
    uniapp uni.showModal 出现点击没有反应
    【毕业设计】基于java+swing的模拟写字板设计与实现(毕业论文+程序源码)——模拟写字板
    java157-线程的引入
    【国产MCU】-CH32V307-通用定时器(GPTM)-编码模式与旋转编码器驱动
    软件产品生命周期(SDLC)四个阶段
    第4章:网络层
    Redis的优惠券秒杀问题(五)全局唯一ID 以及 秒杀下单
    h3c交换机配置教程命令(新手配置交换机详细教程)
    大二学生JavaScript实训大作业——动漫秦时明月7页 期末网页制作 HTML+CSS+JavaScript 网页设计实例 企业网站制作
    Java 虚拟机操作码探秘:常量指令
  • 原文地址:https://blog.csdn.net/qq_71147683/article/details/133865355