负载均衡之——Nginx安装
Nginx和LVS都是能独立工作的,Keepalived作为检测机制,不但能和Nginx、LVS集成也能和其余软件集成形成高可使用方案(例如能和MySQL数据库集成、能和Jetty服务器集成、还能和自己写的程序集成)。所以首先我们先来详细讲述Nginx和LVS的核心工作原理、安装过程和优化方式,再分别讲解他们和Keepalived的集成方式。这样的方式应该能使您更快的掌握其中的核心,并可以最快的融会贯通。
1、Nginx重要算法详情
Nginx是什么,请自行百度。我们先详情几个关键的算法,假如您还不理解这些算法在Nginx中所起的作使用,请不要焦急,本文后半部分将说明它们的作使用。
1.1、一致性Hash算法
一致性Hash算法是现代系统架构中的最关键算法之一,在分布式计算系统、分布式存储系统、数据分析等众多领域中广泛应使用。针对这个系列的博文,在负载均衡层、业务通信层、数据存储层都会有他的身影。
hash算法的关键在于它可以够根据不同的属性数据,生成一串不相同的hash值,并且可以够将这个hash值转换为
0—232?1
范围整数(即上图中的圆环)
一台服务器的某个或者者某少量属性当然也能进行hash计算(通常是这个服务器的IP地址和开放端口),并且根据计算分布在这个圆环上的某一个点。也就是图中圆环上的蓝色点。
一个解决请求当然也能根据这个请求的某一个或者者某少量属性进行hash计算(能是这个请求的IP、端口、cookie值、URL值或者者请求时间等等),并且根据计算记过分布在这个圆环上的某一个点上。也就是上图圆环上的黄色点。
我们商定落在某一个蓝点A左侧和蓝点B右侧的黄色点所代表的请求,都有蓝点A所代表的服务器进行解决,这样就完成处理了“谁来解决”的问题。在蓝色点稳固存在的前提下,来自于同一个Hash商定的请求所落在的位置都是一样的,这就保证了服务解决映射的稳固性。
当某一个蓝色点因为某种起因下线,其所影响到的黄色点也是有限的。即下一次用户端的请求将由其余的蓝色点所代表的服务器进行解决。
1.2、轮询与加权轮询
当有任务需要传递到下层节点进行解决时,任务来源点会按照一个固定的顺序,将任务依次分配到下层节点,假如下层可使用的节点数量为X,那么第N个任务的分配规则为:
目标节点=(NmodX)+1
轮询解决在很多架构思想中都有表现:DNS解析多IP时、LVS向下转发消息时、Nginx向下转发消息时、Zookeeper向计算节点分配任务时。理解基本的轮询过程有助于我们在进行软件架构设计时进行思想借鉴。
但是上面的轮询方式是有缺陷的,因为各种客观起因我们可可以无法保证任务解决节点的解决可以力都是一样的(CPU、IO、内存频率等不同)。所以A节点业务可以同时解决100个任务,但是B节点可可以同时只可以解决50个任务。
在这种情况下我们需要依据下层节点某个或者者多个属性设置权值。这个属性可可以是网络带宽、CPU繁忙程度或者者就是各一个固定的权值。
那么加权轮询的分配依据是什么呢?有很多分配依据,例如:概率算法(此算法中包括蒙特卡罗算法,拉斯维加斯算法和舍伍德算法,在网络上有很多详情资料)、最大公约数法。这里我们对最大公约数算法进行详情,由于该方法简单实使用:
首先按照某种规则计算得到每个解决节点的权值,上文已经说到计算规则可可以是这个服务节点的CPU利使用率、网络占使用情况或者者在配置文件中的固定权重。
求这些权值的最大公约数,在上图中三个节点的权值分别是100、80、60.那么求得的最大公约数就是20(假如您不记得了最大公约数的定义,请自行复习)。那么这三个节点的被除结果分别是5、4、3,求和值为12。
得到以上的计算结果,即可以开始进行请求分配了,公式同样为:
(NmodX)+1=Y
其中N表示当前的第N次任务;X表示整除后的求和结果;Y为解决节点。
总结一下:加权轮询是轮询方案的补充,通过将解决节点的属性转换成权值能有效的形容解决节点的解决可以力,实现更科学的解决任务分配。加权轮询的关键在于加权算法,最大公约数算法简单实使用,定位效率高。
2、Nginx的安装
2.1、准备工作
操作系统:centOS 6.5。
Nginx的下载地址:http://nginx.org/en/download.html。请下载stable的版本1.8.0。后续Nginx一定还会有更新,官网上面会持续升级stable version。
最小必备组件:
yum -y install make zlib zlib-devel gcc gcc-c++ ssh libtool
2.2、正式安装
下载nginx1.8.0版本
解压nginx的tar文件
进行源码编译
我们看到这时编译检查报错,报错写得很清楚,为了支持HTTP重写板块,Nginx需要PCRElib的支持。那我们到http://ncu.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz下载一个稳固的pcre版本编译安装就可(不肯定是8.37版本)。
再进行源码编译安装
./configure –prefix=/usr/nginx-1.8.0
make && make install
整个验证、编译、安装过程不应该报任何错误。假如您用prefix设置了安装目标目录,那么可可以您还需要在/etc/profix文件中设置环境变量:
2.3、安装验证和启动
下面详情几个nginx常使用的命令,假如您能正常用这些命令,那么说明nginx已经安装成功了。
nginx:直接在命令行键入nginx,即可以启动nginx。
nginx -t:检查配置文件能否正确。这个命令能检查nginx.conf配置文件其格式、语法能否正确。假如配置文件存在错误,则会出现相应提醒;假如nginx.conf文件正确,也会出现相应的成功提醒。
nginx -s reload:重加载/重启nginx——以新的nginx.conf配置文件中的定义。
nginx -s stop:中止nginx。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 负载均衡之——Nginx安装