Nginx负载均衡、虚拟主机

目录

常用的6种负载均衡算法

轮询算法(round robin)默认

权重(weight)

响应时间(fair)

连接数(least_conn)

IP_hash

url_hash(第三方)

开发优选:一致性哈希

安装步骤:

虚拟主机


常用的6种负载均衡算法

轮询算法(round robin)默认

轮询方式:依次将每个请求按时间顺序逐一分配到不同的后端服务器,如果服务器down掉,能自动删除

适用场景:后台机器性能配置一致的情况下。集群内的机器可以自动管理(恢复和剔除)

upstream 按需起名 {    server 127.0.0.1:6000;    server 127.0.0.1:6002;    
}

权重(weight)

权重方式:根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比

适用场景:后端服务器配置(性能)不均的情况

upstream 按需起名 { server 127.0.0.1:6000 weight=2;    server 127.0.0.1:6002 weight=1;    
}

响应时间(fair)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身不支持fair,如果需要这种调度算法,则必须安装upstream_fair模块。

upstream 按需起域名 {    server 127.0.0.1:6000;    server 127.0.0.1:6002;    fair;    
}

连接数(least_conn)

根据后端服务器的连接状况进行分配客户请求,连接最少的服务器将被有限分配客户端请求。

upstream 按需起域名 {least_conn;server 127.0.0.1:8881;server 127.0.0.1:8882;server 127.0.0.1:8883;
}

IP_hash

每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器。

适用场景:解决session共享问题。

upstream 按需起域名 {    ip_hash;    server 127.0.0.1:6000;    server 127.0.0.1:6002;    
}

url_hash(第三方)

按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包

upstream 按需起域名 {    server squid1:3128;    server squid2:3128;    hash $request_uri;    hash_method crc32;    
}

开发优选:一致性哈希

一致性哈希原理:小林图解https://xiaolincoding.com/os/8_network_system/hash.html

ngx_http_upstream_consistent_hash 模块是负载均衡器,使用一个内部一致性hash算法来选择 合适的后端节点。

ngx_http_upstream_consistent_hash 模块是一个第三方模块,需要我们下载安装后使用

安装步骤:

一、github下载ngx_http_upstream_consistent_hash 

下载链接https://github.com/replay/ngx_http_consistent_hash

 二、下载成功后,将下载的压缩包上传到nginx服务器,也可直接git clone

三、进入安装nginx的目录,进行编译安装

./configure —add-module=/root/ngx_http_consistent_hash-mastermake && make install

四、在nginx.conf中配置负载均衡算法

upstream 按需起域名{consistent_hash $request_uri;server 127.0.0.1:6000;server 127.0.0.1:6002;
}该模块可以根据配置参数采取不同的方式将请求均匀映射到后端机器:consistent_hash $remote_addr:可以根据客户端ip映射
consistent_hash $request_uri:根据客户端请求的uri映射
consistent_hash $args:根据客户端携带的参数进映射

虚拟主机

 当网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。

例如将http://www.test1.comhttp://www.test2.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

server {listen 80 default_server;server_name _;return 444; # 过滤其他域名的请求,返回444状态码
}
server {listen 80;server_name www.test1.com; # www.test1.com域名location / {proxy_pass http://localhost:8080; # 对应端口号8080}
}
server {listen 80;server_name www.test2.com; # www.test2.com域名location / {proxy_pass http://localhost:8081; # 对应端口号8081}
}

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

server_name支持匹配方式:
<1>  完整匹配
<2>  通配符匹配
<3>  通配符结束匹配
<4>  正则匹配

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 移动端 后台返回数据流 查看PDF

使用步骤&#xff1a; 1.官网下载地址pdf.js 2.在项目的根目录新建hybrid文件夹&#xff0c;将下载的pdf.js压缩包解压后&#xff0c;复制到hybrid下的html文件夹中 3.在page文件夹下新建一个filePreview.vue页面&#xff0c;页面代码如下&#xff1a; <template><…

让浮动元素在一行显示

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;HTMLCSS &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; <div class"wrap"><div class"item">1</div><di…

java项目之疫情期间医院门诊管理系统ssm源码+文档

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的疫情期间医院门诊管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

网络协议与攻击模拟-15-DNS协议

DNS 协议 1、了解域名结构 2、 DNS 查询过程 3、在 Windows server 上部署 DNS 4、分析流量 实施 DNS 欺骗 再分析 一、 DNS 1、概念 ● DNS ( domain name system &#xff09;域名系统&#xff0c;作为将域名的 IP 地址的相互映射关系存放在一个分布式的数据库&#xff0…

adb 常用命令解析

查询设备列表 adb devices 安装应用app adb install xx.apk 卸载应用app adb uninstall [-k] 查看安装的app包名 adb shell pm list packages 查看前台 Activity adb shell dumpsys activity activities | grep mFocusedActivity 查看当前正在运行的APK的包名 adb shell dumpsy…

BlazorServer非鉴权的登录和注册

BlazorServer入门 简单的登录与注册的设计 &#x1f383; 前言&#xff1a; 为了简单起见&#xff0c;本文不采用Autherize标签等直接可用的工具来实现登录和注册的设计。 现创建一个BlazorServer模板,使用的.Net Core版本为3.1。 &#x1f3ab;Blazor需要创建页面(组件)时请直…

前端vue入门(纯代码)20

总以为自己还很年轻&#xff0c;却忽略了岁月的脚步&#xff0c;当身边的一道道风景变成了回忆&#xff0c;才忽然发现&#xff0c;风景依然在&#xff0c;而人已非少年。&#xff01;&#xff01;&#xff01; 【22.求和案例--纯Vue版本】 太简单了&#xff0c;直接上代码案…

【macOS 系列】下载brew或其他依赖包提示连接超时的问题解决

在下载brew或其他依赖包提示连接超时 错误信息&#xff1a; curl: (7) Failed to connect to [raw.githubusercontent.com](http://raw.githubusercontent.com/) port 443 after 34 ms: Connection refused最简单的方式&#xff0c;就是修改DNS&#xff1a;为114.114.114.114…

QSciintilla_gpl-2.10.8版本在QT6中编译问题解决方案汇总

1. QWheelEvent &#xff08;1&#xff09;event->delta()需修改为event->angleDelta().y()&#xff1b; 2. sprintf": 不是 "QString" 的成员 sprintf->asprintf 3. 无法打开QTextCodec .pro文件中添加 greaterThan(QT_MAJOR_VERSION, 5) { …

精进ARM计算架构,催生人工智能产业的巨大跨越

在优化ARM计算架构以支持人工智能应用方面&#xff0c;以下是一些常见的方法和技术&#xff1a; 算法和模型设计优化&#xff1a;选择合适的算法和模型结构对于在ARM架构上高效执行人工智能任务至关重要。设计轻量级的模型、减少冗余操作和参数量&#xff0c;使用适合ARM架构的…

基于改进莱维飞行和混沌映射的粒子群算法(10种混沌映射随意切换),附matlab代码

“ 本篇文章对粒子群优化算法进行改进&#xff0c;首先通过引入混沌映射机制&#xff0c;对其群体进行初始化&#xff0c;增加粒子群个体的多样性&#xff1b;然后在粒子群个体的位置更新公式上引入改进的莱维飞行机制&#xff0c;提高搜索精度&#xff0c;帮助粒子群个体跳出局…

MySQL数据库引擎及账号管理

目录 前言 二、MySQL数据库引擎 1.是什么 2.MySQL的核心 3.MySQL的存储引擎 a.InnoDB(MySQL默认引擎) b.ACID事务 c.四种隔离级别 d.MyISAM e.MEMORY&#xff08;Heap&#xff09; 4.存储引擎查看 三、命令行操作数据库 四、账号管理 前言 MySQL安装请看MySQL的安装…