Nginx基础安装与负载均衡配置

中科国庆助力白癜风康复 http://news.39.net/bjzkhbzy/171121/5863494.html
一、需求说明

系统要求:

Centos8操作系统

负载均衡

通过Nginx实现地址轮询

测试环境

通过docker环境制作两个简单的nginx前端页面,分别是nginx1和nginx2

通过部署Nginx负载,实现两个地址的轮询

二、负载均衡的方式

负载均衡有种方式:

循环机制:循环分发对应用服务器的请求

最少连接机制:将请求发送给连接数最少的服务器

ip-hash机制:哈西函数用于确定请求被配那个服务器(基于客户端IP地址)

轮询机制

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

适合服务器配置相当,无状态且短平快的服务使用。也适用于图片服务器集群和纯静态页面服务器集群。

优点:方式简便、成本低廉。

缺点:可靠性低和负载分配不均衡。

代码示例:

upstreambalance{

serverip地址1;

serverip地址2;

}

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况

权重越高,在被访问的概率越大,如下例,分别是0%,70%。

upstreambalance{

serverip地址1weight=;

serverip地址2weight=7;

}

2.最少连接机制

当某些请求耗费较长时间完成时,最少连接机制能让实例的负载更加均衡

在最少连接机制下nginx不会让大量请求使应用服务器超载,而是将请求分发至相对“悠闲”的服务器。

轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

代码示例:

当least_conn指令用在服务器组配置中时,最少连接机制就生效了。

upstreamblance{

least_conn;#把请求转发给连接数较少的后端服务器serverip地址1;serverip地址2;serverip地址;}

此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。

.ip-hash机制

请注意循环或者最少连接数负载均衡机制,可能将同一客户端的请求分发至不同的服务器,无法保证相同客户端的请求总是会被指向相同服务器。

比如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,所以为了使客户端请求总是分发向特定的服务器,就需要ip-hash负载均衡机制,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器(除非服务器不可用),可以解决session不能跨服务器的问题。

代码示例:

不加权重

upstreammyapp1{

ip_hash;serverip地址1;serverip地址2;serverip地址;}

服务器权重没有配置,意味着所有服务器等权重的应用于负载均衡。循环机制下大量请求以统一的方式处理,各服务器基本会被分发数量相等的请求。权重参数指定给服务器,权重就作为负载均衡的决定条件。

添加加权重

upstreammyapp1{

ip_hash;serverip地址1weight=;serverip地址2;serverip地址;}

在上面的配置中每5个请求,个会被指向ip地址1,1个指向ip地址2,1个指向ip地址。

此策略适合有状态服务,比如session,当有服务器需要剔除,必须手动down掉。

4.其他机制

还有一些机制需要通过安装第三方插件来实现,比如:fair、url_hash

1)fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

#实现响应时间短的优先分配

upstreamdynamic_tsingxin{

serverip地址1;

serverip地址2;

fair;

}

2)url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。

#实现每个url定向到同一个后端服务器

upstreamdynamic_tsingxin{

serverip地址1;

serverip地址2;

hashrequest_uri;

hash_methodcrc2;

}

注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。

三、负载状态设置:

1.down:表示单前的server暂时不参与负载

2.weight:默认为1。weight越大,负载的权重就越大

.max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream模块定义的错误

4.fail_timeout:max_fails次失败后,暂停的时间

5.backup:预留的备份服务器。其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻

6.max_conns:限制最大的接收连接数

四、Nginx安装

注:如果你使用的是CentOS8,直接使用第三步命令即可安装。

第一步:安装yum-utils

yuminstallyum-utils

[root

LoadBalanceyum.repos.d]#yuminstallyum-utils

Lastmetadataexpirationcheck:0:00:51agoonFri0Apr:45:05PMCST.

Dependenciesresolved.

==================================================================================================

PackageArchitectureVersionRepositorySize

==================================================================================================

Installing:

yum-utilsnoarch4.0.17-5.el8baseos68k

TransactionSummary

==================================================================================================

Install1Package

Totaldownloadsize:68k

Installedsize:20k

Isthisok[y/N]:y

DownloadingPackages:

yum-utils-4.0.17-5.el8.noarch.rpm52kB/s

68kB00:00

-----------------------------------------------------------------------------------

Total79kB/s

68kB00:00

Runningtransactioncheck

Transactionchecksucceeded.

Runningtransactiontest

Transactiontestsucceeded.

Runningtransaction

Preparing:1/1

Installing:yum-utils-4.0.17-5.el8.noarch1/1

Runningscriptlet:yum-utils-4.0.17-5.el8.noarch1/1

Verifying:yum-utils-4.0.17-5.el8.noarch1/1

Installed:

yum-utils-4.0.17-5.el8.noarch

Complete!

第二步:创建nginx.repo文件

/etc/yum.repos.d/nginx.repo

[nginx-stable]

name=nginxstablerepo

baseurl=



转载请注明地址:http://www.xqopn.com//zcmbjc/92847.html
  • 上一篇文章:
  • 下一篇文章: 没有了