當前位置:網站首頁>lnmp 三之haproxy的使用
lnmp 三之haproxy的使用
2022-01-27 15:01:54 【L*YUEYUE】
文章目錄
LVS與Haproxy對比
在企業運維1中我們已經實現OSI模型第四層(傳輸層)上的負載均衡與高可用 企業運維1
- 以這種方式進行負載均衡將根據IP範圍和端口轉發用戶流量。
- 用戶訪問負載均衡器,負載均衡器將用戶的請求轉發給後端服務器的Web後端組。無論選擇哪個後端服務器,都將直接響應用戶的請求。通常,Web後端中的所有服務器應該提供相同的內容,否則用戶可能會收到不一致的內容。
- 還存在很多不足之處
(1)在大規模網絡中應用不足
各種轉發模式;網絡拓撲複雜,運維成本高。
(2)和商用LB設備比較
缺少TCP標志比特DDOS攻擊防禦。
(3)主備部署方式不足
性能無法線性擴展。
更複雜的負載均衡方法是使用第7層(應用層)負載均衡。使用第7層允許負載均衡器根據用戶請求的內容將請求轉發到不同的後端服務器。這種負載均衡模式允許您在同一域和端口下運行多個Web應用程序服務器。
本篇內容主要利用haproxy+pacemaker實現在OSI模型第七層的負載均衡與高可用。
Haproxy的使用
實驗步驟
1.先確保沒有其他調度器的幹擾,需要清理實驗環境。
(1)在企業運維1中我們設置了lvs和keepalived,這裏需要將keepalived停止
(2)將arptables策略删除(使用命令arptables -F)
2.在computer1上安裝haproxy
3.編輯/etc/haproxy/haproxy.cfg文件
這裏haproxy的mode工作模式是http,即工作在第七層(haproxy也可以工作在第四層)。
(1)先將這六行注釋掉,只留一個app。另外,將端口改成80,這樣後端的端口可以不為80。
這裏computer3和computer4是僅開啟了apache服務的web服務器。
4.啟動haproxy
haproxy占用了端口80,因此我們不能同時開啟httpd服務。
5.測試
這裏使用computer2測試,發現不需要定義vip,computer1的ip地址就是vip。
haproxy擁有健康檢查功能,每次都會檢測至少三次。當停掉computer3的httpd服務時
訪問失敗
重新開啟computer3上的httpd服務
重新測試,發現訪問又恢複正常。
haproxy監控
還可以使用haproxy自帶的監控功能
訪問對應的路由即可
haproxy添加日志
編輯/etc/sysconfig/rsyslog文件,添加一個-r參數錶示接受。
編輯/etc/rsyslog.conf文件
添加local2這一行錶示將haproxy的日志存放在local2中
另外,我們讓local2的日志不要存儲在/var/log/messages中。
在computer2上訪問一次computer1
發現出現了haproxy.log
haproxy激活認證
還可以激活5秒刷新功能
輸入密碼之後成功進入,會發現監控界面5秒刷新一次。
haproxy設置session保持
使用source算法,錶示只要發起請求的源地址不變,調度也就不變。
haproxy權重
haproxy設置backup
假設所有的RS掛掉了怎麼辦呢?這裏可以使用本機作為backup,當所有RS掛掉後,會訪問本機的資源。
這裏將httpd服務端口改為8000(如果設置為80會和haproxy沖突)
同時修改默認發布頁面
down掉computer3和computer4
haproxy訪問控制
blacklist:自己定義的acl錶名字
src:源地址 src_port:源端口(同理還有目標地址dest,目標端口dest_port)
block if:禁止訪問
使用reload更好一些,這樣不會中斷服務。
發現computer2訪問被拒絕
上述錯誤展示的不太美觀,加入errorloc定向403這個錯誤類型到192.168.1.10:8000上去(curl無法呈現定向的頁面,這裏使用瀏覽器訪問)。
如何拒絕訪問部分頁面?
直接重定向,也可以定向到百度等等。
haproxy動靜分離
(1)在computer4上安裝php
寫一個index.php頁面
(2)在computer3上新建一個images文件夾,在這個文件夾中放張圖片。
(3)編輯haproxy.cfg文件
令computer3為靜態服務器,computer4為動態服務器。
(4)測試
haproxy讀寫分離
編輯haproxy.cfg文件
haproxy+keepalived
1.給computer2也裝上haproxy
2.把computer1的haproxy.cfg傳一份給computer2
3.編輯computer1的keepalived.conf文件
interval錶示多長時間檢測一次(默認為1秒)。weight錶示權重,正2錶示在100的基礎上每次成功執行脚本優先級加2,負2錶示每次成功執行脚本優先級减2,為0錶示每次優先級無變化,在運行時誰的優先級高誰就是master。
track_script錶示調用脚本
將virtual_ipaddress以下的內容删掉,這裏只使用了keepalived的高可用功能,並沒有使用它的lvs功能。
4.編輯computer1的/opt/check_haproxy.sh文件,並把這個脚本和keepalived.conf傳到computer2上。
如果一臺機器的haproxy不可用,則立即切換。
定義一個check_haproxy脚本(補充:killall -0 錶示檢查此進程是否存在,存在返回0,不存在返回1,$?錶示脚本的返回值)
5.更改computer2的keepalived.conf文件
更改這兩處
6.如果想只監聽192.168.1.120這個虛擬ip的話,可以做如下修改(這步可不做,我就沒做)。
7.測試
注意每次要先開啟keepalived,這樣vip才能出來,haproxy才能用。
(1)在rehl8中測試一下
(2)當computer1的haproxy起不來時(這裏將配置文件寫錯),vip會切換到computer2上,從而不影響用戶使用。
可以看到在rehl8中正常訪問vip
將computer1中的haproxy.cfg文件中錯誤改正後,vip又回來了。
haproxy+pacemaker
1.將computer1和computer2上的keepalived和haproxy都關掉
2.開啟pacemaker
3.删除webgroup
4.創建vip
5.開啟haproxy
6.將vip和haproxy綁定在一起
7.測試
在rehl8中測試,發現訪問正常。
當停掉server1時,發現vip接管到server2上,rehl8仍能正常訪問。
當重新開啟server1,發現vip仍在server2上,不會交給server1(這是我們想要的,頻繁切換會損耗系統資源)。
版權聲明
本文為[L*YUEYUE]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201271501537101.html
邊欄推薦
猜你喜歡
隨機推薦
- uniapp上傳圖片及組件傳值
- 瑞利年金險資金保障安全嗎?收益高不高啊?
- 華為手機USB連不上電腦的解决方法
- Flutter 2,移動金融應用開發
- 關於st25系列NFC標簽簡單介紹及st25TV系列用於門禁讀取時的注意事項總結
- 關於用ffmpeg轉手機視頻發現視頻長寬倒了的問題
- 函數 / 類模板--模板2
- 數組中的第k個最大的元素--優先級隊列、排序、堆、排序
- 單片機實例27——ADC0809A/D轉換器基本應用技術(硬件電路圖+匯編程序+C語言程序)
- Collection集合的學習
- 一場面試結束,某度員工從事Android 5年為何還是初級工程師?
- 3本書閱讀筆記【人月神話-Go語言實戰-研發能力持續成長路線】01
- PHP垃圾回收機制
- 【電子技術】什麼是LFSR?
- 死鎖?如何定比特到死鎖?如何修複死鎖?(jps和jstack兩個工具)
- 快樂寒假 22/01/20
- image
- 噴程序員?SURE?
- LDO分壓電阻計算小工具
- 面試之求一串字符串中每個字符的出現次數
- 【ISO15765_UDS&OBD診斷】-01-概述
- 【Mysql上分之路】第九篇:Mysql存儲引擎
- RHCE 第一次作業
- 2021.10.16我的第一篇博客:一切皆有可能!
- CTA-敏感行為-讀取IMEI
- 面試被問怎麼排查平時遇到的系統CPU飆高和頻繁GC,該怎麼回答?
- nuxt項目總結-綜合
- 自然語言處理學習筆記(一)
- C語言第一課
- 各比特大佬,Spark的重點難點系列暫時更新完畢
- 基於 esbuild 的 universal bundler 設計
- XCTFre逆向(四):insanity
- 理解什麼是真正的並發數
- JVM腦圖
- 【Pytorch(四)】學習如何使用 PyTorch 讀取並處理數據集
- 函數棧幀的創建與銷毀
- 構建神經網絡- 手寫字體識別案例
- 多模態生成模型ERNIE-VILG
- kotlin不容忽視的小細節
- 備戰一年,終於斬獲騰訊T3,我堅信成功是可以複制的