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

一、HAPROXY介绍

提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的负载均衡软件

它是免费、快速并且可靠的一种解决方案

特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理

二、衡量负责均衡器性能的因素

Session rate 会话率

– 每秒钟产生的会话数

Session concurrency 并发会话数

– 服务器处理会话的时间越长,并发会话数越多

Data rate 数据速率

– 以MB/s或Mbps衡量

– 大的对象导致并发会话数增加

– 高会话数、高数据速率要求更多的内存

三、HAProxy工作模式

mode http

– 客户端请求被深度分析后再发往服务器

mode tcp

– 在客户端与服务器这间建立全双工会话,不检查第七层信息

mode health

– 仅做健康状态检查,已经不建议使用

四、HTTP事务模型

HTTP协议是事务驱动的

每个请求(Request)仅能对应一个响应(Response)

常见模型:

– HTTP close

– Keep-alive

– Pipelining

1、HTTP close

客户端向服务器建立一个TCP连接

客户端发送请求给服务器

服务器响应客户端请求后即断开连接

如果客户端到服务器的请求不只一个,那么就要不断的去建立连接

TCP三次握手过程消耗相对较大的系统资源,同时延迟较大

2、Keep-alive

一次连接可以传输多个请求

客户端需要知道传输内容的长度,以避免无限期的等待传输结束

降低两个HTTP事务间的延迟

需要相对较少的服务器资源

3、Pipelining

仍然使用Keep-alive

在发送后续请求前,不用等前面的请求已经得到回应

适用于有大量图片的页面

降低了多次请求之间的网络延迟

五、实验部分

1.实验环境

系统:Centos6.5       软件版本 haproxy-1.4.24.tar.gz

VIP1=192.168.2.100

VIP2=192.168.2.101

haproxy01=192.168.2.10

haproxy02=192.168.2.11

web1=192.168.2.200

web2=192.168.2.201

img1=192.168.2.202

img2=192.168.2.203

2.实验拓扑

3.网站服务器的设置

web1和web2

# yum -y install httpd

# cd /var/www/html/

#  echo WEB1 > index.html

# echo WEB2 > index.html

ing1和img2

# echo img1 > index.html

# echo img2 > index.html

# service httpd restart

4.安装配置

(1)、安装HAProxy

1>、两台HAProxy的安装配置步骤一样

haproxy下载地址:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz

# cd haproxy-1.4.24

[[email protected] haproxy-1.4.24]# vim README

[[email protected] haproxy-1.4.24] # uname -r

2.6.32-431.el6.x86_64                                                           # 根据以上要求找到对应自己系统的内核版本,此处选择linux26

[[email protected] haproxy-1.4.24]# make TARGET=linux26 PREFIX=/usr/local/haproxy install

#将HAProxy安装到/usr/local/haproxy下

[[email protected] haproxy-1.4.24]# ls

doc sbin       #安装完成后会在安装目录下生成doc ,sbin ,share三个文件夹

此时,HAProxy安装完成

2>、创建配置文件和启动文件

[[email protected] haproxy-1.4.24]# mkdir /etc/haproxy

[[email protected] haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy

[[email protected] haproxy-1.4.24]# cp examples/haproxy.init /etc/init.d/haproxy

[[email protected] haproxy-1.4.24]# chmod +x /etc/init.d/haproxy

[[email protected] haproxy-1.4.24]# ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/    
[[email protected] haproxy-1.4.24]# mkdir /usr/share/haproxy

3>、编辑配置文件(两台Haproxy配置文件相同)

# 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                  #默认的最大连接数             
    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.hyzc.com       #acl后面是规则名称,-i是要访问的域名,如果访问www.hyzccom这个域名就分发到下面的webserver 的作用域。      
    acl img hdr(host) -i img.hyzc.com           #如果访问img.hyzc.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   web1 192.168.2.200:80  check inter 2000 fall 3 weight 10      
    server   web2 192.168.2.201:80  check inter 2000 fall 3 weight 20

backend imgserver

mode http      
    option  httpchk /index.php      
    balance     roundrobin      
    server      img1 192.168.2.202:80  check inter 2000 fall 3      
    server      img2 192.168.2.203:80  check inter 2000 fall 3

在192.168.2.11上面执行,复制当前配置文件

[[email protected] conf]# scp /etc/haproxy/haproxy.cfg [email protected]:/etc/haproxy/

4>、启动Haproxy服务,查看状态。

# service haproxy start

状态检查没有问题,程序正常

(2)、安装keepalived

1>、安装配置keepalived(两台keepalived安装步骤一样)

参考博客

http://9265463.blog.51cto.com/9255463/1831850     keepalived 安装

2>、第一台keepalived配置文件。第一台:192.168.2.100vip的master,192.168.2.101vip的backup。

# vim /etc/keepalived/keepalived.conf    
global_defs {      
   notification_email {      
     [email protected]      
   }      
   notification_email_from [email protected]      
   smtp_server 127.0.0.1      
   smtp_connect_timeout 30      
   router_id LVS_DEVEL      
}      
vrrp_script chk_http_port {      
         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.2.10

priority 100                  ########### 权值要比 back 高      
    advert_int 1      
    authentication {      
        auth_type PASS      
        auth_pass 1111      
    }      
track_script {      
        chk_http_port ### 执行监控的服务      
        }      
    virtual_ipaddress {      
       192.168.2.100      
    }      
}      
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.2.101  
         }      
}

3>、第二台keepalived的配置文件。

#vim /etc/keepalived/keepalived.conf    
global_defs {      
   notification_email {      
     [email protected]      
   }      
   notification_email_from [email protected]      
   smtp_server 127.0.0.1      
   smtp_connect_timeout 30      
   router_id LVS_DEVEL      
}      
vrrp_script chk_http_port {      
                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.2.11      
    priority 99             ##########权值 要比master低      
    advert_int 1      
    authentication {      
        auth_type PASS      
        auth_pass 1111      
    }      
track_script {      
        chk_http_port      
        }      
    virtual_ipaddress {      
       192.168.2.100      
    }      
}      
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.2.101

}      
}

4>、检测脚本,为了防止haproxy服务关闭导致keepalived不自动切换(两台keepalived都需部署)。

# 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

# chmod -R +x /opt/check_haproxy.sh

5>、启动两台keepalived和Haproxy服务。

# service haproxy start

# service keepalived start

6>、测试

1>、查看两台服务器的VIP 查看

查看192.168.2.10:

查看192.168.2.11:

2>、测试,关闭任意一台keepalived,img和www域名访问正常。

由于测试环境,则每台机器分别添加主机解析(生产环境申请域名即可)

# vim /etc/hosts

192.168.2.200  web1.hyzc.com  web1    
192.168.2.201  web2.hyzc.com  web2    
192.168.2.202  img1.hyzc.com  img1    
192.168.2.203  img2.hyzc.com  img2    
192.168.2.100  www.hyzc.com   www    
192.168.2.101  img.hyzc.com   img

测试关闭2.10机器,在2.11测试结果

结论:

高可用实现

3>、测试2.10

www和img的页面轮询,结论负载实现

遇到的问题:

1.

解决办法:

找到对应的行,是注释行的原因

时间: 2024-10-14 20:31:20

Haproxy、Keepalived双主高可用负载均衡的相关文章

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

http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepalived双主模式做了测试,双主的模式充分利用了服务器资源,这样不会导致服务器浪费. 这里举例说明: 默认情况下,第一台负载均衡器主要分发www.zhirs.com的请求,第二台负载均衡器主要分发img.zhirs.com的请求. 任意一台宕机都不会影响网站分发. 实验环境 VIP1=192.168.13

nginx+keepalived双主高可用负载均衡

实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB1:LB-110-05 主LB2:LB-111-06 一.安装准备及依赖(用SecureCRT的交互窗口同时对两台LB操作,只贴出LB1的操作过程在此) [[email protected] ~]# mkdir tools [[email protected] ~]# mkdir /applicat

Keepalived+Haproxy双主高可用负载均衡web和mysql综合实验

日期及版本:2014.5.4v1.0 架构图 实验目的: 1.Haproxy+Keepalived双主双机高可用模型,keepalived为Haproxy主从提供高可用保证haproxy-master若挂掉haproxy-backup能无缝接管,haproxy为后端Web提供负载均衡,缓解并发压力,实现WEB站点负载均衡+高可用性: 2. Haproxy反代web做动静分离: 3. Haproxy反代mysql 算法leastconn和roundrobin的不同效果: 系统环境: OS:cent

LVS基础及LVS+Keepalived实现双主高可用负载均衡

LVS基础及LVS+Keepalived实现双主高可用负载均衡 LB集群: (Load  Balancing)即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能,其    实现方式分为硬件方式和软件方式. 硬件实现方式: 常用的有 F5公司的BIG-IP系列.A10公司的AX系列.Citrix公司的 NetScaler系列等 软件实现方式: LVS工作于传输层.nginx工作于应用层.haproxy工作于传输层和应用层 本文主要讲解LVS. 一.什么是LVS ? 1. LVS:(Li

Keepalived+Nginx实现双主高可用负载均衡

Keepalived+Nginx实现双主高可用负载均衡 一.部署Nginx+keepalived高可用有两种配置方案: 1.Nginx+keepalived 主从配置 前端使用两台机器,使用一个VIP,即其中一台为主负责全部请求,一台为备,只用在主出现故障时,才会替代主处理请求,平常处于闲置状态,此方案不够理想.  2.Nginx+keepalived 双主配置 前端使用2台机器,使用两个VIP,互为主备,不考虑其他情况时均衡处理请求,当其中一台机器出现故障时,另一台负责处理对两台机器的请求,此

Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

配置环境说明:   KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G  系统盘20G cpu 4核 Haproxykeepalived 2台 192.168.1.10192.168.1.20 Haserver01Haserver02 192.168.30192.168.40 内存6G  系统盘20G cpu 4核 Weblogic 4台 192.168.1.100192.168.1.150 192.168.1.200 192.168.1.250 Clusters01C

Hapoxy+keepalived实现双主高可用负载均衡

在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepalived双主模式做了测试,双主的模式充分利用了服务器资源,这样不会导致服务器浪费. 这里举例说明: 默认情况下,第一台负载均衡器主要分发 www.breaklinux的请求,第二台负载均衡器主要分发img.breaklinux.com 的请求. 任意一台宕机都不会影响网站分发. 实验环境 VIP1=192.168.137.200 (www.zhirs.com) VIP2=192.168.137.100 (img

Keepalived+Nginx实现高可用负载均衡集群

一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2.13-7.el7.x86_64nginx-1.10.2-1.el7.x86_64httpd-2.4.6-45.el7.centos.x86_64 二 原理及拓扑图 1.vrrp协议在现实的网络环境中,两台需要通信的主机大多数情况下并没有直接的物理连接.对于这样的情况,它们之间路由怎样选择?主机如何

Keepalived+LVS(dr)高可用负载均衡集群的实现

一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2.13-7.el7.x86_64ipvsadm-1.27-7.el7.x86_64httpd-2.4.6-45.el7.centos.x86_64mariadb-5.5.52-1.el7.x86_64php-5.4.16-42.el7.x86_64 二 原理及拓扑图 1.vrrp协议vrrp(Vir