1. 程式人生 > >七層負載均衡 nginx

七層負載均衡 nginx

type 存儲 最大 usr 故障 tro 一個 啟動 安全

七層負載均衡

簡單解說:

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

一、集群的分類:(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配置文件
[root@nginx-dr ~]# 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靜態網頁
[root@web1 ~]# cd /var/www/html/
[root@web1 html]# vim index.html
web1 apache

3、啟動apache

web2:
1、下載nginx
[root@web2 ~]# yum -y install nginx

2、進入網頁配置文件,添加nginx靜態網頁
[root@web2 ~]# cd /usr/share/nginx/html/
[root@web2 html]# vim index.html
web2 nginx

3、啟動nginx

兩臺做動態網頁:php1,php2

php1:
1、下載apache、php
[root@php1 ~]# yum -y install httpd php

2、進入網頁配置文件,添加apache動態網頁
[root@php1 ~]# cd /var/www/html/
[root@php1 html]# vim index.php
技術分享圖片

3、啟動apache
[root@php1 ~]# systemctl restart httpd

php2:
1、下載nginx、php、php-fpm
[root@php2 ~]# yum -y install nginx php php-fpm

2、進入網頁配置文件,添加nginx動態網頁
[root@php2 ~]# cd /usr/share/nginx/html/
[root@php2 html]# vim index.php
技術分享圖片

3、進入php-fpm的配置文件
[root@php2 ~]# vim /etc/nginx/nginx.conf
技術分享圖片

4、進入nginx的配置文件
[root@php2 ~]# vim /etc/php-fpm.d/www.conf
技術分享圖片

5、啟動nginx、php-fpm
[root@php2 ~]# systemctl restart nginx
[root@php2 ~]# systemctl restart php-fpm

測試:
直接在頁面中輸入代理機的ip,就可以了

<不太完整請見諒!>

七層負載均衡 nginx