Nginx-负载均衡-动静分离-虚拟主机

news2024/9/21 23:39:56

负载均衡

负载均衡基本使用

1 配置上游服务器

upstream myserver { #是server外层
  server  ip1:8080;
  server  ip1:8080;       
}

2 配置代理

server {
 location  / {         
    proxy_pass  http://myserver;#请求转向myserver 定义的服务器列表  注意这个http不能丢       
    
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }

负载均衡的策略

轮询

1 轮询
默认的权重都是1,则访问顺序为ABABAB

upstream myserver { 
  server  ip1:8080;
  server  ip1:8080;       
}

2 加权轮询 则访问顺序为ABBABB

upstream myserver { 
    server  ip1 weight=1;
    server  ip2 weight=2;
}

3 热备
当我们第一台服务器能够正常提供服务的时候,服务器2是不会参与服务的,当我们的服务1 有问题了则会切换至服务器2

upstream myserver { 
  server  ip1:8080;
  server  ip2:8080; backup;  #热备     
}

4 复杂轮询

upstream myserver { 
  server ip1:8080 weight=2 max_fails=1 fail_timeout=10; #这里的fail_timeout有两层意思,第一层意思是在10s内允许的失败菜蔬为1 第二层意思是 当10内失败过一次服务器暂停服务10s后继续服务。
  server ip2:8080 weight=1 max_fails=3 fail_timeout=20;  
  server ip3:8080 backup; #热备 
  server ip4:8080 down;
}

upstream myserver { 
  server ip1:8080 max_fails=1 fail_timeout=10;
  server ip1:8080 max_fails=1 fail_timeout=10;  
}
  • down:表示当前的server暂时不参与负载均衡,该状态一般会对需要停机维护的服务器进行设置。
  • backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  • max_fails:表示在 fail_timeout 时间内最多允许的失败次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  • fail_timeout:经历了max_fails次失败后,暂停服务的时间,默认为 10 秒。max_fails可以和fail_timeout一起使用。
  • weight:默认为1。weight越大,负载的权重就越大。
IP HASH

nginx会让相同的客户端ip请求相同的服务器。如果是有状态的服务则应该采用ip_hash 比如登录功能,在第一台服务器记录了登录的状态,第二次邀请求同一台服务器才能读取到这个登录态。当然了会有其它的方式来解决这些问题,这里不做讨论。
1 普通hash

upstream myserver { 
  ip_hash ;
  server  ip1:8080 ;
  server  ip2:8080 ;
}

2 复杂hash

upstream myserver { 
  ip_hash ;
  server ip1:8080 weight=2 max_fails=3 fail_timeout=20;
  server ip2:8080 weight=1 max_fails=3 fail_timeout=20;
}

对于该策略需要注意以下几点:

  • 在 nginx1.3.1 版本之前,该策略中不能指定 weight 属性。
  • 该策略不能与 backup 同时使用。
  • 此策略适合有状态服务,比如 session。
  • 当有服务器宕机,必须手动指定 down 属性,否则请求仍是会落到该服务器。

3 least_conn
把请求转发给连接数最少的服务器。

upstream myserver { 
  least_conn ;
  server ip1:8080 weight=2 max_fails=3 fail_timeout=20;
  server ip2 weight=1 max_fails=3 fail_timeout=20;  
  server ip3:8080 backup; #热备 
  server ip4:8080 down;    
}

动静分离

upstream static.liyong.com{ #两台静态资源服务器,两台静态资源要一致
    server ip1:80;
    server ip2:80;
}

upstream dynamic.liyong.com{ #两台动态资源服务器
    server ip3:8081;
    server ip4:8082;
}

server {
    listen 80;
    server_name localhost;
    
    location ~* .*(css|js|html|images).+ {
        proxy_pass http://static.liyong.com;
    }
    location / {
        proxy_pass http://dynamic.liyong.com;
    }
}

静态资源服务器:

location / { #可以只用一个/拦截所有的请求根据目录来分类 也可以再分类
     root statics;
 }

虚拟主机

一个server就是一个虚拟主机

server {
    listen 80;
    server_name www.68.com;

    location / {
            proxy_pass http://www.68.com;
    }
}
server {
    listen 80;
    server_name bj.68.com;

    location / {
            proxy_pass http://bj.68.com;
    }
}
server {
    listen 80;
    server_name sh.68.com;

    location / {
            proxy_pass http://sh.68.com;
    }
}

每个虚拟主机负载均衡


upstream  www.68.com {
	127.0.0.1:9081 weight=1;
	127.0.0.1:9082 weight=2;
}

upstream  bj.68.com {
	127.0.0.1:9083 weight=1;
	127.0.0.1:9084 weight=2;
}

upstream  bj.68.com {
	127.0.0.1:9085 weight=1;
	127.0.0.1:9086 weight=2;
}

这样就实现了访问不同域名,就负载到不同的服务器,分地区也相当于分流

http://sh.68.com/path
在这里插入图片描述
在这里插入图片描述
http://bj.68.com/path
在这里插入图片描述
在这里插入图片描述

参考资料 极客时间 nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1230780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你知道STM32和51单片机的区别吗?

你知道STM32和51单片机的区别吗? 51单片机是很经典的一款单片机。事实上很多电信专业本科阶段都会以这个单片机作为入门。最近很多小伙伴找我,说想要一些STM32的资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心…

8086/8088 存储器分段概念

8086/8088 存储器分段概念 这一节主要讲述8086/8088 存储器分段的概念。 目的 从8086 CPU开始采用了分段的方法管理存储器,只有充分理解存储器分段的概念和存储器逻辑地址和物理地址的关系,才能有助于我们掌握8086/8088汇编语言。 存储器分段的原因 在此…

【EI会议征稿】2024年智慧城市与信息系统国际学术会议 (ICSCIS 2024)

2024年智慧城市与信息系统国际学术会议 (ICSCIS 2024) 2024 International Conference on Smart City and Information System 随着互联网技术的发展,城市化进程的深入,智慧城市的研究与发展越来越普遍,运用物联网、云计算、大数据等先进信…

数据结构:枚举

概念 枚举主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式: 比如下面的例子: public static final int RED 1; public static final int GREEN 2; public static final int BLACK 3; 利用常量…

想做副业在哪里找?做好这些副业平台就够了

每个人在生活中都有一些额外的需求和理想,所以越来越多的人开始寻找副业来实现小目标。但是,但是寻找副业的过程并不容易,需要考虑到自己的时间和能力,还有选择一个靠谱的平台。其实,副业平台并不太难,只要…

被OpenAI开除后,创始人奥特曼在微软找到了新工作

微软首席执行官纳德拉宣布,OpenAI创始人Sam Altman和Brockman及其同事将加入微软。随后,Altman转发了他的推特。 此前,外媒消息称,OpenAI首席科学家伊尔亚苏茨克维(Ilya Sutskever)周日晚告知公司员工&…

springboot中动态api如何设置

1.不需要编写controller 等mvc层,通过接口动态生成api。 这个问题,其实很好解决,以前编写接口,是要写controller,需要有 RestController RequestMapping("/test1") public class xxxController{ ApiOperat…

使用 Amazon VPS 探索存储选项:实用指南

文章作者:Libai 在这个数字化时代,云计算已经成为了企业的必需品,它为我们带来了可扩展性、灵活性和成本效益。作为一家领先的云服务提供商,亚马逊网络服务(Amazon Web Services)提供了各种各样的服务&…

栈和队列知识点+例题

1.栈 1.1栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除操作的一端成为栈顶,另一端成为栈底。遵守后进先出的原则(类似于弹夹) 压栈:栈的插入操…

Linux搭建服务器环境,挂载SpringBoot+VUE项目

本地环境 Ubuntu20.04 服务器环境 CentOS7.6 购买服务器 以阿里云轻量服务器(适合初学者)为例,自行选择规格进行购买 购买完成后,获取服务器公网IP,同时重置密码,设置服务器密码 配置防火墙 点击实例ID&am…

极智嘉(Geek+)官宣重磅合作伙伴,再度赋能仓储自动化解决方案落地

近日,全球仓储机器人引领者极智嘉(Geek)再度官宣重磅合作伙伴,其与全球先进的物流自动化和软件公司FORTNA达成了战略合作。 当前,电商领域发展迅速,高效、可拓展的订单履行方案需求急剧增长。基于这一形势,极智嘉与FO…

OpenCV [c++](图像处理基础示例小程序汇总)

OpenCV [c++](图像处理基础示例小程序汇总) 推荐 原创 NCUTer 2023-04-04 14:18:49 文章标签 Image 图像处理 文章分类 计算机视觉 人工智能 在51CTO的第一篇博文 阅读数1467 一、图像读取与显示 #include<opencv2/opencv.hpp> #include<iostream>using…

git问题: git@10.18.*.*: Permission denied (publickey,password)

遇到的问题&#xff1a; openSSH版本太高&#xff0c;openssh高版本默认禁止ssh-rsa加密算法&#xff0c;直接换ed25519 执行以下命令&#xff1a; 在.ssh目录下执行&#xff1a;ssh-keygen -t ed25519 -C “youremail.com” ssh-add ~/.ssh/id_ed25519 将id_ed25519.pub添加…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑多重不确定性和潜在博弈的楼宇群电能优化调度策略》

这个标题涉及到楼宇群电能的优化调度策略&#xff0c;并强调了两个重要的方面&#xff1a;多重不确定性和潜在博弈。 楼宇群电能优化调度策略&#xff1a; 这指的是在一个涉及多个楼宇&#xff08;建筑物&#xff09;的群体中&#xff0c;对电能的使用进行优化调度的策略。这可…

深度学习(小土堆)

self代表当前类的实例&#xff0c;并用于访问实例的属性和方法,主要方便后面访问属性或者方法。 启动事件文件夹 进行上一步需要在pycharm中设置当打开Terminal终端时&#xff0c;自动进入虚拟环境 防止与别人冲突可以修改端口号 将图像的数据类型转为numpy trans…

微信小程序配置企业微信的在线客服

配置企业微信后台 代码实现 <button tap"openCustomerServiceChat">打开企业微信客服</button>methods: {openCustomerServiceChat(){wx.openCustomerServiceChat({extInfo: {url: 你刚才的客服地址},corpId: 企业微信的id,showMessageCard: true,});} …

【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验

上一课&#xff1a; 【小黑嵌入式系统第八课】初识PSoC Creator™开发——关于PSoC Creator&下载、创建项目、单片机中的hello world&#xff08;点亮一个led) 文章目录 1 实验目的2 实验要求3 实验设备4 实验原理1. 基于 PWM 原理的 LED 亮度控制2. 时间的计量3. 按键抖动…

FPGA_IIC代码-正点原子 野火 小梅哥 特权同学对比写法(2)

FPGA_IIC代码-正点原子 野火 小梅哥 特权同学对比写法&#xff08;2&#xff09; 工程目的I2C 单字节写操作I2C 随机读操作EEPROM 字节读写整体框图模块功能简介I2C 驱动模块模块框图跨时钟域处理状态转移图 波形分析单字节写操作局部波形图&#xff08;一&#xff09;单字节写…

IP地址的分包与组包:网络通信的关键技术解析

在计算机网络中&#xff0c;IP地址的分包与组包是网络通信过程中关键的技术环节&#xff0c;分别涉及将数据拆分为适当大小的包以及在接收端重新组装这些包的过程。这两个过程对于确保高效、可靠的数据传输至关重要。以下将深入探讨IP地址的分包与组包的概念、原理以及在网络通…

进程管理(三)

生产者—消费者问题及初步解决方案 放了数据后,有通知消费者的义务。 空缓冲区、满缓冲区作为资源,设计为信号量 关于生产者—消费者初步解决方案的反思 秘诀:资源信号量wait在前,互斥信号量wait在后 关于生产者—消费者初步解决方案的改进