`
joy_cz
  • 浏览: 136464 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Haproxy、Keepalived双主高可用负载均衡

 
阅读更多
我的网站:源码分享
在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepalived双主模式做了测试,双主的模式充分利用了服务器资源,这样不会导致服务器浪费。 这里举例说明:
默认情况下,第一台负载均衡器主要分发www.zhirs.com的请求,第二台负载均衡器主要分发img.zhirs.com的请求。
任意一台宕机都不会影响网站分发。

实验环境

VIP1=192.168.137.200 (www.zhirs.com)
VIP2=192.168.137.100 (img.zhirs.com)
haproxy01=192.168.137.254
haproxy02=192.168.137.253
web1=192.168.137.201
web2=192.168.137.202
img1=192.168.158.101
img2=192.168.158.102

架构图


安装配置过程

1、安装配置过程,(两台Haproxy的安装配置步骤一样)

haproxy下载地址:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
1
2
3
4
5
6
7
#cd /usr/local/src
#wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
#tar xf haproxy-1.4.24.tar.gz
#cd haproxy-1.4.24
#make TARGET=linux26 ARCH=x86_64
#TARGET是指定内核版本,ARCH指定CPU架构,我使用的是64bit系统
#make install
2、安装完毕后,创建配置文件和启动文件。
1
2
3
4
5
6
#mkdir /etc/haproxy
#cp examples/haproxy.cfg /etc/haproxy
#cp examples/haproxy.init /etc/init.d/haproxy
#chmod +x /etc/init.d/haproxy
#ln -s /usr/local/sbin/haproxy /usr/sbin/
#mkdir /usr/share/haproxy
3、编辑配置文件(两台Haproxy配置文件相同)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#vim /etc/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
    log 127.0.0.1   local0  #日志输出配置,所有日志都记录在本机,通过local0输出
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 4096                #最大连接数
    chroot /usr/share/haproxy   #改变当前工作目录。
    uid 99                  #所属用户的uid
    gid 99                  #所属运行的gid
    daemon                  #以后台形式运行haproxy
    #debug
    #quiet

defaults
    log global
    mode    http
  #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
    option  httplog
    option  dontlognull
    option   redispatch
  #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    option  abortonclose
  #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    retries 3               #两次连接失败就认为是服务器不可用
    maxconn 2000            #默认的最大连接数
  #timeout http-keep-alive 10s
  # timeout queue 1m
    contimeout  5000        #连接超时
    clitimeout  50000       #客户端超时
    srvtimeout  50000       #服务器超时
    timeout check 5s            #心跳检测超时
    stats refresh 30s           #统计页面自动刷新时间
    stats uri  /stats           #统计页面url
    stats realm baison-test-Haproxy         #统计页面密码框上提示文本
    stats auth admin:admin123           #统计页面用户名和密码设置
    stats hide-version                  #隐藏统计页面上HAProxy的版本信息
frontend www
    bind *:80
    #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。
    acl web hdr(host) -i www.zhirs.com
    #acl后面是规则名称,-i是要访问的域名,如果访问www.zhirs.com这个域名就分发到下面的webserver 的作用域。
    acl img hdr(host) -i img.zhirs.com
    #如果访问img.baison.com.cn就分发到imgserver这个作用域。
    use_backend webserver if web
    use_backend imgserver if img

backend webserver             #webserver作用域
    mode http
    balance   roundrobin     
    #banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数
    option  httpchk /index.html
    #检测文件,如果分发到后台index.html访问不到就不再分发给它
    server     web01 192.168.137.201:80  check inter 2000 fall 3 weight 30
   server     web01 192.168.137.202:80  check inter 2000 fall 3 weight 20
   server     web01 192.168.137.203:80  check inter 2000 fall 3 weight 10

backend imgserver
    mode http
    option  httpchk /index.php
    balance     roundrobin                         
    server      img01 192.168.137.101:80  check inter 2000 fall 3
    server      img02 192.168.137.102:80  check inter 2000 fall 3
4、启动Haproxy服务,查看状态。
1
#service haproxy start



5、安装配置keepalived(两台keepalived安装步骤一样)
1
2
3
4
5
6
7
8
9
10
11
#cd /root/software
#wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz
#tar -zxvf pcre-8.33.tar.gz
#cd pcre-8.33
#./configure
#make && make install
#wget http://nginx.org/download/nginx-1.2.9.tar.gz
#tar -zxvf nginx-1.2.9.tar.gz
#cd nginx-1.2.9
#./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module
#make && make install
6、第一台keepalived配置文件。第一台做192.168.137.200vip的master,192.168.137.100的backup。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     admin@centos.bz
   }
   notification_email_from keepalived@domain.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                #script "/opt/nginx_pid.sh"
                script "/opt/check_haproxy.sh"
                interval 2
                weight 2
}
vrrp_instance VI_1 {
    state MASTER        ############ 辅机为 BACKUP
    interface eth0
    virtual_router_id 51
    mcast_src_ip 192.168.137.254
    priority 100                  ########### 权值要比 back 高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
        chk_http_port ### 执行监控的服务
        }
    virtual_ipaddress {
       192.168.137.200
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 99
    advert_int 1
    authentication {
         auth_type PASS
         auth_pass 1111
    }
    virtual_ipaddress {
        192.168.137.100 
         }
}
7、第二台keepalived的配置文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#vim /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     admin@centos.bz
   }
   notification_email_from keepalived@domain.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_http_port {
                #script "/opt/nginx_pid.sh"
                script "/opt/check_haproxy.sh"
                interval 2
                weight 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    mcast_src_ip 192.168.137.253
    priority 99             ##########权值 要比master低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
        chk_http_port
        }
    virtual_ipaddress {
       192.168.137.200
    }
}
vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
         auth_type PASS
         auth_pass 1111
    }
    virtual_ipaddress {
        192.168.137.100
         }
}
8、检测脚本,为了防止haproxy服务关闭导致keepalived不自动切换。
1
2
3
4
5
6
7
8
9
#vim /opt/check_haproxy.sh
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
     /etc/init.d/haproxy  start
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
       /etc/init.d/keepalived stop
fi
9、启动两台keepalived和Haproxy服务。
1
2
#servcie haproxy start
#service keepalived start
10、查看两台服务器的VIP 查看
查看192.168.137.254:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:dc:01:3e brd ff:ff:ff:ff:ff:ff
inet 192.168.137.254/24 brd 192.168.137.255 scope global eth0
inet 192.168.137.200/32 scope global eth0
查看192.168.137.253:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:d5:e7:3d brd ff:ff:ff:ff:ff:ff
inet 192.168.137.253/24 brd 192.168.137.255 scope global eth0
inet 192.168.137.100/32 scope global eth0
inet6 fe80::20c:29ff:fed5:e73d/64 scope link
valid_lft forever preferred_lft forever
11、测试,关闭任意一台keepalived,img和www域名访问正常。 后续会对Nginx+Keepalived 双主结果做测试。
分享到:
评论

相关推荐

    Web负载均衡解决方案-HAproxy+keepalived实现高可用负载均衡.docx

    本文将对 Web 负载均衡解决方案进行详细介绍,该解决方案基于 HAproxy 和 keepalived 实现高可用负载均衡。HAProxy 是一种提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,可以支持虚拟主机,免费、快速...

    Keepalived+HAProxy配置高可用负载均衡,解决keepalived无法安装问题

    ### Keepalived与HAProxy构建高可用负载均衡系统 #### 一、背景介绍 在现代互联网应用中,为了确保服务的稳定性和可用性,通常采用负载均衡技术来分散请求到多台服务器上处理。其中,Keepalived 和 HAProxy 是构建...

    用Keepalived与HAProxy实现高可用负载均衡的配置方法.docx

    Keepalived与HAProxy结合使用,能构建出一套强大的高可用负载均衡解决方案。 1. Keepalived详解 Keepalived是一个开源项目,主要负责管理和监控Linux虚拟服务器集群。它工作在OSI模型的第四层,即传输层。...

    HaProxy + Keepalived实现高可用

    HaProxy + Keepalived实现高可用负载均衡

    haproxy+keepalived实现高可用负载均衡(实例配置)

    【haproxy+keepalived 实现高可用负载均衡】是一种常见的在服务器集群中实现高可用性和负载分发的技术组合。Haproxy 是一款开源的高性能、高可用的代理服务器,它可以作为七层负载均衡器,处理 HTTP、TCP 等多种协议...

    Rabbitmq+HAproxy+Keepalived实现高可用加负载均衡-附件资源

    Rabbitmq+HAproxy+Keepalived实现高可用加负载均衡-附件资源

    搭建MySQL高可用+负载均衡集群(haproxy+keepalived).docx

    【MySQL高可用+负载均衡集群】的搭建方案通常涉及到多个组件,如haproxy和keepalived,旨在提升系统的稳定性和处理能力。MySQL在面对大量用户和数据增长时,单个实例可能会达到性能瓶颈,此时就需要引入高可用和负载...

    haproxy高可用负载均衡方案

    haproxy可以与keepalived一起使用,实现高可用负载均衡。 haproxy安装和配置 haproxy的安装和配置相对简单,首先需要解压haproxy的安装包,然后编译和安装。编译完成后,需要将haproxy配置文件copy到/etc/haproxy...

    MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat)

    此外,这种基于HAProxy、Keepalived和MyCat的高可用负载均衡集群方案还具备良好的可扩展性和灵活性,能够满足不同场景下的业务需求。对于正在寻求提高数据库层性能和可靠性的项目团队来说,这无疑是一个值得考虑的...

    MyCat高可用负载均衡集群实现(HAProxy+Keepalived+MyCat).pdf

    本文将详细介绍如何利用HAProxy、Keepalived以及MyCat这三个开源工具构建一个强大的高可用负载均衡集群。 #### 二、关键技术组件介绍 1. **HAProxy**:一个免费、快速且可靠的解决方案,用于提供高可用性、负载...

    MySQL高可用负载均衡集群部署

    实现高可用负载均衡的方法有很多,例如 LVS+keepalived 组合实现、haproxy+keepalived 组合实现等。在这里,我们将使用 haproxy+keepalived 组合实现 MySQL 高可用负载均衡。 MySQL 高可用负载均衡集群部署的环境 ...

    Keepalived+HAProxy实现MySQL高可用负载均衡的配置

    在本文中,我们将探讨如何利用Keepalived和HAProxy这两个工具来实现MySQL数据库的高可用负载均衡,特别是在使用了MySQL Cluster的情况下。 **Keepalived的作用** Keepalived的主要目标是提供故障隔离和负载均衡器...

    keepalived附件

    在实际应用中,Keepalived常与其他技术结合,如Nginx、HAProxy等,形成高可用负载均衡架构,提高系统的稳定性和可扩展性。同时,Keepalived还支持健康检查、虚拟服务器群组、会话保持等功能,为企业级服务提供了强大...

Global site tag (gtag.js) - Google Analytics