天天看點

keepalived+haproxy

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服務也就自然接了回去