資源描述:
《Keepalived+HAproxy實(shí)現(xiàn)redis高可用負(fù)載均衡》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Keepalived+HAproxy實(shí)現(xiàn)redis的高可用負(fù)載均衡總概:Keepalived是一個(gè)類似于layer3,4&5交換機(jī)制的軟件,也就是我們平時(shí)說的第3層、第4層和第5層交換。Keepalived的作用是檢測web服務(wù)器的狀態(tài),如果有一臺(tái)web服務(wù)器死機(jī),或工作出現(xiàn)故障,Keepalived將檢測到,并將有故障的web服務(wù)器從系統(tǒng)中剔除,當(dāng)web服務(wù)器工作正常后Keepalived自動(dòng)將web服務(wù)器加入到服務(wù)器群中,這些工作全部自動(dòng)完成,不需要人工干涉,需要人工做的只是修復(fù)故障的web服務(wù)器HAProxy提供高可用性、負(fù)載均衡以及基于TCP和
2、HTTP應(yīng)用的代理,支持虛擬主機(jī),它是免費(fèi)、快速并且可靠的一種解決方案。HAProxy特別適用于那些負(fù)載特大的web站點(diǎn),這些站點(diǎn)通常又需要會(huì)話保持或七層處理。HAProxy運(yùn)行在當(dāng)前的硬件上,完全可以支持?jǐn)?shù)以萬計(jì)的并發(fā)連接。并且它的運(yùn)行模式使得它可以很簡單安全的整合進(jìn)您當(dāng)前的架構(gòu)中,同時(shí)可以保護(hù)你的web服務(wù)器不被暴露到網(wǎng)絡(luò)上。這里我利用HAproxy對多臺(tái)redis服務(wù)器進(jìn)行負(fù)載,然后用Keepalived對HAproxy進(jìn)行監(jiān)控:(主)服務(wù)器A:192.168.4.143(從)服務(wù)器B:192.168.4.126A上安裝redis(主)、reid
3、s-slave1(從)、redis-slave2(從)、HAproxy、KeepalivedB上安裝redis-slave3(從)、redis-slave4(從)、HAproxy、KeepalivedKeepalived監(jiān)控A、B上的HAproxy,利用Keepalived的VIP漂移技術(shù),若A、B上的HAprox都工作正常,則VIP與優(yōu)先級別高的服務(wù)器(主服務(wù)器)綁定,當(dāng)主服務(wù)器當(dāng)?shù)魰r(shí),則與從服務(wù)器綁定,而VIP則是暴露給外部訪問的ip;HAproxy利用Keepalived生產(chǎn)的VIP對多臺(tái)redis(從)進(jìn)行讀負(fù)載,當(dāng)某臺(tái)redis當(dāng)?shù)?,則將其移
4、除,回復(fù)后加入集群。安裝redis1、下載后解壓tarzxvfredis-2.6.14.tar.gz到任意目錄,例如/usr/local/redis-2.6.14解壓后,進(jìn)入redis目錄cd/usr/local/redis-2.6.14make&&makeinstall2、配置redisvi/usr/local/redis-2.6.14/redis.confredis配置文件參數(shù)說明:1.Redis默認(rèn)不是以守護(hù)進(jìn)程的方式運(yùn)行,可以通過該配置項(xiàng)修改,使用yes啟用守護(hù)進(jìn)程???daemonizeno2.當(dāng)Redis以守護(hù)進(jìn)程方式運(yùn)行時(shí),Redis默認(rèn)
5、會(huì)把pid寫入/var/run/redis.pid文件,可以通過pidfile指定???pidfile/var/run/redis.pid3.指定Redis監(jiān)聽端口,默認(rèn)端口為6379,作者在自己的一篇博文中解釋了為什么選用6379作為默認(rèn)端口,因?yàn)?379在手機(jī)按鍵上MERZ對應(yīng)的號碼,而MERZ取自意大利歌女AlessiaMerz的名字???port63794.綁定的主機(jī)地址???bind127.0.0.15.當(dāng)客戶端閑置多長時(shí)間后關(guān)閉連接,如果指定為0,表示關(guān)閉該功能???timeout3006.指定日志記錄級別,Redis總共支持四個(gè)級別:de
6、bug、verbose、notice、warning,默認(rèn)為verbose???loglevelverbose7.日志記錄方式,默認(rèn)為標(biāo)準(zhǔn)輸出,如果配置Redis為守護(hù)進(jìn)程方式運(yùn)行,而這里又配置為日志記錄方式為標(biāo)準(zhǔn)輸出,則日志將會(huì)發(fā)送給/dev/null???logfilestdout8.設(shè)置數(shù)據(jù)庫的數(shù)量,默認(rèn)數(shù)據(jù)庫為0,可以使用SELECT命令在連接上指定數(shù)據(jù)庫id???databases169.指定在多長時(shí)間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件,可以多個(gè)條件配合???save???Redis默
7、認(rèn)配置文件中提供了三個(gè)條件:???save9001???save30010???save6010000???分別表示900秒(15分鐘)內(nèi)有1個(gè)更改,300秒(5分鐘)內(nèi)有10個(gè)更改以及60秒內(nèi)有10000個(gè)更改。?10.指定存儲(chǔ)至本地?cái)?shù)據(jù)庫時(shí)是否壓縮數(shù)據(jù),默認(rèn)為yes,Redis采用LZF壓縮,如果為了節(jié)省CPU時(shí)間,可以關(guān)閉該選項(xiàng),但會(huì)導(dǎo)致數(shù)據(jù)庫文件變的巨大???rdbcompressionyes11.指定本地?cái)?shù)據(jù)庫文件名,默認(rèn)值為dump.rdb???dbfilenamedump.rdb12.指定本地?cái)?shù)據(jù)庫存放目錄???dir./13.設(shè)置當(dāng)本機(jī)
8、為slav服務(wù)時(shí),設(shè)置master服務(wù)的IP地址及端口,在Redis啟動(dòng)時(shí),它會(huì)自動(dòng)從mast