搭建HAProxy+Keepalived 高可用负载均衡

HAProxy

HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件(PS:nginx最新版也可以基于第四层和第七层的负载均衡)。
HAProxy和Keepalived 都采用源码方式安装,如果没有gcc编译器,需要先安装gcc编译工具。

下载解压安装

下载haproxy:http://www.haproxy.org/download/1.4/src/

tar zxvf haproxy-1.4.24.tar.gz
cd haproxy-1.4.24
make install
mkdir -p /usr/local/haproxy/etc
mkdir -p /usr/local/haproxy/sbin
cp examples/haproxy.cfg /usr/local/haproxy/etc
ln -s /usr/local/sbin/haproxy /usr/local/haproxy/sbin/haproxy

修改配置文件

`vim /usr/local/haproxy/etc/haproxy.cfg`
global 
    maxconn 51200 #最大连接数
    chroot /usr/local/haproxy #改变当前工作目录
    uid 99
    gid 99
    daemon #后台方式运行
    #quiet
    nbproc 1  #并发进程数
    pidfile /usr/local/haproxy/logs/haproxy.pid     #定义haproxy的pid


defaults  #默认部分的定义
        mode http #mode {http|tcp|health} 。
                  #http是七层模式,tcp是四层模式,health是健康检测返回OK
        #retries 2
        option redispatch
        option abortonclose
        timeout connect 5000ms   #连接超时
        timeout client 30000ms   #客户端超时
        timeout server 30000ms   #服务器超时
        #timeout check 2000      #心跳检测超时
        log 127.0.0.1 local0 err #[err warning info debug]
            #使用本机syslog服务的local3设备记录错误信息
        balance roundrobin

    # option httplog
    # option httpclose
    # option dontlognull
    # option forwardfor

 
listen admin_stats
        #定义一个名为status的部分,可以在listen指令指定的区域中定义匹配规则和后端服务器ip,
        bind 0.0.0.0:8888   # 定义监听的套接字
        option httplog
        stats refresh 30s   #统计页面的刷新间隔为30s
        stats uri /stats     #登陆统计页面是的uri
        stats realm Haproxy Manager
        stats auth admin:admin #登陆统计页面是的用户名和密码
        #stats hide-version  # 隐藏统计页面上的haproxy版本信息

listen tcp_test
        bind :12345
        mode tcp
        server t1 127.0.0.1:9000
        server t2 192.168.15.13:9000
        
listen zzs_dzfp_proxy:90
        mode http
        balance roundrobin   #轮询
        cookie LBN insert indirect nocache   
        option httpclose   
        server web01 192.168.15.12:9000 check inter 2000 fall 3 weight 20  
        server web02 192.168.15.13:9000 check inter 2000 fall 3 weight 20

启停haproxy

启动Haproxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg

停止Haproxy:

killall haproxy 

访问统计页面:

http://10.10.3.163:1080/stats

Keepalived

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

下载解压编译安装

下载地址:http://www.keepalived.org/download.html
或者 :

wget http://www.keepalived.org/software/keepalived-1.2.8.tar.gz

安装:

tar zxvf keepalived-1.2.8.tar.gz
cd keepalived-1.2.8
./configure --prefix=/usr/local/keepalived
make
make install

安装成功后做成服务模式。

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir -p /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
chmod +x /etc/init.d/keepalived
vi /etc/keepalived/keepalived.conf

修改文件配置keepalived.conf

global_defs {
    router_id LVS_DEVEL
}
#监测haproxy进程状态,健康检查,每2秒执行一次 
vrrp_script chk_haproxy {
    script "/etc/keepalived/chk_haproxy.sh" #监控脚本
    interval 2   #每两秒进行一次
    weight -10    #如果script中的指令执行失败,vrrp_instance的优先级会减少10个点
}
vrrp_instance VI_1 {
    state MASTER          #主服务器MASTER,从服务器为BACKUP
    interface eth0        #服务器固有IP(非VIP)的网卡
    virtual_router_id 51  #取值在0-255之间,用来区分多个instance的VRRP组播,同一网段中virtual_router_id的值不能重复,否则会出错。
    priority 100          #用来选举master的,要成为master,那么这个选项的值最好高于其他机器50个点。此时,从服务器要低于100;
    advert_int 1          #健康查检时间间隔
    mcast_src_ip 192.168.15.12    #MASTER服务器IP,从服务器写从服务器的IP
    authentication { #认证区域
        auth_type PASS  #推荐使用PASS(密码只识别前8位)
        auth_pass 12345678
    }
    track_script {
        chk_haproxy    #监测haproxy进程状态
    }
    virtual_ipaddress {
        192.168.15.235   #虚拟IP,作IP漂移使用
    }
}

监控脚本配置

`vi /etc/keepalived/chk_haproxy.sh`
tatus=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
if [ "${status}" = "0" ]; then
    /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg

    status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)

    if [ "${status2}" = "0"  ]; then
            /etc/init.d/keepalived stop
    fi
fi

这个配置文件意思:检查haproxy是否挂掉,如果挂掉启动haproxy;若启动之后还是没有检测到启动状态,则关闭keepalived,让IP飘移到备机上。

启动停止keepalived命令

service keepalived start #启动
service keepalived stop #关闭服务

欢迎访问我的博客:http://atecher.com/,有更多精彩文章!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容