基於虛擬主機的HAProxy配置實戰



本實例是如上圖所示

主要實現的功能如下:

當客戶訪問www.tb.com/tb.com的時候HAProxy將網站提交到電商服務器集群
當訪問bbs.tb.com的時候,將訪問請求調度到論壇集群,實現論壇負載均衡,當訪問blog.tb.com的時候,將請求調度到博客
服務器集群,實現博客集群的負載均衡,除了上面三種請求外,就將請求調度到缺省的其他服務器集群
HAProxy的安裝很簡單,見

下面主要是來配置它

 1 global 
 2 log 127.0.0.1 local0 info
 3 maxconn 4096
 4 user nobody
 5 group nobody
 6 daemon 
 7 nbproc 1
 8 pidfile /usr/local/haproxy/logs/haproxy.pid
 9 
10 defaults
11 mode http
12 retries 3
13 timeout connect 5s
14 timeout client 30s
15 timeout server 30s
16 timeout check 2s
17 
18 listen admin_stats
19 
20 bind 0.0.0.0:19088
21 mode http
22 log 127.0.0.1 local0 err
23 stats refresh 30s
24 stats uri /haproxy-status
25 stats realm welcome login\ Haproxy
26 stats auth admin:xxxxx
27 stats auth admin1:xxxxx
28 stats hide-version
29 stats admin if TRUE
30 
31 frontend www
32 bind *:80
33 mode http
34 option httplog
35 option forwardfor
36 log global
37 acl host_www hdr_reg(host) -i ^(www.tb.com|tb.com)
38 acl host_www hdr_dom(host) -i bbs.tb.com
39 acl host_blog hdr_beg(host) -i blog. 
40 use_backend server_www if host_www
41 use_backend server_bbs if host_bbs
42 use_backend server_app if host_blog
43 default_backend server_default
44 backend server_default
45 mode http
46 option redispatch
47 option abortonclose
48 blance roundrobin
49 cookie SERVERID
50 option httpchk GET /check_status.html
51 server default1 192.168.88.90:8000 cookie default1 weight 3 check inter 2000 rise 2 fall 3
52 server default2 192.168.88.91:8000 cookie default2 weight 3 check inter 2000 rise 2 fall 3
53 backend server_www 
54 mode http
55 option redispatch
56 option abortonclose
57 balance source 
58 cookie SERVERID
59 option httpchk GET /check_status.jsp
60 server www1 192.168.88.80:80 cookie www1 weight 6 check inter 2000 rise 2 fall 3
61 server www2 192.168.88.81:80 cookie www2 weight 6 check inter 2000 rise 2 fall 3
62 server www3 192.168.88.82:80 cookie www3 weight 6 check inter 2000 rise 2 fall 3
63 
64 backend server_bbs 
65 mode http
66 option redispatch
67 option abortonclose
68 balance source 
69 cookie SERVERID
70 option httpchk GET /check_status.php
71 server bbs1 192.168.88.81:8080 cookie bbs1 weight 8 check inter 2000 rise 2 fall 3
72 server bbs2 192.168.88.82:8090 cookie bbs2 weight 8 check inter 2000 rise 2 fall 3
73 
74 backend server_blog
75 mode http
76 option redispatch
77 option abortonclose
78 balance source 
79 cookie SERVERID
80 option httpchk GET /check_status.php
81 server blog1 192.168.88.85:80 cookie blog1 weight 5 check inter 2000 rise 2 fall 3
82 server blog2 192.168.88.86:80 cookie blog2 weight 5 check inter 2000 rise 2 fall 3 

 

說明下:
主要終點看下frontend中關於ACL配置部分的內容這個是實現虛擬主機的核心配置部分,另外這個配置文件定義了server_www,servr_bbs,server_blog,server_default,4個backend,
分別對應4個人服務器集群,對於server_www群和server_bbs群,采用了基於IP的負載均衡算法其他兩個采用了基於權重進行輪訓的調度算法
每個backend中定義了httpchk的檢測方式以此一定要保證這里的URL都是可以訪問到的
為了驗證負載均衡的功能,這里需要將后端真實服務器做一個標記,這個架構一個加入了九個真實的后端服務器共分為4組,這里將server_www的3台后端
服務器設置默認的web頁面如下

1 www1:echo "This is www1 192.668.88.80" >/var/www/html/index.html
2 www2: echo "This is www2 192.668.88.81" >/var/www/html/index.html 
3 www3:echo "This is www3 192.668.88.82" >/var/www/html/index.html

同理:

1 server_bbs
2 bbs1:echo "This is bbs1 192.668.88.83" >/var/www/html/index.html 
3 bbs2:echo "This is bbs2 192.668.88.84" >/var/www/html/index.html 
4 server_blog
5 blog1:echo "This is blog1 192.668.88.85" >/var/www/html/index.html 
6 blog2:echo "This is blog2 192.668.88.86" >/var/www/html/index.html 
7 server_default
8 default1:echo "This is default1 192.668.88.90" >/var/www/html/index.html 
9 default2:echo "This is default2 192.668.88.91" >/var/www/html/index.html

以上准備好,下面開始測試

2 啟動HAPRoxy
在HAProxy安裝完成之后會在安裝根目錄下生成一個可執行的二進制文件,對HAProxy的啟動,關閉,重啟操作都是通過這個文件來實現的
查看幫助
haproxy -h
haproxy [-f <配置文件>] [-vdVD] [-n 最大並發連接數] [-N 默認的連接數]
參數介紹
-v 顯示版本信息
-d 表示讓進程運行在debug模式 -db表示禁用在后台模式,讓程序在前台運行
-D 讓程序以daemon模式啟動
-q 表示安靜模式,程序無任何輸出
-c 對haproxy配置文件進行語法檢查
-n 設置最大並發連接數
-m 限制可用內存大小(單位MB)
-N 設置默認連接數
-p 設置HAProxy的PID文件路徑
-de 不使用epoll模型
-ds 不使用speculaive epoll
-dp 不使用poll模型
-sf 程序啟動后向PID文件發送FINISH信號,這個參數放在命令行最后
-st 程序啟動后像PID文件里的進程發送terminame信號,這個參數放在命令行最后,經常用於重啟HAProxy進程
關閉HAproxy執行如下命令:
kill -9 haproxy
要平滑重啟HAProxy的話執行如下命令

1 /usr/local/haproxy/sbin/haproxy -f > /usr/local/haproxy/conf/haproxy.cfg -st ·cat /usr/local/haproxy/logs/haproxy.pid·

為了方便管理,可以把HAProxy封裝成一個腳本
接下里測試HAProxy實現虛擬主機和負載均衡的功能
首先通過不同的ip的客戶端以www.tb.com或者tb.com來訪問網站,如果HAProxy運行正常,並且ACL規則設置正確,server_www的
三台后端服務器默認的web頁面信息將會依次出現,這說明HAProxy對電商網站實現了負載均衡,同時不會出現其他后端服務器的默認web頁面信息,說明ACL規則生效,實現虛擬主機功能.
同理,通過不同的ip的客戶端以bbs.tb.com訪問網站時,server_bbs的兩台后端服務器默認的web頁面信息將輪換出現,實現了論壇的負載均衡,同時不會出現其他后端服務器的默認web頁面信息
說明ACL規則生效,實現虛擬主機功能。
同理驗證blog.tb.com。
最后訪問其他ip或者其他訪問的時候,請求將會被調度到server_www指定的兩台后端真實服務器上.
測試HAProxy的故障轉移功能
這里假定將server_www組的一台后端服務器192.168.88.82的httpd服務停止,那么當通過www.tb.com或者tb.com域名訪問網站時,這個失效的節點將不會被訪問到,因為當httpd服務被停止后,HAProxy通過httpchk
方式將立即檢測到此節點無法訪問到數據,從而屏蔽此節點對外提供服務的功能,這樣就實現了故障的轉移.通過類似的方法可以測試其他節點的應用
使用HAProxy的web監控平台
稍后講解,怎么來安裝,操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM