天天看点

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