一、Haproxy的理解
Haproxy是一個使用c語言編寫的自由開發源代碼軟件,它提供高可用性、負載均衡、以及基於http和tcp的應用程序代理。
Haproxy特別使用於那些負載特別大的web站點,這些站點通常需要會話或七層處理。Haproxy運行再當前的硬件上,完全可以支持數以萬計的並發連接。並且他的運行模式使得它可以很簡單安全的整合進當前的架構中,同時也可以保護我們的web服務器不被暴露再網絡上。
二、haproxy的安裝配置和負載均衡
1)首先在server1中下載haproxy的源碼包,解壓
---> yum install rpm-build -y # 安裝rpmbuild命令
---> rpmbuild -tb haproxy-1.4.26.tar.gz # 建立haproxy的二進制軟件包
---> cd rpmbuild/RPMS/x86_64
---> rpm -ivh haproxy-1.4.26-1.x86_64.rpm # 安裝haproxy軟件包
---> rpm -ql haproxy # 查看軟件相關文件的路徑
2)生成haproxy的配置文件
---> cd /root/
---> tar zxf haproxy-1.4.24.tar.gz # 解壓壓縮包。
---> cd haproxy-1.4.26/examples
---> cp conten-sw-sample.cfg /etc/haproxy/haproxy.cfg # 若目錄haproxy不存在,新建即可
3)創建haproxy用戶,並修改配置文件
---> useradd haproxy
---> vim /etc/haproxy/haproxy.cfg
---> vim /etc/security/limits.conf # 在最后一行輸入以下內容
haproxy - nofile 10000
5)啟動服務,測試haproxy是否安裝成功
---> /etc/init.d/haproxy start
---> netstat -antlp| grep 1080 # 查看1080端口是否可用
6)在真機中進行負載均衡的測試,輪詢的方式(端口號自己可以在配置文件中修改)
7)對后端服務器的管理和頁面數據的監控
8)172.25.31.6/monitoruri #網站健康檢測URL,用來檢測HAProxy管理的網站是否可以用,正常返回200
三、基於tcp和http的應用程序代理
(一)動態頁面和靜態頁面的分離
1、在server1中的httpd默認發布目錄中編寫文件index.html(server2);在server3中http默認發布目錄編寫文件index.php
---> yum install -y php php-mysql # 在server3中安裝php動態頁面
---> vim /vat/www/html/index.php
---> /etc/init.d/httpd restart
2、在haproxy的配置文件中修改訪問動態頁面和靜態頁面
---> vim /etc/haproxy/haproxy.cfg # 在之前的基礎上做如下修改
3)在瀏覽器中進行測試
# 動態訪問server3的index.php界面
# 靜態訪問的server2中的發布文件
(二)修改haproxy的日志文件
1)修改日志服務配置文件從而修改日志存儲位置
---> vim /etc/rsyslog.conf # 修改三處
2)啟動haproxy服務,生成日志,並查看
---> /etc/init.d/haproxy restart
---> cat /var/log/haproxy.log # 查看日志
(三)訪問控制
1)修改配置文件,添加訪問控制的主機
---> vim /etc/haproxy/haproxy.conf # 添加黑名單,在blacklist中的主機均不可以訪問(可寫ip亦可寫網段)
---> /etc/init.d/haproxy restart
2)在瀏覽器中測試情況如下:
3)重定向(當250訪問時,重定向到server1中)
---> vim /etc/haproxy/haproxy.conf # 打開httpd服務
---> /etc/init.d/haproxy reload
---> /etc/init.d/httpd start
4)測試結果如下
(四)讀寫分離
1)在server1中編寫配置文件
---> vim /etc/haproxy.haproxy.conf # 當進行上傳操作,轉到server3
---> /etc/init.d/haproxy reload
2)在server2和server3中安裝php,把上傳腳本放在http默認發布目錄,在server3中建立load目錄,存放上傳圖片。(要設置權限)
3)上傳圖片(注意圖片的格式)
# 上傳成功,在upload目錄中查看:
四、corosync+pacemaker實現haproxy的高可用
1)首先在server4中安裝haproxy服務。操作步驟與server1相同。配置好的結果為:
2)在server1和server4中,開啟corosync服務 (可以關閉haproxy服務)
---> /etc/init.d/corosync start
3)在crm中添加haproxy服務(首先刪除之前的nginx服務和web組)
# 添加haproxy服務並創建組,把ip和haproxy添加進去
# 再另一端監控情如下:
4)當節點server4的corosync關閉時,資源自動切換到server1上。
# 真機中一直是可以顯示的。
5)當server1的主機掛掉的時候,由於fence服務是啟動的,所以,server1可以自動開啟,並加入可用節點中。