haproxy+keepalived實(shí)現(xiàn)高可用負(fù)載均衡(實(shí)例配置)
作者:split_two
環(huán)境四臺(tái)機(jī)器都是RedHat4.8(64位)版本:
IP地址 用處
192.168.5.55 MASTER
192.168.2.73 BACKUP
192.168.5.54 負(fù)載A
192.168.5.57 負(fù)載B
192.168.2.100 VIP
1、MASTER上安裝haproxy
wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz /root
解壓到當(dāng)前目錄
tar zxvf haproxy-1.3.20.tar.gz
進(jìn)到此目錄
cd haproxy-1.3.20
編譯及安裝,安裝到/usr/local目錄,但是安裝完此目錄下沒(méi)有haproxy文件夾,我也很奇怪!
make TARGET=linux26 prefix=/usr/local/haproxy install
但是出來(lái)的結(jié)果會(huì)提示如下信息
install -d /usr/local/sbin
install haproxy /usr/local/sbin
install -d /usr/local/share/man/man1
install -m 644 doc/haproxy.1 /usr/local/share/man/man1
install -d /usr/local/doc/haproxy
for x in configuration architecture haproxy-en haproxy-fr; do \
install -m 644 doc/$x.txt /usr/local/doc/haproxy ; \
done
提示你啟動(dòng)haproxy在sbin目錄,其余的在doc目錄
進(jìn)入到haproxy目錄
cd /usr/local/doc/haproxy
新建一個(gè)haproxy主配置文件
vi haproxy.cfg
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/doc/haproxy
uid 501
gid 501
daemon
nbproc 1
pidfile /usr/local/doc/haproxy/haproxy.pid
defaults
log 127.0.0.1 local3
mode http
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance roundrobin
stats uri /haproxy-status 查看狀態(tài)
stats hide-version 隱藏haproxy版本
stats realm Gemini\ Haproxy 查看狀態(tài)需要口令
stats auth admin:admin 用戶(hù)名和密碼
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web_proxy 192.168.2.100:80
server web1 192.168.5.54:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2 192.168.5.57:8080 cookie app1inst2 check inter 2000 rise 2 fall 5
2、MASTER安裝keepalived
tar zxvf keepalived-1.1.15.tar.gz
vi /usr/src/kernels/2.6.9-89.EL-smp-x86_64/include/linux/types.h
將如下兩行注釋掉,否則編譯會(huì)出錯(cuò),跟我這個(gè)版本的系統(tǒng)有關(guān)系,你的也許不要!
/*
typedef __u16 __bitwise __sum16;
typedef __u32 __bitwise __wsum;
*/
cd keepalived-1.1.15
./configure
make
make install
將keepalived作為系統(tǒng)服務(wù)啟動(dòng)
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived/
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
vi /etc/keepalived/keepalived.conf內(nèi)容如下:
! Configuration File for keepalived
global_defs {
router_id LVA_DEVEL
}
vrrp_script chk_http_port {
script "/root/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.2.100
}
}
上面調(diào)用了一個(gè)腳本check_haproxy.sh,內(nèi)容如下:
#!/bin/bash
A=`ps -C haproxy --no-header | wc -l`
if [ $A -eq 0 ];then
/usr/local/sbin/haproxy -f /usr/local/doc/haproxy/haproxy.cfg
echo "haproxy start"
sleep 3
if [ `ps -C haproxy --no-header | wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
echo "keepalived stop"
fi
fi
3、BACKUP上安裝haproxy,步驟就不詳細(xì)介紹,和MASTER上面一樣的。
haproxy.conf內(nèi)容如下
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/doc/haproxy
uid 501
gid 501
daemon
nbproc 1
pidfile /usr/local/doc/haproxy/haproxy.pid
defaults
log 127.0.0.1 local3
mode http
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance roundrobin
stats uri /haproxy-status
stats hide-version
stats realm Gemini\ Haproxy
stats auth admin:admin
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web_proxy 192.168.2.100:80
server web1 192.168.5.54:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2 192.168.5.57:8080 cookie app1inst2 check inter 2000 rise 2 fall 5
4、BACKUP上安裝keepalived,步驟也不多介紹,keepalived.conf文件內(nèi)容就兩處有變化,紅色字體標(biāo)出
! Configuration File for keepalived
global_defs {
router_id LVA_DEVEL
}
vrrp_script chk_http_port {
script "/root/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.2.100
}
}
調(diào)用腳本check_haproxy.sh內(nèi)容:
#!/bin/bash
A=`ip a | grep 192.168.2.100 | wc -l`
B=`ps -ef | grep haproxy | grep -v grep | awk '{print $2}'`
if [ $A -gt 0 ];then
/usr/local/sbin/haproxy -f /usr/local/doc/haproxy/haproxy.cfg
else
kill -9 $B
fi
5、兩臺(tái)負(fù)載機(jī)器我就不多介紹了,用的是系統(tǒng)自帶的apache
登錄192.168.5.54上操作:
echo 'this is 192.168.5.54!' > /var/www/html/index.html
修改/etc/httpd/conf/httpd.conf文件的監(jiān)聽(tīng)端口為8080
sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
/etc/init.d/httpd start
登錄192.168.5.57上操作:
echo 'Hello,This is 192.168.5.57!' > /var/www/html/index.html
修改/etc/httpd/conf/httpd.conf文件的監(jiān)聽(tīng)端口為8080
sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
/etc/init.d/httpd start
6、測(cè)試步驟
啟動(dòng)MASTER上的keepalived服務(wù),再啟動(dòng)BACKUP上的keepalived服務(wù)。
確定MASTER上是否有192.168.2.100地址,用ip a查看即可!
然后手動(dòng)殺掉MASTER上的haproxy進(jìn)程,看看是否能馬上恢復(fù)進(jìn)程?
停止MASTER上的keepalived服務(wù),確認(rèn)BACKUP是否接管VIP地址?
最后再啟動(dòng)MASTER上的keepalived服務(wù),再確認(rèn)MASTER是否再接管VIP地址?
總結(jié):我這測(cè)試都沒(méi)問(wèn)題,如果有問(wèn)題請(qǐng)給我留言!原文:http://blog.chinaunix.net/uid-23916356-id-3387261.html
- 使用Docker-compose部署mysql的簡(jiǎn)單步驟
- docker部署zookeeper集群方式(單主機(jī)、多主機(jī))
- docker部署xxl-job-admin出現(xiàn)數(shù)據(jù)庫(kù)拒絕問(wèn)題及解決方法
- Nginx實(shí)現(xiàn)高可用集群構(gòu)建(Keepalived+Haproxy+Nginx)
- CentOS7—HAProxy安裝與配置詳解
- Keepalived+HAProxy實(shí)現(xiàn)MySQL高可用負(fù)載均衡的配置
- linux服務(wù)器之LVS、Nginx和HAProxy負(fù)載均衡器對(duì)比總結(jié)
- Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口的問(wèn)題解決
相關(guān)文章
Linux 命令行通配符及轉(zhuǎn)義符的實(shí)現(xiàn)
這篇文章主要介紹了Linux 命令行通配符及轉(zhuǎn)義符的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11Apache負(fù)載均衡設(shè)置方法 mod_proxy使用介紹
本文主要講解了Apache負(fù)載均衡功能的代碼配置,首先我們通過(guò)幾個(gè)模塊的功能進(jìn)行配置,之后就會(huì)發(fā)現(xiàn)其中的奧秘了,那么我們還是來(lái)具體看文章吧2012-10-10apache2.2和php5.2.17在windows下整合過(guò)程的錯(cuò)誤解決方法
照理來(lái)說(shuō)apache和php的整合應(yīng)該是非常簡(jiǎn)單的,apache下載windows安裝版本后一路next即可完成安裝,php下載解壓版本后直接解壓到指定目錄,然后在apache的配置文件httpd.conf的最后加入如下幾行即可2011-08-08Linux下Redis允許遠(yuǎn)程連接的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Linux下Redis允許遠(yuǎn)程連接的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07新手入門(mén)級(jí)linux系統(tǒng)常用命令大全
本文為大家分享了Linux常用命令,這些命令幾乎每天都要用到,記錄下來(lái)方便以后查詢(xún)使用2018-10-10linux開(kāi)機(jī)啟動(dòng)nodemanager步驟
這篇文章主要介紹了linux開(kāi)機(jī)啟動(dòng)nodemanager的步驟,大家參考使用吧2014-01-01Apache服務(wù)器中.htaccess的基本配置總結(jié)
這篇文章主要介紹了Apache服務(wù)器中.htaccess的基本配置總結(jié),可以很方便地實(shí)現(xiàn)一些權(quán)限分配等效果,需要的朋友可以參考下2015-07-076ull加載linux驅(qū)動(dòng)模塊失敗解決方法
大家好,本篇文章主要講的是6ull加載linux驅(qū)動(dòng)模塊失敗解決方法,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12