HA+Keepalive简单双机热备

作者: 魏延是反贼. 分类: Linux

为了省IP,公司的一些项目前端要全用HA来跑了~~于是整了一套简单的HA+Keepalive的双机热备,方便出问题的时候自动切换~。有人说为什么不用LVS,直接就用Keepalive了,问题是,LVS是个4层交换软件,我需要用域名来做HA,所以无法做到7层上,于是被逼无奈使用了HA~,这里我向大家简单展示了HA同时监听80端口和8081端口的配置方案,欢迎大家提出建议和意见。

设备内容:2台CentOS5.9 的R610 服务器:

  • 1台主:ip:172.16.68.8
  • 1台从:ip:172.16.68.9
  • vip: 172.16.68.10

1.Keepalive安装
1.1 安装ipvsadm
yum install -y ipvsadm

1.2 下载Keepalived
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
tar -zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure –prefix=/usr –sysconf=/etc –with-kernel-dir=/usr/src/kernels/2.6.18-128.el5-x86_64/
make
make install

1.3 编辑keepalved.conf配置文件(主服务器)
vim /etc/keepalived/keepalived.conf

配置文件内容如下:
global_defs {
        router_id NGBOSSLVS_NODE_1
        }
        
vrrp_instance V_NGBOSS {
        state MASTER
        interface eth0
        lvs_sync_daemon_inteface eth0
        virtual_router_id 51
        priority 200
        advert_int 2
        authentication {
        auth_type PASS
        auth_pass 1111
        }
virtual_ipaddress {
        172.16.68.10
        }
}

1.4 编辑keepalved.conf配置文件(备份服务器)
vim /etc/keepalived/keepalived.conf

global_defs {
        router_id NGBOSSLVS_NODE_2
}
        
vrrp_instance V_NGBOSS {
        state BACKUP
        interface eth0
        lvs_sync_daemon_inteface eth0
        virtual_router_id 51
        priority 100
        advert_int 2
        authentication {
        auth_type PASS
        auth_pass 1111
        }
virtual_ipaddress {
        172.16.68.10
        }
}

1.5 将keepalived服务加入开机启动启动。
cp ./keepalived/etc/init.d/keepalived.init /etc/init.d/keepalived
chkconfig –add keepalived
chkconfig keepalived on

1.6 启动keepalived
/etc/init.d/keepalived start

2.HA的安装

HA的安装实际上十分简单,我们使用最新的1.4.22版本。

wget?http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz
tar zcvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

安装好之后,实际上有用的只是/usr/local/haproxy/sbin下的haproxy这个命令。

接下来,设置Haproxy的自动启动脚本

cp examples/haproxy.init ?/etc/init.d/haproxy
chmod u+x /etc/init.d/haproxy

然后是haproxy的配置文件haproxy.cfg

mkdir /etc/haproxy/
vim /etc/haproxy/haproxy.cfg

下面我给出我现在使用的haproxy.cfg简单例子,如果你需要的话,可以拿着照葫芦画瓢即可~很简单。

global
        maxconn 65535 ? ? # 最大连接数,注意它受ulimit限制
        daemon
        nbproc 4 ? ?# cpu有多少个核
        stats socket /var/run/haproxy.socket
        
defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        #option httpclose #默认的http模式是这个,但是我将其改为了能够支持长连接的方式
        option http-pretend-keepalive
        
frontend http-in
        bind *:80
        acl wychat01 hdr(host) eq wychat01.weiyan.me
        acl wybb01 hdr(host) eq wybb01.weiyan.me
        
        use_backend test_wy_chat01 if wychat01
        use_backend test_wy_bb01 if wybb01
        
# test weiyan.me API 8081 Port
        
frontend http-8081-in
        bind *:8081
        acl wyapi01 hdr(host) eq api01.weiyan.me:8081
        
        use_backend test_wy_api01 if wyapi01
        
#########################
#
# chat rules
#
##########################
        
backend test_wy_chat01
        balance roundrobin # Load Balancing algorithm
        stats uri /admin?stats
        option httpchk
        option forwardfor # This sets X-Forwarded-For
        # Define your servers to balance
        server chat01.wy.cn.ngb1.weiyan.me 172.16.68.20:80 maxconn 65535
        
#########################
#
# bb rules
#
##########################
        
backend test_wy_bb01
        balance roundrobin # Load Balancing algorithm
        stats uri /admin?stats
        option httpchk
        option forwardfor # This sets X-Forwarded-For
        # Define your servers to balance
        server bb01.wy.cn.ngb1.weiyan.me 172.16.68.19:80 maxconn 65535
        
#####################
#
# api rules
#
#####################
        
backend test_wy_api01
        balance roundrobin # Load Balancing algorithm
        stats uri /admin?stats
        option httpchk
        option forwardfor # This sets X-Forwarded-For
        # Define your servers to balance
        server api01.wy.cn.ngb1.weiyan.me 172.16.68.74:80 maxconn 2048

实际上配置文件这货,结构十分简单,只要将global和defaults设置好,接下来就是定义规则的问题了。

最后,启动haproxy
/etc/init.d/haproxy start

标签:,

返回正文

(2)条评论

  • 妸泺鹦鹉つ

    |

    很实用,很棒!正在马哥这里学习这块的知识点呢

    回复

    • 哦呦呦呦拳

      |

      @妸泺鹦鹉つ: 感谢你的支持~希望你在马哥那学习愉快~不要忘了调戏马哥哟~

      回复

您的留言是我最大的支持!