七层负载均衡 nginx

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七层负载均衡 nginx相关的知识,希望对你有一定的参考价值。

七层负载均衡

简单解说:

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

一、集群的分类:(cluster)
1、高可用集群 HA high availability
避免单节点故障
软件:keepalived

2、负载均衡集群 LB load balance
提高负载,提高并发量
软件:nginx反向代理 lvs
硬件:硬件负载均衡器 F5(BigIP)和redware

3、 HPC高性能运算集群

4、分布式存储集群
极大的提升存储容量,提供数据高可用,保证数据安全
软件:ceph glusterfs hdfs


二、Nginx proxy 是 Nginx 的王牌功能,利用 proxy 基本可以实现一个完整的 7 层负载均。

  1. 功能强大,性能卓越,运行稳定。
  2. 配置简单灵活。
  3. 能够自动剔除工作不正常的后端服务器。
  4. 上传文件使用异步模式。
  5. 支持多种分配策略,可以分配权重,分配方式灵活。

三、七层负载均衡与四层负载均衡:

lvs和nginx的区别:
nginx:
nginx可以用来做http的反向代理,在配置文件中使用upstream实现http请求的多种方式的均衡转发。
由于采用的是异步转发可以做到如果一个服务器请求失败,立即切换到其他服务器,直到请求成功或者最后一台服务器失败为止。这可以最大程度的提高系统的请求成功率。
lvs:
lvs采用的是同步请求转发的策略。
这里说一下同步转发和异步转发的区别。同步转发是在lvs服务器接收到请求之后,立即redirect(重定向)到一个后端服务器,由客户端直接和后端服务器建立连接。异步转发是nginx在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户端。

进一步来说:当作为负载均衡服务器的nginx和lvs处理相同的请求时,所有的请求和响应流量都会经过nginx;但是使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。

也就是,当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。
但是仅仅使用lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。但是如果在lvs的后端在添加一层nginx(多个),每个nginx后端再有几台应用服务器,那么结合两者的优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时一锤子买卖的问题。

技术分享图片

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

四、具体配置

设置环境:

1、关闭防火墙,selinux

2、域名解析
vim /etc/hosts
技术分享图片

一台客户机:client

不用做任何操作,但要保证网络能通
在网页中输入代理的ip,若测试动态页面,在ip后面加上index.php

一台代理:nginx-dr

1、安装nginx

2、修改nginx配置文件
[[email protected] ~]# vim /etc/nginx/nginx.conf
注:在http中加入upstream,在server中location正则匹配动静态网页
技术分享图片

3、重启nginx
systemctl restart nginx

两台做静态网页:web1,web2

web1:
1、下载apache
yum -y install httpd

2、进入网页配置文件,添加apache静态网页
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# vim index.html
web1 apache

3、启动apache

web2:
1、下载nginx
[[email protected] ~]# yum -y install nginx

2、进入网页配置文件,添加nginx静态网页
[[email protected] ~]# cd /usr/share/nginx/html/
[[email protected] html]# vim index.html
web2 nginx

3、启动nginx

两台做动态网页:php1,php2

php1:
1、下载apache、php
[[email protected] ~]# yum -y install httpd php

2、进入网页配置文件,添加apache动态网页
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# vim index.php
技术分享图片

3、启动apache
[[email protected] ~]# systemctl restart httpd

php2:
1、下载nginx、php、php-fpm
[[email protected] ~]# yum -y install nginx php php-fpm

2、进入网页配置文件,添加nginx动态网页
[[email protected] ~]# cd /usr/share/nginx/html/
[[email protected] html]# vim index.php
技术分享图片

3、进入php-fpm的配置文件
[[email protected] ~]# vim /etc/nginx/nginx.conf
技术分享图片

4、进入nginx的配置文件
[[email protected] ~]# vim /etc/php-fpm.d/www.conf
技术分享图片

5、启动nginx、php-fpm
[[email protected] ~]# systemctl restart nginx
[[email protected] ~]# systemctl restart php-fpm

测试:
直接在页面中输入代理机的ip,就可以了

<不太完整请见谅!>

以上是关于七层负载均衡 nginx的主要内容,如果未能解决你的问题,请参考以下文章

Nginx---负载均衡和缓存

nginx七层负载均衡

nginx七层负载均衡

Linux架构之Nginx 七层负载均衡

Nginx架构四之七层负载均衡

LVS四层 VS Nginx七层反代(负载均衡)