CentOS7 Nginx反向代理与负载均衡的配置 图文详解

             

1、 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢?

由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。


2、 负载均衡的种类

1)一种是通过硬件来进行解决,常见的硬件有 NetScaler、F5、Radware 和 Array 等商用的负载均衡器,但是它们是比较昂贵的
2)一种是通过软件来进行解决的,常见的软件有 LVS、Nginx、apache 等, 它们是基于 Linux 系统并且开源的负载均衡策略.

3,、 这里我们只来说 Nginx(其他的大家有兴趣可以自行查阅相关文档)

Nginx(发音同 engine x)是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev(伊戈尔 · 西索夫) 所开发,供俄国大型的入口网站及搜索引擎 Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:新浪、网易、 腾讯等。
优点:
1: 可运行 linux, 并有 Windows 移植版。
2: 在高连接并发的情况下,Nginx 是 Apache 服务器不错的替代品 Nginx 在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应

4、 创建三台 Nginx 服务器
由于资源有限,所以在自己电脑上用虚拟机搭建的。

负载均衡的功能:
转发
故障移除
恢复添加
高可用

我们想要使用 Nginx 那么就必须满足上面的四个条件.
我们配置负载均衡的目的是在于当用户访问我们的服务器的时候, 首先会通过 Nginx 服务器来决定转发到哪个 Tomcat 服务器上去给用户提供服务, 当然这个概率是我们通过权重来配置的. 经过 Nginx 指派之后, 我们就可以处理高并发的访问了, 这里就能达到负载均衡的目的.


5、 搭建 Nginx
首先我们需要大家三台机器, 三台机器分别安装了 Nginx 和 PHP, IP 分别为: 172.16.7.152、172.16.7.153、172.16.7.154

安装参考:Centos 7 编译安装 Nginx-1.15.7 多台服务器建议最好是同一版本

6、 配置

反向代理配置

location / {
root html;
index index.php index.html index.htm;
proxy_store off;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://duanwen;
}


负载均衡配置

#加入到http下
upstream duanwen{
    server 172.16.7.153:80;
    server 172.16.7.154:80;
}


7、 测试(轮询模式)


8、 负载均衡配置详解

1)轮播模式(默认)

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

upstream duanwen{
    server 172.16.7.153:80;
    server 172.16.7.154:80;
}

2)weight 模式

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

upstream duanwen{
    server 172.16.7.153:80 weight=2;
    server 172.16.7.154:80 weight=1;
}

3)ip_hash 模式

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

upstream duanwen{
    ip_hash;
    server 172.16.7.153:80;
    server 172.16.7.154:80;
}

4)fair 模式(第三方软件)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。由于采用 fair 负载策略,配置 weigth 参数改变负载权重将无效。

需要下载编译 fair 软件(https://github.com/gnosek/nginx-upstream-fair)

upstream duanwen{
    fair;
    server 172.16.7.153:80;
    server 172.16.7.154:80;
}

5)url_hash 模式(第三方)

按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在 upstream 中加入 hash 语句,server 语句中不能写入 weight 等其他的参数,hash_method 是使用的 hash 算法,剩下参数自己查阅。

upstream duanwen{
    server 172.16.7.153:80;
    server 172.16.7.154:80;
    hash $request_uri; 
    hash_method crc32;
}

每个设备的状态设置为:
1.down 表示单前的 server 暂时不参与负载

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

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

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

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

6.max_conns:限制分配给某台 Server 处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为 0,表示不限制。注意:1.5.9 之后的版本才有这个配置。

7.resolve:将 server 指令配置的域名,指定域名解析服务器。

需要在 http 模块下配置 resolver 指令,指定域名解析服务。

resolve 192.168.0.2:80; 
upstream weilai.cctvzxjy.com{ 
    server 192.168.0.1:80 max_conns=1000; 
    server 192.168.0.1:80 down; 
    server 192.168.0.1:80 weight=10 max_fails=3 fail_timeout=15; 
    server 192.168.0.1:80 backup; 
    server 192.168.0.1:80 resolve; 
}

配置后重启nginx服务

pkill nginx
/usr/local/nginx/sbin/nginx

部分配置参考来源:https://article.phpisfuture.com/p/180.html



wuying
总之,牛逼
2019-01-03 18:13:31

wuying
总之,牛逼
2019-01-03 18:13:44

wuying
1111
2019-01-03 18:13:49

wuying
嘤嘤嘤
2019-01-04 11:00:33

wuying
沙发墙
2019-01-04 11:00:44

发表评论 请登录再评论
  • 文章分类
回到顶部