搭建HAProxy+Keepalived 高可用負(fù)載均衡

HAProxy

HAProxy是一款提供高可用性裁着、負(fù)載均衡以及基于TCP(第四層)和HTTP(第七層)應(yīng)用的代理軟件(PS:nginx最新版也可以基于第四層和第七層的負(fù)載均衡)。
HAProxy和Keepalived 都采用源碼方式安裝踢京,如果沒有g(shù)cc編譯器色建,需要先安裝gcc編譯工具哺呜。

下載解壓安裝

下載haproxy:http://www.haproxy.org/download/1.4/src/

tar zxvf haproxy-1.4.24.tar.gz
cd haproxy-1.4.24
make install
mkdir -p /usr/local/haproxy/etc
mkdir -p /usr/local/haproxy/sbin
cp examples/haproxy.cfg /usr/local/haproxy/etc
ln -s /usr/local/sbin/haproxy /usr/local/haproxy/sbin/haproxy

修改配置文件

`vim /usr/local/haproxy/etc/haproxy.cfg`
global 
    maxconn 51200 #最大連接數(shù)
    chroot /usr/local/haproxy #改變當(dāng)前工作目錄
    uid 99
    gid 99
    daemon #后臺(tái)方式運(yùn)行
    #quiet
    nbproc 1  #并發(fā)進(jìn)程數(shù)
    pidfile /usr/local/haproxy/logs/haproxy.pid     #定義haproxy的pid


defaults  #默認(rèn)部分的定義
        mode http #mode {http|tcp|health} 。
                  #http是七層模式箕戳,tcp是四層模式某残,health是健康檢測(cè)返回OK
        #retries 2
        option redispatch
        option abortonclose
        timeout connect 5000ms   #連接超時(shí)
        timeout client 30000ms   #客戶端超時(shí)
        timeout server 30000ms   #服務(wù)器超時(shí)
        #timeout check 2000      #心跳檢測(cè)超時(shí)
        log 127.0.0.1 local0 err #[err warning info debug]
            #使用本機(jī)syslog服務(wù)的local3設(shè)備記錄錯(cuò)誤信息
        balance roundrobin

    # option httplog
    # option httpclose
    # option dontlognull
    # option forwardfor

 
listen admin_stats
        #定義一個(gè)名為status的部分,可以在listen指令指定的區(qū)域中定義匹配規(guī)則和后端服務(wù)器ip陵吸,
        bind 0.0.0.0:8888   # 定義監(jiān)聽的套接字
        option httplog
        stats refresh 30s   #統(tǒng)計(jì)頁(yè)面的刷新間隔為30s
        stats uri /stats     #登陸統(tǒng)計(jì)頁(yè)面是的uri
        stats realm Haproxy Manager
        stats auth admin:admin #登陸統(tǒng)計(jì)頁(yè)面是的用戶名和密碼
        #stats hide-version  # 隱藏統(tǒng)計(jì)頁(yè)面上的haproxy版本信息

listen tcp_test
        bind :12345
        mode tcp
        server t1 127.0.0.1:9000
        server t2 192.168.15.13:9000
        
listen zzs_dzfp_proxy:90
        mode http
        balance roundrobin   #輪詢
        cookie LBN insert indirect nocache   
        option httpclose   
        server web01 192.168.15.12:9000 check inter 2000 fall 3 weight 20  
        server web02 192.168.15.13:9000 check inter 2000 fall 3 weight 20

啟停haproxy

啟動(dòng)Haproxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg

停止Haproxy:

killall haproxy 

訪問統(tǒng)計(jì)頁(yè)面:

http://10.10.3.163:1080/stats

Keepalived

keepalived是集群管理中保證集群高可用的一個(gè)服務(wù)軟件玻墅,其功能類似于heartbeat,用來防止單點(diǎn)故障壮虫。

keepalived是以VRRP協(xié)議為實(shí)現(xiàn)基礎(chǔ)的澳厢,VRRP全稱Virtual Router Redundancy Protocol环础,即虛擬路由冗余協(xié)議。

虛擬路由冗余協(xié)議剩拢,可以認(rèn)為是實(shí)現(xiàn)路由器高可用的協(xié)議线得,即將N臺(tái)提供相同功能的路由器組成一個(gè)路由器組,這個(gè)組里面有一個(gè)master和多個(gè)backup徐伐,master上面有一個(gè)對(duì)外提供服務(wù)的vip(該路由器所在局域網(wǎng)內(nèi)其他機(jī)器的默認(rèn)路由為該vip)贯钩,master會(huì)發(fā)組播,當(dāng)backup收不到vrrp包時(shí)就認(rèn)為master宕掉了办素,這時(shí)就需要根據(jù)VRRP的優(yōu)先級(jí)來選舉一個(gè)backup當(dāng)master角雷。這樣的話就可以保證路由器的高可用了。

下載解壓編譯安裝

下載地址:http://www.keepalived.org/download.html
或者 :

wget http://www.keepalived.org/software/keepalived-1.2.8.tar.gz

安裝:

tar zxvf keepalived-1.2.8.tar.gz
cd keepalived-1.2.8
./configure --prefix=/usr/local/keepalived
make
make install

安裝成功后做成服務(wù)模式性穿。

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir -p /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
chmod +x /etc/init.d/keepalived
vi /etc/keepalived/keepalived.conf

修改文件配置keepalived.conf

global_defs {
    router_id LVS_DEVEL
}
#監(jiān)測(cè)haproxy進(jìn)程狀態(tài)勺三,健康檢查,每2秒執(zhí)行一次 
vrrp_script chk_haproxy {
    script "/etc/keepalived/chk_haproxy.sh" #監(jiān)控腳本
    interval 2   #每?jī)擅脒M(jìn)行一次
    weight -10    #如果script中的指令執(zhí)行失敗需曾,vrrp_instance的優(yōu)先級(jí)會(huì)減少10個(gè)點(diǎn)
}
vrrp_instance VI_1 {
    state MASTER          #主服務(wù)器MASTER檩咱,從服務(wù)器為BACKUP
    interface eth0        #服務(wù)器固有IP(非VIP)的網(wǎng)卡
    virtual_router_id 51  #取值在0-255之間,用來區(qū)分多個(gè)instance的VRRP組播胯舷,同一網(wǎng)段中virtual_router_id的值不能重復(fù)刻蚯,否則會(huì)出錯(cuò)。
    priority 100          #用來選舉master的桑嘶,要成為master炊汹,那么這個(gè)選項(xiàng)的值最好高于其他機(jī)器50個(gè)點(diǎn)。此時(shí)逃顶,從服務(wù)器要低于100讨便;
    advert_int 1          #健康查檢時(shí)間間隔
    mcast_src_ip 192.168.15.12    #MASTER服務(wù)器IP,從服務(wù)器寫從服務(wù)器的IP
    authentication { #認(rèn)證區(qū)域
        auth_type PASS  #推薦使用PASS(密碼只識(shí)別前8位)
        auth_pass 12345678
    }
    track_script {
        chk_haproxy    #監(jiān)測(cè)haproxy進(jìn)程狀態(tài)
    }
    virtual_ipaddress {
        192.168.15.235   #虛擬IP,作IP漂移使用
    }
}

監(jiān)控腳本配置

`vi /etc/keepalived/chk_haproxy.sh`
tatus=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
if [ "${status}" = "0" ]; then
    /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg

    status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)

    if [ "${status2}" = "0"  ]; then
            /etc/init.d/keepalived stop
    fi
fi

這個(gè)配置文件意思:檢查haproxy是否掛掉以政,如果掛掉啟動(dòng)haproxy霸褒;若啟動(dòng)之后還是沒有檢測(cè)到啟動(dòng)狀態(tài),則關(guān)閉keepalived盈蛮,讓IP飄移到備機(jī)上废菱。

啟動(dòng)停止keepalived命令

service keepalived start #啟動(dòng)
service keepalived stop #關(guān)閉服務(wù)

歡迎訪問我的博客:http://atecher.com/,有更多精彩文章抖誉!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末殊轴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子袒炉,更是在濱河造成了極大的恐慌旁理,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件我磁,死亡現(xiàn)場(chǎng)離奇詭異孽文,居然都是意外死亡驻襟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門芋哭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沉衣,“玉大人,你說我怎么就攤上這事楷掉∠崴猓” “怎么了霞势?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵烹植,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我愕贡,道長(zhǎng)草雕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任固以,我火速辦了婚禮墩虹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘憨琳。我一直安慰自己诫钓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布篙螟。 她就那樣靜靜地躺著众旗,像睡著了一般听皿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天技即,我揣著相機(jī)與錄音,去河邊找鬼轮锥。 笑死击蹲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕾久。 我是一名探鬼主播势似,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼僧著!你這毒婦竟也來了叫编?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤霹抛,失蹤者是張志新(化名)和其女友劉穎搓逾,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杯拐,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霞篡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年世蔗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朗兵。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡污淋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出余掖,到底是詐尸還是另有隱情寸爆,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布盐欺,位于F島的核電站赁豆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏冗美。R本人自食惡果不足惜魔种,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粉洼。 院中可真熱鬧节预,春花似錦、人聲如沸属韧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宵喂。三九已至糠赦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間樊破,已是汗流浹背愉棱。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哲戚,地道東北人奔滑。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像顺少,于是被迫代替她去往敵國(guó)和親朋其。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容