Nginx搭建负载均衡集群
(1).实验环境
youxi1 192.168.5.101 负载均衡器
youxi2 192.168.5.102 主机1
youxi3 192.168.5.103 主机2
(2).Nginx负载均衡策略
nginx的负载均衡用于upstream模板定义的后端服务器列表中选取一台服务器接收用户的请求。一个基本的upstream模块如下:
1 2 3 4 5 |
|
在upstream模块配置完成后,要让指定的访问反向代理到服务器列表,格式如下:
1 2 3 4 |
|
扩展:nginx的location配置规则:http://outofmemory.cn/code-snippet/742/nginx-location-configuration-xiangxi-explain
这样就完成了最基本的负载均衡,但是这并不能满足实际需求。目前Nginx的upstream模块支持6种方式的负载均衡策略(算法):轮询(默认方式)、weight(权重方式)、ip_hash(依据ip分配方式)、least_conn(最少连接方式)、fair(第三方提供的响应时间方式)、url_hash(第三方通过的依据URL分配方式)。
1)轮询
最基本的配置方法,是upstream模块默认的负载均衡策略。每个请求会按时间顺序平均分配到不同的后端服务器。有如下参数:
fail_timeout | 与max_fails结合使用 |
max_fails | 在fail_timeout参数设置的时间内最大失败次数。如果在这个时间内,所有该服务器的请求都失败了,那么认为该服务器停机 |
fail_time | 服务器被认为停机的时长,默认10s(被认为停机的服务器尝试间隔?) |
backup | 标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里 |
down | 标记服务器永久停机 |
注意:1.down标记的服务器会自动剔除;2.缺省就是轮询;3.此策略适合服务器配置无状态且短平块的服务使用
2)weight
权重方式,在轮询策略的基础上指定轮询的几率。也可以认为是在轮询的基础上新增了一个weight的参数,此参数指定轮询的几率,值为number。upstream模块配置模板如下:
1 2 3 4 5 |
|
在该例子中,没有weight参数的服务器默认为1,weight的数值与访问比例成正比,所有weight值的总和为一个循环单位,服务器自身的weight值为循环单位内的轮询次数。
注意:1.权重越高分配到的请求越多;2.此策略可以和least_conn策略、iphash策略结合使用;3.此策略比较适合服务器硬件配置差距较大的情况。
3)ip_hash
依据ip分配方式,指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端请求一致发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。upstream模块配置模板如下:
1 2 3 4 5 6 |
|
注意:1.nginx1.3.1之前的版本不能在ip_hash中使用权重(weight);2..ip_hash不能与backup同时使用;3.此策略适合有状态服务的程序,比如session;4.当有服务器需要剔除,必须手动down掉。
4)least_conn
最少连接方式,把请求发给链接数最少的后端服务器。轮询是把请求平均分配给各个后端,使它们的负载大致相同。但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。upstream模块配置模板如下:
1 2 3 4 5 6 |
|
注意:此策略适合请求处理时间长短不一造成的服务器过载情况。
5)fair
响应时间方式,按照服务器端的响应时间来分配请求,响应时间短的优先分配。upstream模块配置模板如下:
1 2 3 4 5 6 |
|
注意:需要安装第三方插件。
6)url_hash
url分配方式,按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再次收到请求,就可以在缓存中读取。upstream模块配置模板如下:
1 2 3 4 5 6 |
|
注意:1.需要安装第三方插件;2.uri,是i,不是小写的L。
(3).实验
1)在负载均衡器youxi1上编译安装nginx
安装nginx的依赖包
1 |
|
上传nginx源码包nginx-1.14.1.tar.gz,解压安装
1 2 3 4 5 6 |
|
参数说明:
--with-http_dav_module,启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)默认情况下为关闭,需编译开启;
--with-http_stub_status_module,启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态);
--with-http_addition_module,启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求);
--with-http_sub_module,启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本);
--with-http_flv_module,启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件);
--with-http_mp4_module,启用对mp4文件支持(提供寻求内存使用基于时间的偏移量文件)。
生成nginx用户
1 |
|
启动并添加开机自启
1 2 3 |
|
如果防火墙是开启的记得添加端口号
1 2 3 |
|
查看下界面,看看nginx是否正常安装
测试完成后,修改nginx的配置文件,最后重启nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
2)在youxi2和youxi3上布置网页程序
1 2 3 4 5 6 7 8 9 10 11 |
|
如果防火墙是开启的,记得添加端口号
1 2 3 4 5 6 7 |
|
3)测试
首先测试html页面
接着测试php页面
最后测试其他页面
转自:https://www.cnblogs.com/diantong/p/11208508.html
相关文章:

如何卸载iPhone模拟器中的自己创建的程序
当你使用iPhone模拟器测试过很多程序以后,模拟器中放置了大量无用的程序。 一直在找如何清除这些程序,其实后来发现很简单。 模拟器本身就带将这些程序清除到垃圾箱的功能。如下图所示:点击上图所示的命令“还原内容和设置...”后出现如下图所…

MySQL存储引擎的介绍
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。 现在许多数据库管理系统都支持多种不同的…

Maya和Arnold的高级照明实践
Maya和Arnold的高级照明实践 时长6小时20分钟 包括项目文件 1920X1080 MP4 语言:英语机译中文字幕 大小:14.8G 题目:FXPHD - MYA312 - Maya & Arnold的高级照明实践 FXPHD - MYA312 - 玛雅和阿诺德的高级照明实践。 信息:本…

读《大道至简》第六章感想
语言确实是种工具,但我们不应该忽略工具的作用。我们想什么,去做什么事会决定使用什么工具,但反过来我们有什么工具也会决定我们怎么想,怎么做事。如果工具没有提供这个功能,你就不会向这方面想,也就不会这…

Java学习总结:1
Java的特性 1.简洁有效 2.可移植性 3.面向对象 4.解释型 5.适合分布式计算 6.拥有较好的性能 7.健壮、防患于未然 8.具有多线程处理能力 9.具有较高的安全性 10.是一种动态语言 11.是一种中性结构 Java在开发上有三个分支 一.Java EE(Java企业级开发) 二.Java SE(Java标准版…

2022-2028年中国轻型输送带行业市场发展规模及市场分析预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国轻型输送带行业市场行业相关概述、中国轻型输送带行业市场行业运行环境、分析了中国轻型输…

从零开始写个编译器吧 - 单词化简述(Tokenization)
2019独角兽企业重金招聘Python工程师标准>>> 实际上,所谓的源代码,我们可以将其视为一段长长的字符串。所谓字符串,即是字符的有序集。但是,字符本身作为编译器的输入单位,粒度实在太小了,因此&…

springboot+mybatis ,出现多于的参数导致查询数据缺少
在springbootmybatis 中,经常会有多于的字段遗留在xml文件中,这种情况正常人会以为会判断空和null状态,不影响sql语句,但是实际上会有影响, 因为在parameter中未定义,是undefined,而不是null和空…

【C4D教程】Octane渲染大师班
【C4D教程】Octane渲染大师班 本套教程共9大章 4小时20分 高清1920X1080 mp4 视频 英语机译中文字幕 大小 17.8G 信息。 云桥网络 平台获取教程 学习使用Cinema 4D和Octane Render创建惊人渲染的过程和工作流程。 实践分析和指导。 7个项目文件可供学习和借鉴。 C4D Octa…

Java学习总结:2
java的注释 /***文档注释*这种注释的内容会被解释成程序的正式文档*/ public class TestDemo {public static void main(String args[]){System.out.println("Hello MLDN");//System的首字母要大写,否则会显示程序包system不存在/*多行注释............*…

Android采用Application总结一下
什么是 Application Application和Activity,Service由于是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象。用来存储系统的一些信息。通常我们是不须要指定一个Application的,这时系统会自己主动帮我们创建ÿ…

nginx介绍及常用功能
什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大…

网页制作常见的问题(怎样兼容IE6/IE7/火狐浏览器)
1、IE6双边距问题? 在IE6的浏览器中明明设置的是10px的margin却为什么显示的是20px的margin其实这个Ie6的一个双边距BUG 例如: <style type"text/css"> body {margin:0} div { float:left; margin-left:10px; width:300px; height:300px; border:1p…

Ubuntu系统---安NVIDIA 驱动后 CUDA+cuDNN 安装
Ubuntu系统---安NVIDIA 驱动后 CUDAcuDNN 安装 --------------------------------------------20190726--------------------------------------------------------------------------------------------- 上接《Ubuntu系统---NVIDIA 驱动安装》。预配置环境:Ubunt…

Maya基础入门学习教程
Maya基础入门学习教程 视频:.MKV, 1280x720, 共57节课 时长 4小时25分钟,3GB 语言:英语中文字幕(根据原英文字幕机译更准确)原英文字幕 指导老师:Shane Whittington Shane Whittington 百度一下 云桥网…

java学习总结:3
逻辑运算 1.’!’(非) 2.与(多个条件一起满足) Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false。 ’&&的短路功能,当…

asp.net httpmodule 访问页面控件 备忘
用到的时候发现还得找代码,存一个例子方便自己和他人修改: using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls;…

Ubuntu下Sublime Text 3解决无法输入中文的方法
2019独角兽企业重金招聘Python工程师标准>>> 环境: Ubuntu14.04搜狗输入法 for LinuxSublime text 3提示:编译请在非root下进行 本经验目前在Ubuntu14.04环境下,已有搜狗输入法 for Linux和Sublime Text 3的情况下安装成功。 保存…

电子书下载:Building Websites with DotNetNuke 5
下载:http://www.ctdisk.com/file/9941471 转载于:https://www.cnblogs.com/MaxWoods/archive/2012/10/10/2719167.html

Java学习总结:4
面向对象 面向对象的程序设计具有封装性、继承性、多态性。 类的定义语法如下: class 类名称{数据类型 属性(变量);...public 返回值的数据类型 方法名称(参数1,参数2...){程序语句;[return 表达式;] } }定义类 class Book {String title;double pric…

在3ds Max中使用V-Ray 5渲染引擎视频教程
在3ds Max中使用V-Ray 5渲染引擎视频教程 MP4 | 视频:h264, 1280x720 | 音频:AAC, 44.1 KHz, 2通道。AAC, 44.1 KHz, 2 Ch. 技能水平。初学者|类型:电子学习|语言:英语中文字幕(根据原英文字幕…

OC实用转换model的工具
OC实用转换model的工具 说明 这是本人写的一个专门用来将json数据直接转换生成Model文件的工具,目的是为了让你从写Model文件的繁琐过程中解脱出来,提升效率以及减少出错的几率,工具的特点如下: 1. 用组合设计模式处理树形数据结构(非线性数据结构) 2. 在调试台中处理生成Model…

后端怎么防止重复提交?(常用的做法)
后端怎么防止重复提交?(常用的做法) 客户端的抖动,快速操作,网络通信或者服务器响应慢,造成服务器重复处理。防止重复提交,除了从前端控制,后台也需要控制。因为前端的限制不能解决…

利用MAC OS X 自带的磁盘工具提取光盘镜像ISO文件
虽说渐渐地Mac笔记本基本告别内置光驱时代了,随着网络的普及,使用到光驱的机会也渐少,但有时又难免需要光驱,比如二货出版社的随书光盘等…我们可以通过USB外置光驱将光盘内容提取为ISO文件保存到电脑里,方便以后可以随…

Java学习总结:5
面向对象 对象数组 引用数据类型也可以定义数组 格式: 1.对象数组的动态初始化 类名称 对象数组名称 new 类名称 [长度];动态初始化默认情况下,数组的每一个元素都是其对应的默认值null。 class Book5{private String title;private double price;…

Maya初学者完整的3D动画大师班视频教程
Maya初学者完整的3D动画大师班视频教程 时间13小时30分 包括课程项目文件 1280X720 MP4 语言:英语中文字幕(根据原英文字幕机译更准确)原英文字幕 教程大小解压后:8.38G Maya初学者。完整的3D动画大师班 百度一下 云桥网络 平台…

jQuery-1.9.1源码分析系列(四) 缓存系统
先前在分析Sizzle的时候分析到Sizzle有自己的缓存机制,点击这里查看。不过Sizzle的缓存只是对内使用的(内部自己存,自己取)。接下来分析jQuery可以对外使用的缓存(可存可取)。 首先需要明白jQuery缓存需要解…

CBA 赛程的笔记 - 北京首钢
2014-11-01 19:35北京首钢103:89广东宏远结束技术统计 发挥不错,打的比较好!2014-11-05 19:35八一双鹿89:100北京首钢结束技术统计 第一节国内球员打的太屎,最后一节国内球员发挥不错!2014-11-07 19:35浙江稠州107:116北京首钢结束…

个人技术生涯的感悟(2)
很多时候,一门门槛很低的编程语言对于初学者的帮助是非常大的,从而决定这个人的技术路线的选择。 在经历过大一下学期对C,和C的迷茫之后,在大二上学期,学校在搞一个网页设计比赛,正好和两个朋友一起参赛。开…

HtmlAgilityPack 处理通配的contains
//选择不包含class属性的节点 var result node.SelectNodes(".//span[not(class)]"); //选择不包含class和id属性的节点 var result node.SelectNodes(".//span[not(class) and not(id)]"); //选择不包含class"expire"的span var result node…