IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> nginx负载均衡配置及常见负载均衡策略 -> 正文阅读

[系统运维]nginx负载均衡配置及常见负载均衡策略

nginx负载均衡基本配置

负载均衡的意思,指的就是,当你后台有很多服务器的时候,有的性能好,有的性能差一些,怎么把传递过来的请求,比较合理的分配给这些服务器,就是负载均衡需要解决的问题。
nginx负载均衡配置
在proxy_pass后面配置,随便起个名字,然后,在upstream中配置后台服务器,默认是轮询模式,也就是挨个轮流。

http {
    upstream aaaa {
    ##默认是轮询模式
        server 127.0.0.1:80;
        server 127.0.0.2:80;
    }
    server {
        listen 80;
        server_name www.domain.com;
        location / { 
 		##为upstream起个名字,比如aaaa
            proxy_pass http://aaaa;
        }
    }
}

负载均衡常见策略

  1. 加权重weight
    比如,第一个服务器的权重是10,第二个是1,那么,分配到第一个的概率就是分配到第二个的10倍
http {
    upstream aaaa {
    ##默认是轮询模式
        server 127.0.0.1:80 weight=10;
        server 127.0.0.2:80 weight=1;
    }
    server {
        listen 80;
        server_name www.domain.com;
        location / { 
 		##为upstream起个名字,比如aaaa
            proxy_pass http://aaaa;
        }
    }
}
  1. down
    可以暂时关闭某个服务器
http {
    upstream aaaa {
    ##默认是轮询模式
        server 127.0.0.1:80 weight=10 down;
        server 127.0.0.2:80 weight=1;
    }
    server {
        listen 80;
        server_name www.domain.com;
        location / { 
 		##为upstream起个名字,比如aaaa
            proxy_pass http://aaaa;
        }
    }
}
  1. backup
    备用服务器,正常情况下不会用,别人都不行的时候,会临时顶上去
http {
    upstream aaaa {
    ##默认是轮询模式
        server 127.0.0.1:80 weight=10;
        server 127.0.0.2:80 weight=1 backup;
    }
    server {
        listen 80;
        server_name www.domain.com;
        location / { 
 		##为upstream起个名字,比如aaaa
            proxy_pass http://aaaa;
        }
    }
}

4 ip_hash
轮询和weight最大的问题,就是不能长期稳定的连接在同一台服务器上,如果是需要读取cookie或者session的情况,就不太适合了,因此,ip_hash就是用ip地址去通过hash算法映射到服务器上,同一个ip总是映射到相同服务器上。
但是一般不会用ip_hash,因为某些情况下,ip并不能保持一直不变,比如手机,走到不同的移动基站,ip会变。
5 least_conn
最少连接数,其实也不合理,会打破weight的权限设置,同时,如果新添加一台服务器,新服务器没初始化完成时,就会接到大量任务,导致速度缓慢。
6 fair
需要下载第三方插件,根据服务器响应时间转发请求。
会造成流量倾斜,会被网络速度影响较大。
7 url_hash
是根据请求资源的路径来进行hash计算,保持回话,定向流量转发,相同的url必定指向相同的服务器。
但是url_hash也并不适合维持会话,比如,登录时候是一个服务器,此时登陆成功,session和cookie已经写在这个服务器上了,然后请求了其他资源,可能又会映射到其他服务器上了,session和cookie就拿不到了。所以,url_hash更多是针对固定资源的,对于固定资源,根据url_hash去固定的服务器拿,比较合适。

总结

其实上面的各种策略,往往最简单的轮询反而是最好用的,那,如何解决会话的问题呢?
往往一般情况下,session会统一存在一个特定的服务器上,无论nginx讲任务映射到那台服务器上,这台服务器都会去这个特定的服务器上拿session,这个特定的服务器,往往就是一个redis服务器。

token

高并发状态,往往是通过token来校验和保存客户信息。
Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。
token可以解决哪些问题呢?
1 Token 完全由应用管理,所以它可以避开同源策略
2 Token 可以避免 CSRF 攻击(http://dwz.cn/7joLzx)
3 Token 可以是无状态的,可以在多个服务间共享

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:10:24  更:2022-07-03 11:14:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 0:07:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码