歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> CentOS 6.5環境下使用HAProxy+apache實現web服務的動靜分離

CentOS 6.5環境下使用HAProxy+apache實現web服務的動靜分離

日期:2017/3/1 11:55:44   编辑:關於Linux
HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的並發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web服務器不被暴露到網絡上。
HAProxy實現了一種事件驅動,單一進程模型,此模型支持非常大的並發連接數。多進程或多線程模型受內存限制、系統調度器限制以及無處不在的鎖限制,很少能處理數千並發連接。事件驅動模型因為在有更好的資源和時間管理的用戶端(User-Space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是為什麼他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。

拓撲圖:
\

第一步:,這裡我們使用三台虛擬機來做測試,前端一台haproxy做調度,後端兩台httpd服務器提供web服務,在做動靜分離時時前端haproxy來判斷動態和靜態內容分別調度到哪台服務器上;

在haproxy node5中添加兩塊網卡,將新添加的網卡定義在vmnet2中

\

將兩個後端的動靜節點也設置到vmnet2中

\


第二步:安裝httpd、php以及haproxy,這裡我們直接用yum來安裝即可,安裝好之後給這三台虛擬配置好相關的網絡設備以及提供相關的測試頁面等,在eth1這張網卡上選擇相同的一個通信通道,node5這台虛擬機上haproxy的主機,node1和node2是不同的兩台後端提供web服務器的虛擬主機
[root@node5 ~]# yum install -y haproxy
[root@node5 ~]# ifconfig eth1 192.168.1.10/24 up
[root@node5 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:BA:4E:78  
          inet addr:192.168.8.43  Bcast:192.168.8.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feba:4e78/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1418 errors:0 dropped:0 overruns:0 frame:0
          TX packets:185 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:103198 (100.7 KiB)  TX bytes:19819 (19.3 KiB)


eth1      Link encap:Ethernet  HWaddr 00:0C:29:BA:4E:82  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feba:4e82/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:63 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3780 (3.6 KiB)  TX bytes:468 (468.0 b)


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1244 (1.2 KiB)  TX bytes:1244 (1.2 KiB)





在node1和node2上設置好相關配置,選擇虛擬機上的VMnet2與haproxy上的eth1的同一通信通道,再配置IP地址和默認網關接口,而後再提供不同的頁面以便測試用;


192.168.1.20:
# yum install -y php httpd
# ifconfig eth0 192.168.1.20/24 up
# route add defaulte gw 192.168.1.10  # 網關指向haproxy主機的eth1地址
# ping 192.168.1.10  # ping一下haproxy的節點看是否ping通
# vim /var/www/html/index.html

192.168.1.20

# for i in {1..10} ; do echo "

192.168.8.20 test$i

" > test$i.html; done # 創建test1~10個靜態html頁面方便後面測試 # service httpd start # 配置好之後就把web服務啟動起來,再訪問測試一下,測試的連接改為橋接方式


192.168.1.30:
# yum install -y php httpd
# ifconfig eth0 192.168.1.30/24 up
# route add defaulte gw 192.168.1.10  # 網關指向haproxy主機的eth1地址
# ping 192.168.1.10  # ping一下haproxy的節點看是否ping通
# vim /var/www/html/index.html

192.168.1.30

# for i in {1..10} ; do echo "

192.168.8.30 test$i

" > test$i.html; done # 創建test1~10個靜態html頁面方便後面測試 # service httpd start # 配置好之後就把web服務啟動起來,再訪問測試一下,測試的連接改為橋接方式
測試頁面能否正常訪問
[root@node5 ~]# curl -I http://192.168.1.20
HTTP/1.1 200 OK
Date: Mon, 09 May 2016 12:00:53 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Connection: close
Content-Type: text/html; charset=UTF-8

[root@node5 ~]# curl -I http://192.168.1.30
HTTP/1.1 200 OK
Date: Fri, 29 Apr 2016 02:55:57 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Connection: close
Content-Type: text/html; charset=UTF-8

第三步:配置haproxy的相關配置信息;

############## 以上的使用默認配置就可以了 #######################


frontend web *:80   # *表示haproxy監聽所有地址,監聽的端口為80
   # 定義訪問控制,表示以url以.css .js .html .php結尾的分別調度到哪台服務器上訪問
    acl url_static       path_end       -i .css .js .html    
    acl url_dynamic      path_end       -i .php


    # usr_backend表示使用backend服務,if表示如果滿足url_static這個條件就調度到這台服務器上
    use_backend        static          if url_static    
    default_backend    dynamic


backend static   # 定義調用後端的靜態頁面的服務器上
    server node1 192.168.1.20:80 check inter 3000 rise 2 fall 2 maxconn 5000
backend dynamic  # 定義調用後端的動態頁面的服務器上
    server node2 192.168.1.30:80 check inter 3000 rise 2 fall 2 maxconn 5000   
listen statspage # 定義監控管理接口的界面
    bind *:8888    # 定義訪問頁面端口
    stats enable    # 啟用管理界面
    stats hide-version    # 隱藏版本
    stats uri /admin?stats    # 訪問路徑
    stats auth admin:centos    # 訪問時需要驗證登錄
    stats admin if TRUE    # 如果登錄成功就可以管理在線服務器
\

訪問管理頁面:

\

\

\


總結:
HAProxy是一款比較輕量級的負載均衡服務器,特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的並發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web服務器不被暴露到網絡上。
Copyright © Linux教程網 All Rights Reserved