當前位置:網站首頁>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

隨機推薦