真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Linux運(yùn)維:基于虛擬主機(jī)的HAProxy負(fù)載均衡系統(tǒng)配置實(shí)例\"

本文通過一個(gè)具體的實(shí)例詳細(xì)講解和演示HAProxy下虛擬主機(jī)的實(shí)現(xiàn)過程以及HAProxy是如何實(shí)現(xiàn)負(fù)載均衡和故障轉(zhuǎn)移的。

永新網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

1、通過HAProxy的ACL規(guī)則配置虛擬主機(jī)

下面通過HAProxy的ACL功能配置一套基于虛擬主機(jī)的負(fù)載均衡系統(tǒng),這里的操作系統(tǒng)環(huán)境為CentOS release 6.3,HAProxy版本為haproxy-1.4.24,要實(shí)現(xiàn)的功能如圖1所示。

圖1 基于虛擬主機(jī)的HAPro y應(yīng)用實(shí)例

本實(shí)例有一個(gè)電商網(wǎng)站服務(wù)器群、一個(gè)論壇服務(wù)器群、一個(gè)博客服務(wù)器群和默認(rèn)服務(wù)器群,4個(gè)服務(wù)器群都由多臺(tái)服務(wù)器組成,而4個(gè)服務(wù)器群又組成了一個(gè)應(yīng)用服務(wù)器群組,在每個(gè)服務(wù)器群的前端有一個(gè)基于HAProxy的負(fù)載均衡調(diào)度器,整個(gè)應(yīng)用架構(gòu)要實(shí)現(xiàn)的功能為:當(dāng)客戶端通過域名www.tb.com或tb.com訪問時(shí),HAProxy將請(qǐng)求提交到電商網(wǎng)站服務(wù)器群,進(jìn)而實(shí)現(xiàn)電商網(wǎng)站的負(fù)載均衡;當(dāng)客戶端通過域名bbs.tb.com訪問時(shí)就將請(qǐng)求調(diào)度到論壇服務(wù)器群,實(shí)現(xiàn)論壇的負(fù)載均衡;當(dāng)客戶端通過blog.tb.com訪問時(shí)則將請(qǐng)求調(diào)度到博客服務(wù)器群中,實(shí)現(xiàn)博客的負(fù)載均衡;如果客戶端通過除上面三種方式外的任意方式請(qǐng)求服務(wù)時(shí),就將請(qǐng)求調(diào)度到缺省服務(wù)器群。

要實(shí)現(xiàn)上述功能,如果使用四層的LVS負(fù)載均衡器,則需要一個(gè)代理服務(wù)器配合LVS負(fù)載均衡器才能實(shí)現(xiàn),而通過HAProxy實(shí)現(xiàn)時(shí),僅需要一個(gè)HAProxy負(fù)載調(diào)度器再結(jié)合ACL規(guī)則即可輕松實(shí)現(xiàn)。

(1)配置HAProxy

HAProxy的安裝非常簡(jiǎn)單,這里直接進(jìn)入HAProxy的配置過程,配置好的文件內(nèi)容如下:

global

log 127.0.0.1 local0 info

maxconn 4096

user nobody

group nobody

daemon

nbproc 1

pidfile /usr/local/haproxy/logs/haproxy.pid

defaults

mode http

retries 3

timeout connect 5s

timeout client 30s

timeout server 30s

timeout check 2s

listen admin_stats

bind 0.0.0.0:19088

mode http

log 127.0.0.1 local0 err

stats refresh 30s

stats uri /haproxy-status

stats realm welcome login\\ Haproxy

stats auth admin:xxxxxx

stats auth admin1:xxxxxx

stats hide-version

stats admin if TRUE

frontend www

bind *:80

mode http

option httplog

option forwardfor

log global

acl host_www hdr_reg(host) -i ^(www.tb.com|tb.com)

acl host_bbs hdr_dom(host) -i bbs.tb.com

acl host_blog hdr_beg(host) -i blog.

use_backend server_www if host_www

use_backend server_bbs if host_bbs

use_backend server_blog if host_blog

default_backend server_default

backend server_default

mode http

option redispatch

option abortonclose

balance roundrobin

cookie SERVERID

option httpchk GET /check_status.html

server default1 192.168.88.90:8000 cookie default1 weight 3 check inter 2000 rise 2 fall 3

server default2192.168.88.91:8000 cookie default2weight 3 check inter 2000 rise 2 fall 3

backend server_www

mode http

option redispatch

option abortonclose

balance source

cookie SERVERID

option httpchk GET /check_status.jsp

server www1 192.168.88.80:80 cookie www1 weight 6 check inter 2000 rise 2 fall 3

server www2 192.168.88.81:80 cookie www2 weight 6 check inter 2000 rise 2 fall 3

server www3 192.168.88.82:80 cookie www3 weight 6 check inter 2000 rise 2 fall 3

backend server_bbs

mode http

option redispatch

option abortonclose

balance source

cookie SERVERID

option httpchk GET /check_status.php

server bbs1 192.168.88.83:8080 cookie bbs1 weight 8 check inter 2000 rise 2 fall 3

server bbs2 192.168.88.84:8090 cookie bbs2 weight 8 check inter 2000 rise 2 fall 3

backend server_blog

mode http

option redispatch

option abortonclose

balance roundrobin

cookie SERVERID

option httpchk GET /check_blog.php

server blog1 192.168.88.85:80 cookie blog1 weight 5 check inter 2000 rise 2 fall 3

server blog2 192.168.88.86:80 cookie blog2 weight 5 check inter 2000 rise 2 fall 3

這里重點(diǎn)看一下HAProxy配置文件中frontend部分中關(guān)于ACL配置部分的內(nèi)容,這個(gè)是實(shí)現(xiàn)虛擬主機(jī)的核心配置部分。另外,這個(gè)配置文件定義了server_www、server_bbs、server_blog、server_default4個(gè)backend,分別對(duì)應(yīng)上面的4個(gè)服務(wù)器群,對(duì)于server_www群和server_bbs群,采用了基于請(qǐng)求源IP的負(fù)載均衡算法,其他兩個(gè)群均采用基于權(quán)重進(jìn)行輪叫調(diào)度的算法。這也是根據(jù)Web應(yīng)用的特點(diǎn)而定的。每個(gè)backend中都定義了httpchk的檢測(cè)方式,因此要保證這里指定的URL頁(yè)面是可訪問到的。

為了驗(yàn)證負(fù)載均衡的功能,這里需要將后端真實(shí)服務(wù)器做一個(gè)訪問標(biāo)記,這個(gè)架構(gòu)一共加入了9臺(tái)后端真實(shí)服務(wù)器,共分為四組,這里將server_www的三臺(tái)后端服務(wù)器默認(rèn)的Web頁(yè)面設(shè)置如下:

[root@www1 app]# echo "This is www1192.168.88.80" > /var/www/html/index.html

[root@www2 app]# echo "This is www2 192.168.88.81" > /var/www/html/index.html

[root@www3 app]# echo "This is www3 192.168.88.82" > /var/www/html/index.html

同理,將server_bbs的兩臺(tái)后端服務(wù)器默認(rèn)的Web頁(yè)面設(shè)置如下:

[root@bbs1 app]# echo "This is bbs1 192.168.88.83" > /var/www/html/index.html

[root@bbs2 app]# echo "This is bbs2 192.168.88.84" > /var/www/html/index.html

接著,將server_blog的兩臺(tái)后端服務(wù)器默認(rèn)的Web頁(yè)面設(shè)置如下:

[root@blog1 app]# echo "This is bbs1 192.168.88.85" > /var/www/html/index.html

[root@blog2 app]# echo "This is bbs2 192.168.88.86" > /var/www/html/index.html

最后,將server_default的兩臺(tái)后端服務(wù)器默認(rèn)的Web頁(yè)面設(shè)置如下:

[root@default1 app]# echo "This is default1 192.168.88.90" > /var/www/html/index.html

[root@default2 app]# echo "This isdefault2 192.168.88.91" > /var/www/html/index.html

這樣就為接下來的測(cè)試做好了準(zhǔn)備。

(2)啟動(dòng)HAProxy

HAProxy安裝完成后,會(huì)在安裝根目錄的sbin目錄下生成一個(gè)可執(zhí)行的二進(jìn)制文件haproxy,對(duì)HAProxy的啟動(dòng)、關(guān)閉、重啟等維護(hù)操作都是通過這個(gè)二進(jìn)制文件實(shí)現(xiàn)的,執(zhí)行“haproxy -h”命令即可得到此文件的用法。

haproxy[ -f <配置文件> ][ -vdVD ][ -n 并發(fā)連接總數(shù) ][ -N 默認(rèn)的連接數(shù) ]

haproxy常用的參數(shù)以及含義如表1所示。

表1 haproxy常用參數(shù)及含義

介紹完HAProxy常用的參數(shù)后,下面開始啟動(dòng)HAProxy,操作如下:

[root@haproxy-server haproxy]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

如果要關(guān)閉HAProxy,執(zhí)行如下命令即可:

[root@haproxy-server haproxy]# killall -9 haproxy

如果要平滑重啟HAProxy,可執(zhí)行如下命令:

[root@haproxy-server haproxy]#/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`

有時(shí)候?yàn)榱斯芾砗途S護(hù)方便,也可以把HAProxy的啟動(dòng)與關(guān)閉寫成一個(gè)獨(dú)立的腳本,這里給出一個(gè)例子,腳本內(nèi)容如下:

#!/bin/bash

#config:/usr/local/haproxy/conf/haproxy.cfg

#pidfile:/usr/local/haproxy/logs/haproxy.pid

#Source function library

. /etc/rc.d/init.d/functions

#Source networking configuration

. /etc/sysconfig/network

#Check that networking is up

[ "$NETWORKING" = "no" ] && exit 0

config="/usr/local/haproxy/conf/haproxy.cfg"

exec="/usr/local/haproxy/sbin/haproxy"

prog=$(basename $exec)

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/haproxy

check() {

$exec -c -V -f $config

}

start() {

$exec -c -V -f $config

if [ $? -ne 0 ];then

echo "Erros in configuration file, check with $prog check."

return 1

fi

echo -n $"Starting $prog:"

#start it up here, usually something like "daemon $exec"

daemon $exec -D -f $config -p /usr/local/haproxy/logs/$prog.pid

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n "Stopping $prog:"

# stop it here, often "killproc $prog"

killproc $prog

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

$exec -c -q -f $config

if [ $? -ne 0 ];then

echo "Errors in configuration file, check with $prog check."

return 1

fi

stop

start

}

reload() {

$exec -c -q -f $config

if [ $? -ne 0 ];then

echo "Errors in configuration file, check with $prog check."

return 1

fi

echo -n $"Reloading $prog:"

$exec -D -f $config -p /usr/local/haproxy/logs/$prog.pid -sf $(cat /usr/local/haproxy/logs/$prog.pid)

retval=$?

echo

return $retval

}

force_reload() {

restart

}

fdr_status() {

status $prog

}

case $1 in

start|stop|restart|reload)

$1

;;

force-reload)

force_reload

;;

checkconfig)

check

;;

status)

fdr_status

;;

condrestart|try-restart)

[ ! -f $lockfile ] || restart

;;

*)

echo $"Usage: $0 {start|stop|status|checkconfig|restart|try-restart|reload|force_reload}"

exit 2

esac

將此腳本命名為haproxy,放在系統(tǒng)的/etc/init.d/目錄下,下面是此腳本的用法:

[root@haproxy-server logs]#/etc/init.d/haproxyUsage:/etc/init.d/haproxy{start|stop|status|checkconfig|restart|try-restart reload|force-reload}

HAProxy啟動(dòng)后,就可以測(cè)試HAProxy所實(shí)現(xiàn)的各種功能了。

2、測(cè)試HAProxy實(shí)現(xiàn)虛擬主機(jī)和負(fù)載均衡功能

首先通過不同IP的客戶端以www.tb.com或者tb.com域名訪問網(wǎng)站,如果HAProxy運(yùn)行正常,并且ACL規(guī)則設(shè)置正確,server_www的三臺(tái)后端服務(wù)器默認(rèn)的Web頁(yè)面信息將會(huì)依次出現(xiàn),這說明HAProxy對(duì)電商網(wǎng)站實(shí)現(xiàn)了負(fù)載均衡,同時(shí),不會(huì)出現(xiàn)其他后端服務(wù)器的默認(rèn)Web頁(yè)面信息,說明ACL規(guī)則生效,實(shí)現(xiàn)虛擬主機(jī)功能。

同理,當(dāng)通過不同IP的客戶端以bbs.tb.com訪問網(wǎng)站時(shí),server_bbs的兩臺(tái)后端服務(wù)器默認(rèn)的Web頁(yè)面信息將輪換出現(xiàn)。這表示實(shí)現(xiàn)了論壇的負(fù)載均衡功能,同時(shí),不會(huì)出現(xiàn)其他后端服務(wù)器的默認(rèn)Web頁(yè)面信息,說明ACL規(guī)則生效,實(shí)現(xiàn)虛擬主機(jī)功能。

用同樣的方法可以驗(yàn)證blog.tb.com是否實(shí)現(xiàn)了虛擬主機(jī)功能以及負(fù)載均衡功能。最后,當(dāng)通過HAProxy服務(wù)器的IP或者其他方式訪問時(shí),訪問請(qǐng)求將被調(diào)度到server_default指定的兩臺(tái)后端真實(shí)服務(wù)器上。

3、測(cè)試HAProxy的故障轉(zhuǎn)移功能

測(cè)試HAProxy的故障轉(zhuǎn)移功能也非常簡(jiǎn)單,這里假定將server_www組的一臺(tái)后端服務(wù)器192.168.88.82的httpd服務(wù)停止,那么當(dāng)通過www.tb.com或者tb.com域名訪問網(wǎng)站時(shí),這個(gè)失效的節(jié)點(diǎn)將不會(huì)被訪問到,因?yàn)楫?dāng)httpd服務(wù)被停止后,HAProxy通過httpchk方式將立刻檢測(cè)到此節(jié)點(diǎn)無法返回?cái)?shù)據(jù),從而屏蔽此節(jié)點(diǎn)對(duì)外提供服務(wù)的功能,這樣就實(shí)現(xiàn)了故障轉(zhuǎn)移功能。通過類似的方法可以測(cè)試其他節(jié)點(diǎn)的應(yīng)用。

4、使用HAProxy的Web監(jiān)控平臺(tái)

雖然HAProxy實(shí)現(xiàn)了服務(wù)的故障轉(zhuǎn)移功能,但是在主機(jī)或者服務(wù)出現(xiàn)故障的時(shí)候,并不能發(fā)出通知告知運(yùn)維人員,這對(duì)于及時(shí)性要求很高的業(yè)務(wù)系統(tǒng)來說,是非常不便的。不過,HAProxy似乎也考慮到了這一點(diǎn),在新的版本中HAProxy推出了一個(gè)基于Web的監(jiān)控平臺(tái),通過這個(gè)平臺(tái)可以查看此集群系統(tǒng)所有后端服務(wù)器的運(yùn)行狀態(tài),在后端服務(wù)或服務(wù)器出現(xiàn)故障時(shí),監(jiān)控頁(yè)面會(huì)通過不同的顏色來展示故障信息,這在很大程度上解決了后端服務(wù)器故障報(bào)警的問題,運(yùn)維人員可通過監(jiān)控這個(gè)頁(yè)面來第一時(shí)間發(fā)現(xiàn)節(jié)點(diǎn)故障,進(jìn)而修復(fù)故障,如圖2所示。

圖2 HAProxy的Web監(jiān)控頁(yè)面

在這個(gè)監(jiān)控頁(yè)面中,詳細(xì)記錄了HAProxy中配置的frontend、backend等信息。在backend中有各臺(tái)后端真實(shí)服務(wù)器的運(yùn)行狀態(tài),正常情況下,所有后端服務(wù)器都以淺綠色展示,當(dāng)某臺(tái)后端服務(wù)器出現(xiàn)故障時(shí),將以深橙色顯示。其實(shí)每種顏色代表什么狀態(tài),在上面這個(gè)圖中都有詳細(xì)說明。

在這個(gè)監(jiān)控頁(yè)面中,還可以執(zhí)行關(guān)閉自動(dòng)刷新、隱藏故障狀態(tài)的節(jié)點(diǎn)、手動(dòng)刷新、導(dǎo)出數(shù)據(jù)為CSV文件等各種操作。在新版的HAProxy中,又增加了對(duì)backend后端節(jié)點(diǎn)的管理功能,例如,可以在Web頁(yè)面下執(zhí)行Disable、Enable、Soft Stop、Soft Start等對(duì)后端節(jié)點(diǎn)的管理操作。這個(gè)功能在后端節(jié)點(diǎn)升級(jí)、故障維護(hù)時(shí)非常有用。


網(wǎng)頁(yè)題目:Linux運(yùn)維:基于虛擬主機(jī)的HAProxy負(fù)載均衡系統(tǒng)配置實(shí)例\"
URL標(biāo)題:http://weahome.cn/article/chdpgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部