heartbeat+haproxy

HAProxy提供高可用性、負載均衡以及基於TCPHTTP應用的代理支持虛擬主機它是免費、快速而且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點這些站點一般又須要會話保持或七層處理。HAProxy運行在當前的硬件上徹底能夠支持數以萬計的併發鏈接。而且它的運行模式使得它能夠很簡單安全的整合進您當前的架構中 同時能夠保護你的web服務器不被暴露到網絡上。php

HAProxy實現了一種事件驅動單一進程模型此模型支持很是大的併發鏈接數。多進程多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制不多能處理數千併發鏈接。事件驅動模型由於在有更好的資源和時間管理的用戶端(User-Space) 實現全部這些任務因此沒有這些問題。此模型的弊端是在多核系統上這些程序一般擴展性較差。這就是爲何他們必須進行優化以 使每一個CPU時間片(Cycle)作更多的工做。html

代理前端

Server25.example.com       172.25.45.25node

Server26.example.com       172.25.45.26ios

Realserver          web

Server27.example.com       172.25.45.27vim

Server28.example.com       172.25.45.28後端

 

####HAproxy的安裝配置api

Server25server26瀏覽器

yum install haproxy -y  

cd /etc/haproxy/

vim haproxy.cfg

註釋 60-86 行而後

 87  listen westos 172.25.45.100:80

 88        balance  roundrobin

 89        server web1 172.25.45.27:80 check

 90        server web2 172.25.45.28:80 check

netstat -antlp 查看有沒有別的服務影響haproxy

 

 /etc/init.d/haproxy start

 

Server27

yum install httpd

  vim /var/www/html/index.html 編輯內容爲:

  server27.example.com

  /etc/init.d/httpd start

 

Server28:

  yum install httpd

  vim /var/www/html/index.html 編輯內容爲:

  server28.example.com

  /etc/init.d/httpd start

 

##########Heartbeat的配置

 

Server25

wKioL1jP5I_jQIPuAACQyysEF94736.png-wh_50 

 

yum install *.rpm -y

 

rpm -q heartbeat -d  查看heartbeat的相關配置文件夾目錄

 

wKiom1jP5JzwLFMDAAGvCR2yLYA261.png-wh_50 

 

 

cp /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d

 

vim /etc/ha.d/ha.cf   修改內容爲:

34 logfacility     local0##直接往系統日誌寫入

48 keepalive 2##心跳間隔

56 deadtime 30##心跳無反應被認爲服務掛掉的時間

61 warntime 10##心跳無反應警告時間

71 initdead 60##資源初始化

76 udpport 649## UDP 端口 --> 本身設置 <同一個交換機上的端口不能重複>

91 bcast   eth0  # Linux##廣播

157 auto_failback on##服務自動回切

211 node    server25.example.com##主機節點信息前爲主後爲輔

212 node    server26.example.com##被機節點信息

220 ping 172.25.45.250## ping 某個 ip 要求能 ping 通肯定網絡服務此處 ip 通常爲網關地址與fence配合使用來進行斷網服務如:server26能夠ping通某個ipserver5不行此時fence便會進行斷電重啓server25

253 respawn hacluster /usr/lib64/heartbeat/ipfail

259 apiauth ipfail gid=haclient uid=hacluster

 

vim /etc/ha.d/authkeys   修改內容爲

23 auth 1

24 1 crc##明文

 

chmod 600 authkeys

 

vim /etc/ha.d/haresources   修改內容爲:

151 server25.example.com IPaddr::172.25.45.100/24/eth0 haproxy## 此處域名必定爲

 

主機的域名ipvip(虛擬ip)  haproxy表示須要調用的腳本名稱

scp authkeys ha.cf haresources 172.25.45.26:/etc/ha.d

/etc/init.d/heartbeat start

wKiom1jP5KnT3k4kAABzA73ynWE617.png-wh_50 

 

Tail  -f  /var/log/messages

Ip  a  s 此時虛擬ipserver25

 

Server26

 

wKioL1jP5LTBIgHAAACQyysEF94210.png-wh_50 

 

yum install *.rpm -y

/etc/init.d/heartbeat start

 

測試

當虛擬ipserver25上時在真機測試

 wKioL1jP5NSwpmbtAACGkLXdN_A398.png-wh_50

 

此時關掉server25上的heartbeat服務server26便會接管server25上的服務此時虛擬ipserver26

wKioL1jP5OHD-eorAACBI8CiBsg234.png-wh_50 

 

此時在真機上繼續測試,測試結果說明server26接管了server25的服務

 

 

wKiom1jP5O6htn7QAACGkLXdN_A875.png-wh_50 

 

 

########### 查看詳細信息 #######

 Vim  /etc/haproxy/ haproxy.cfg 修改內容爲:

 

wKiom1jP5PuAAsccAAC-WSEbUdc434.png-wh_50 

 

 /etc/init.d/haproxy reload

 

@@@檢查服務運行測試:在瀏覽器端輸入 172.25.45.100:8080/status 而後在server27server28關閉httpd服務看顏色的變化

wKioL1jP5QXDz4K9AAI_xlUEDT0619.png-wh_50 

 

######### 自定義前端和後端 後端的動靜分離##########

Server25:

vim /etc/haproxy/haproxy.cfg 修改內容爲:

wKiom1jP5RHzORLLAAFf-c-3iF0206.png-wh_50 

 

frontend westos 172.25.45.100:80        ##自定義前端

acl url_static       path_beg       -i /p_w_picpaths   ##定義url_static 條件:/p_w_picpaths開頭

acl url_static       path_end       -i .jpg  .gif   ##定義url_static 條件:.jpg .gif .png 結尾

use_backend static          if url_static

default_backend   app     ###默認使用動態若是符合 url_static就使用靜態

backend static

       balance  roundrobin

       server web1 172.25.45.27:80  check    ###靜態後端

backend app

      balance  roundrobin

      server web2 172.25.45.28:80 check      ##動態後端

 

server27:

cd /var/www/html

mkdir p_w_picpaths

cd p_w_picpaths 而後往該目錄中放入OSI.gifredhat.jpg

 

 

測試:在瀏覽器中輸入  172.25.45.100/p_w_picpaths/redhat.jpg 或者 172.25.45.100/p_w_picpaths/OSI.gif

此處以/p_w_picpaths開頭以.gif結尾 ()

wKioL1jP5R2g8w1hAACmes_Hs8U999.png-wh_50 

 

若直接輸入172.25.45.100則訪問動)

wKiom1jP5SjgFJDaAAAeu0kDe3E360.png-wh_50 

 

 

 

 

 

 

############## 設置訪問權限 ##########

 

Server25

vim /etc/haproxy/haproxy.cfg 修改內容爲

 

wKiom1jP5TXxO5WDAABVBvPkpQQ899.png-wh_50 

 

block if badhost##不容許訪問

 

 

測試:真機(172.25.45.250)在瀏覽器中輸入  172.25.15.100會有 403 報錯

wKioL1jP5T6A1iCtAAA19q0tUVU951.png-wh_50 

 

Yum install httpd -y

vim /etc/httpd/conf/httpd.conf 修改默認端口:

 135 #Listen 12.34.56.78:80

 136 Listen 8000

 

vim /var/www/html/index.html 修改內容爲:

wKiom1jP5UngRBftAAAetyBdZ4c346.png-wh_50 

 

/etc/init.d/httpd start

 

繼續在server25上操做

vim /etc/haproxy/haproxy.cfg 修改內容爲

 

添加9596

 

 wKioL1jP5lST3OQbAAEEYDF3DoI925.png-wh_50

真機測試

 wKiom1jP5mSg1JEnAAAc7UZVHBs075.png-wh_50

 

 

也能夠這樣作

 

vim /etc/haproxy/haproxy.cfg 修改內容爲

 

註釋掉9596行添加106

wKioL1jP5njyf2_UAABbH-Sh684469.png-wh_50 

 

測試在真機訪問

關掉server28httpd

 

[kiosk@foundation45 Desktop]$ curl 172.25.45.100

網頁正在維護中

 

############### 自動補全全域名 #########

 

 

真機:

vim /etc/hosts:

172.25.45.100 server25.example.comwestos.orgwww.westos.org

 

Server25

vim /etc/haproxy.conf 修改內容爲:

 

 

添加97-100行註釋帶年109

wKioL1jP5onh8AG6AAHfpXF5MRU866.png-wh_50 

 

 

99##在瀏覽器中輸入 westos.org 自動補充成 www.westos.org

 

100##在瀏覽器中輸入 172.25.30.99 自動補充成 www.westos.org

 

/etc/init.d/haproxy reload

 

測試:真機(172.25.45.250)在瀏覽器中輸入 westos.org 或者 172.25.45.100 會自動補齊爲www.westos.org

 

wKiom1jP5prRnbkyAAAY2pRmOss529.png-wh_50 

 

################### 讀寫分離 ############

 

Server25:

vim /etc/haproxy.conf 修改內容爲

 

添加100-103行將108109修改成下圖

wKioL1jP5qigeD69AAE87c8YwoE198.png-wh_50 

 

 

 

acl read method GET##定義讀取

         acl read method HEAD##定義讀取

         acl write method PUT##定義寫入/上傳

         acl write method POST##定義寫入/上傳

         use_backend app             if write##當 寫入/上傳 時使用app動態後端

         default_backend             static##默認後端爲靜態static後端

 

       /etc/init.d/haproxy reload

 

Server27 server28都要作的操做:

cd /var/www/html

cd upload/

mv * ..

cd ..

vim upload_file.php 修改第 4 行內容:

 

&& ($_FILES["file"]["size"] < 2000000))##此處增大了上傳文件指定大小

chmod 777 upload/

/etc/init.d/httpd restart

 

測試:在真機瀏覽器中輸入 www.westos.org/p_w_picpaths 中能夠讀取

在真機瀏覽器中輸入 www.westos.org 中能夠上傳文件(文件格式爲.jpg .gif .png -->/etc/haproxy/haproxy.conf 中可查)

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息