keepalived+haproxy
做前說明:
1、MASTER和BACKUP主機各有2個ip,eth1為外網ip,但外網ip位址隻用1個即可
2、先把BACKUP主機的haproxy服務啟動(可以先把外網ip給它),啟動後再把外網ip給MASTER主機
3、MASTER主機宕後又正常使用前應先把haproxy服務給啟動,可以先不聯網啟動,啟動後再聯網
4、最好給BACKUP主機的eth1設個ip,随意設,不用在同一網段,瞎寫都行,因為沒有ip的話,MASTER宕後再啟動後2台機子将都會那個外網ip,會産生混亂
先在主機上搭好keepalived,目的是建一個能通路的外網ip,然後再搭haproxy,借助這個外網ip來通路,就可以實作熱備份或者說主、備切換同時負載均衡的效果
Keepalived的作用是檢測web伺服器的狀态,如果有一台web伺服器當機,或工作出現故障,Keepalived将檢測到,并将有故障的web伺服器從系統中剔除,讓沒問題的伺服器頂上,當web伺服器工作正常後再接過去原來的服務
HAProxy提供高可用性、負載均衡以及基于TCP和HTTP應用的代理,支援虛拟主機,它是免費、快速并且可靠的一種解決方案
http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz
MASTER主機:
1、搭建keepalived服務
# tar zxf keepalived-1.1.19.tar.gz
# cd keepalived-1.1.19
# ./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686/
# make && make intall
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected] (當IP發生遷移等事件的時候發送郵件到指定郵箱)
}
notification_email_from [email protected] (郵件發送方)
smtp_server 127.0.0.1 (郵件外發伺服器位址)
smtp_connect_timeout 30 (郵件逾時時間為30秒)
router_id LVS_DEVEL (一個執行個體的辨別)
}
vrrp_instance VI_1 {
State BACKUP (設定伺服器模式,注要大寫)
interface eth1 (執行個體網卡,也就是提供服務的網卡)
virtual_router_id 51
priority 100 (設定權值為100 主備之間的權值差最好大于50 權值範圍為0~255)
advert_int 1 (檢查時間為1秒)
authentication { (認證方式為密碼認證)
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
200.200.200.1 (外網ip)
}
後面的内容不用改
:wq
啟動keepalived
# service keepalived start
開機自啟動
# chkconfig --add keepalived
# chkconfig --level 35 keepalived on
# ip a
3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:01:11:2a brd ff:ff:ff:ff:ff:ff
inet 200.200.200.1/32 scope global eth0
inet6 fe80::20c:29ff:fe01:112a/64 scope link
其它主機ping200.200.200.1是可以ping通的,通路頁面也是可以的
2、搭建haproxy服務
# tar zcvf haproxy-1.3.20.tar.gz
# cd haproxy-1.3.20
# vi Makefile
PREFIX = /usr/local/haproxy (原為PREFIX = /usr/local)
# make TARGET=linux26
# make install
haproxy應用時有2種方式,linsten方式和frontend+backend方式
方式一(listen):
# vi /usr/local/haproxy/haproxy.cfg
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/haproxy.pid
defaults
log global
log 127.0.0.1 local3
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
mode http
stats uri /haproxy-stats
stats auth ming:123456
stats refresh 30s
monitor-uri /site_status
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen web 200.200.200.1:1080
balance roundrobin
server s1 192.168.1.10:80 weight 3 check
server s2 192.168.1.12:80 weight 3 check
方式二(frontend+backend):
frontend web 200.200.200.1:1080
default_backend aa
backend aa
balance roundrobin
server yang 192.168.1.10:80 weight 5 check
server ming 192.168.1.12:80 weight 3 check
啟動haproxy
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
開機自啟動:
# vi /etc/rc.local
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
檢視haproxy頁面:
http://200.200.200.1:1080/haproxy-status
使用者名:ming 密碼:123456
驗證效果:
在2主機上分别建2個頁面1.html 内容寫各自主機ip
http://200.200.200.1:1080/1.html
第一次會顯示192.168.1.10
第二次會顯示192.168.1.12
注:
1、1080是haproxy的端口号,是随意寫的,可改
2、電腦重新開機後/etc/init.d/httpd 會被改為/etc/init.d/httpd.rpmorig ,要自己改回來,chkconfig開機啟動指令也要再重寫一遍,原因不詳
BACKUP主機:
其步驟和MASTER主機步驟一樣,隻需把MASTER改成BACKUP 及 priority 100 改為50即可,haproxy步驟和MASTER主機一樣,一點不用變
驗證:
1、用http://200.200.200.1:1080/1.html來通路,能實作負載均衡
2、在MASTER主機宕後,BACKUP主機會自動接過來haproxy服務,并且保證了客戶通路不會受影響(還是用外網ip200.200.200.1:1080通路)
3、當MASTER主機正常後,200.200.200.1又會回到MASTER主機上,haproxy服務也就自然接了回去