最近在研究 負(fù)載均衡。目前研究的是keepalived+lvs模式
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為隨縣企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站制作,隨縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。1、軟件介紹
keepalived:顧名思義是保持存活,常用來搭建設(shè)備的高可用,防止業(yè)務(wù)核心設(shè)備出現(xiàn)單點(diǎn)故障。keepalived主要用作realserver的健康檢查以及負(fù)載均衡主機(jī)和backup主機(jī)之間的故障漂移。
單點(diǎn)故障:在公司整個(gè)業(yè)務(wù)流程中,某一點(diǎn)出現(xiàn)故障就會(huì)導(dǎo)致整個(gè)系統(tǒng)架構(gòu)不可用,單點(diǎn)故障常發(fā)生在數(shù)據(jù)庫、核心業(yè)務(wù)系統(tǒng)等。對(duì)此我們的解決辦法是對(duì)核心業(yè)務(wù)系統(tǒng)進(jìn)行高可用負(fù)載均衡。
LVS:LinuxVirtualServer,linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群系統(tǒng)。目前有三種負(fù)載均衡技術(shù)(VS/NAT、VS/TUN和VS/DR);十種調(diào)度算法(rrr|wrr|lc|wlc|lblcr|lblc|dh|sh|sed|nq)。
2、實(shí)驗(yàn)拓?fù)鋱D。
本次實(shí)驗(yàn)一共用到4臺(tái)服務(wù)器,其中兩臺(tái)服務(wù)器用來搭建keepalived+lvs,另兩臺(tái)是對(duì)外提供服務(wù)的web服務(wù)器。
本次實(shí)驗(yàn)用到了5個(gè)ip地址。
Master:10.68.4.201 Backup:10.68.4.58
web1:10.68.4.198web2:10.68.4.248
virtualIP:10.68.4.199
3、拓?fù)鋱D介紹
keepalived--master和keepalived--backup 兩者之間通過vrrp協(xié)議利用組播進(jìn)行通信,master主機(jī)對(duì)外接受請(qǐng)求并將請(qǐng)求轉(zhuǎn)發(fā)至后方的realserver,backup主機(jī)只接受請(qǐng)求而不轉(zhuǎn)發(fā)請(qǐng)求。某時(shí)刻當(dāng)backup主機(jī)沒有接受到master主機(jī)發(fā)送的信息時(shí),于是發(fā)送vrrp通告信息并廣播arp信息,宣城自己是master,如果收到其他主機(jī)發(fā)送的通告信息的優(yōu)先級(jí)比自己的高,那么自己將繼續(xù)轉(zhuǎn)為backup,優(yōu)先級(jí)別高的機(jī)器,此時(shí)就是新master主機(jī),并接替原master主機(jī)的工作。
每個(gè)keepalived機(jī)器都對(duì)后方的realserver進(jìn)行監(jiān)控,只不過master負(fù)責(zé)將外部請(qǐng)求轉(zhuǎn)發(fā)至后方的realserver,backup則不作該處理。
4、keepalived安裝
安裝的過程中,如果報(bào)錯(cuò)
checking for IPVS syncd support... yes
checking for kernel macvlansupport... no
checking whether SO_MARK is declared... no
configure: error: No SO_MARK declaration in headers
那么只需要在編譯時(shí),添加--disable-fwmark參數(shù)即可。最后確保如下幾項(xiàng)為yes狀態(tài)即可,加粗一定得是yes。
Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes
!ConfigurationFileforkeepalived global_defs{ notification_email{ } router_idLVS_DEVEL } vrrp_instanceVI_1{#定義一個(gè)vrrp組,組名唯一 stateMASTER#定義改主機(jī)為keepalived的master主機(jī) interfaceeth0#監(jiān)控eth0號(hào)端口 virtual_router_id58#虛擬路由id號(hào)為58,id號(hào)唯一,這個(gè)id決定了多播的MAC地址 priority150#設(shè)置本節(jié)點(diǎn)的優(yōu)先級(jí),master的優(yōu)先級(jí)要比backup的優(yōu)先級(jí)別高,數(shù)值要大 advert_int1#檢查間隔,默認(rèn)為1秒 authentication{ auth_typePASS#認(rèn)證方式,密碼認(rèn)證 auth_pass1111#認(rèn)證的密碼,這個(gè)密碼必須和backup上的一致 } virtual_ipaddress{#設(shè)置虛擬的ip,這個(gè)ip是以后對(duì)外提供服務(wù)的ip。 10.68.4.199 } } virtual_server10.68.4.19980{#虛擬主機(jī)設(shè)置,ip同上。 delay_loop2#服務(wù)器輪詢的時(shí)間間隔 lb_algorr#lvs的調(diào)度算法 lb_kindDR#lvs的集群模式 nat_mask255.255.255.0 persistence_timeout50#會(huì)話超時(shí)50s protocolTCP#健康檢查是用tcp還是udp real_server10.68.4.24880{#后端真實(shí)主機(jī)1 weight100#每臺(tái)機(jī)器的權(quán)重,0表示不給該機(jī)器轉(zhuǎn)發(fā)請(qǐng)求,知道它恢復(fù)正常。 TCP_CHECK{#健康檢查項(xiàng)目,以下 connect_timeout3 nb_get_retry3 delay_before_retry3 connect_port80 } } real_server10.68.4.19880{#后端真實(shí)主機(jī)2 weight100#每臺(tái)機(jī)器的權(quán)重,0表示不給該機(jī)器轉(zhuǎn)發(fā)請(qǐng)求,知道它恢復(fù)正常。 TCP_CHECK{#健康檢查項(xiàng)目,以下 connect_timeout3 nb_get_retry3 delay_before_retry3 connect_port80 } } }
backup主機(jī)的配置基本同上,只有以下地方需要修改。
stateBACKUP#定義改主機(jī)為keepalived的backup主機(jī),監(jiān)控主master priority100#設(shè)置本節(jié)點(diǎn)的優(yōu)先級(jí),數(shù)值要比master主機(jī)上的小
測(cè)試keepalived的故障漂移,
首先,在10.68.4.201和10.68.4.58上同時(shí)啟動(dòng)keepalived,此時(shí)觀察master主機(jī)和backup主機(jī)
可以看出虛擬ip此時(shí)綁定在4.201--master上,然后停止4.201上的keepalived服務(wù)
通過查看4.58上的日志,可以看到4.58已經(jīng)宣告自己是master了。并且虛擬ip也漂移到新的mater機(jī)器上。
以上的配置,keepalived的高可用功能已經(jīng)實(shí)現(xiàn)。
5、realserver服務(wù)器配置
本例中,我在4.198和4.248上,分別安裝了httpd,模擬兩臺(tái)web服務(wù)器。然后要在兩臺(tái)服務(wù)器上配置虛擬vip,這里我寫了一個(gè)腳本。
#!/bin/bash #description:configrealserverloandapplynoarp WEB_VIP=10.68.4.199#虛擬vip,也就是虛擬ip ./etc/rc.d/init.d/functions case"$1"in start) ifconfiglo:0$WEB_VIPnetmask255.255.255.255broadcast$WEB_VIP /sbin/routeadd-host$WEB_VIPdevlo:0 echo"1">/proc/sys/net/ipv4/conf/lo/arp_ignore echo"2">/proc/sys/net/ipv4/conf/lo/arp_announce echo"1">/proc/sys/net/ipv4/conf/all/arp_ignore echo"2">/proc/sys/net/ipv4/conf/all/arp_announce echo"1">/proc/sys/net/ipv4/conf/eth0/arp_ignore echo"2">/proc/sys/net/ipv4/conf/eth0/arp_announce echo"1">/proc/sys/net/ipv4/conf/default/arp_ignore echo"2">/proc/sys/net/ipv4/conf/default/arp_announce sysctl-p>/dev/null2>&1 echo"RealServerStartOK" ;; stop) ifconfiglo:0down routedel$WEB_VIP>/dev/null2>&1 echo"0">/proc/sys/net/ipv4/conf/lo/arp_ignore echo"0">/proc/sys/net/ipv4/conf/lo/arp_announce echo"0">/proc/sys/net/ipv4/conf/all/arp_ignore echo"0">/proc/sys/net/ipv4/conf/all/arp_announce echo"0">/proc/sys/net/ipv4/conf/eth0/arp_ignore echo"0">/proc/sys/net/ipv4/conf/eth0/arp_announce echo"0">/proc/sys/net/ipv4/conf/default/arp_ignore echo"0">/proc/sys/net/ipv4/conf/default/arp_announce echo"RealServerStoped" ;; status) #StatusofLVS-DRrealserver. islothere=`/sbin/ifconfiglo:0|grep$WEB_VIP` isrothere=`netstat-rn|grep"lo:0"|grep$WEB_VIP` if[!"$islothere"-o!"isrothere"];then #Eithertherouteorthelo:0device #notfound. echo"LVS-DRrealserverStopped." else echo"LVS-DRRunning." fi ;; *) #Invalidentry. echo"$0:Usage:$0{start|status|stop}" exit1 ;; esac exit0
將此腳本分別在4.198和4.248上執(zhí)行下。此時(shí),我們?cè)趦膳_(tái)keepalived的主機(jī)上可以查看到如下相同信息。
此時(shí),我們通過網(wǎng)頁訪問10.68.4.199,時(shí),根據(jù)ipvsadm查詢到的realserver主機(jī)的順序,可以看出此時(shí)優(yōu)先訪問4.198.
而當(dāng)我們將4.198這臺(tái)機(jī)器的httpd的服務(wù)停掉,首先可以看到兩臺(tái)keepalived主機(jī)都會(huì)將4.198這臺(tái)機(jī)器剔除,此時(shí)我們?cè)俅尾樵儠r(shí)ipvsadm,只可以看到一臺(tái)web服務(wù)器,再次頁面訪問,這時(shí)就是在訪問4.248這臺(tái)機(jī)器了。
而當(dāng)我們修復(fù)好4.198機(jī)器后,keepalived又會(huì)自動(dòng)將改服務(wù)器添加進(jìn)來。
從上面的測(cè)試可知,lvs的負(fù)載均衡功能已經(jīng)實(shí)現(xiàn)。
6、我碰到過的問題
頁面乜有任何顯示,思來想去就是找不到問題出在哪? 后面從論壇上看到一位網(wǎng)友也出現(xiàn)同樣的問題,細(xì)問下才知導(dǎo)致這個(gè)問題出現(xiàn)是因?yàn)槲覀僰eepalived.conf 文件 的書寫格式存在問題,后面我回去重新檢查了下,發(fā)現(xiàn)少寫了一個(gè) “}” keepalived啟動(dòng)時(shí)不會(huì)檢測(cè)keepalived.conf 配置文件語法格式。 所以以后再配置書寫時(shí),一定要格外注意啊。
網(wǎng)站欄目:Keepalived+lvs+httpd之負(fù)載均衡
文章來源:http://muchs.cn/article48/cghiep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、微信小程序、網(wǎng)站制作、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)