haproxy +keepalived 原创

Haproxy+keepalived

原理:

HAProxy介绍及其定位

HAProxy提供高可用性负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。

HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载。

如果说在功能上,能以proxy反向代理方式实现WEB均衡负载,这样的产品有很多。包括 Nginx,ApacheProxy,lighttpd,Cheroke等。

但要明确一点的,Haproxy 并不是 Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是 WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(php,cgi..)文件的传输以及处理。而Haproxy仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务。

keepalived理论工作原理

keepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能。

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web 服务器的状态。 Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

  Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器

  发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。

  Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

  Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。

vip即虚拟ip,是附在主机网卡上的,即对主机网卡进行虚拟,此IP仍然是占用了此网段的某个IP。

拓扑图

1 安装

cd /mnt/ && http://www.haproxy.org/download/1.6/src/haproxy-1.6.5.tar.gz  && tar zxf /mnt/haproxy-1.6.5.gz –C /mnt/

make TARGET=linux2628

make install PREFIX=/usr/local/haproxy
 
mkdir /usr/loca/conf
 
2配置
 
cat >> /usr/local/haproxy/conf/haproxy.cfg<<EOF
global
    maxconn 51200  
    chroot /usr/local/haproxy
    uid 99
    gid 99
    daemon
    #quiet
    nbproc 1
    pidfile /var/run/haproxy.pid
defaults
mode http
#优化选项
    retries 3
    option redispatch
    #option abortonclose
    timeout connect 5000ms
    timeout client 30000ms
    timeout server 30000ms
    #timeout check 2000
    log 127.0.0.1 local0 info
    balance roundrobin
listen admin_stats
    bind 0.0.0.0:8888
    option httplog
    stats refresh 30s
    stats uri /stats  #监控页面的url
    stats realm Haproxy Manager
    stats auth admin:admin #监控页面的用户名和密码
    stats hide-version
frontend http-in
    bind *:8889
    mode http
    option httplog
    log global
    default_backend httpserver
backend httpserver
    balance roundrobi
    #server web1 192.168.0.78:80 cookie 1  weight 1  check inter  2000 rise 2 fall 3
#server web2 192.168.0.28:80 cookie 1  weight 1  check inter  2000 rise 2 fall 3
option httpchk GET /index.html   #后端服务器检测
#使用stick-table管理客户端session,保持session会话
stick-table type ip size 5000k expire 5m store conn_cur
    stick match src table httpserver
    stick on src table httpserver
    server s8001 192.168.0.227:800 maxconn 500 weight 10 cookie s8001 check
    server s8002 192.168.0.229:800 maxconn 500 weight 10 cookie s8002 check
EOF
 
 
3 haproxy日志
 
sed -i ‘13,14 s/^#//‘ /etc/rsyslog.conf
cat >> /etc/rsyslog.conf <<EOF
local3.*         /var/log/haproxy.log
local0.*         /var/log/haproxy.log
EOF
 
service rsyslog restart
 
4 启动haproxy
 
cat >>/etc/init.d/haproxy <<EOF
#!/bin/sh  
# confit: /usr/local/haproxy/conf/haproxy.cfg  
# pidfile: /usr/local/haproxy/logs/haproxy.pid  
  
# source function library.  
. /etc/rc.d/init.d/functions  
  
# source networking configuration.  
. /etc/sysconfig/network  
  
# check that networking is up.  
[ "$NETWORKING" = "no" ] && exit 0  
config="/usr/local/haproxy/conf/haproxy.cfg"  
exec="/usr/local/haproxy/sbin/haproxy"  
prog=$(basename $exec)  
  
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog  
  
lockfile=/var/lock/subsys/haproxy  
  
check(){  
    $exec -c -V -f $config  
start() {  
    $exec -c -q -f $config  
    if [ $? -ne 0 ]; then  
        echo "Errors in configuration file, check with $prog check."  
        return 1  
    fi  
   
    echo -n $"Starting $prog: "  
    # start it up here, usually something like "daemon $exec"  
    daemon $exec -D -f $config -p /var/run/$prog.pid  
    retval=$?  
    echo  
    [ $retval -eq 0 ] && touch $lockfile  
    return $retval  
  
stop() {  
    echo -n $"Stopping $prog: "  
    # stop it here, often "killproc $prog"  
    killproc $prog   
    retval=$?  
    echo  
    [ $retval -eq 0 ] && rm -f $lockfile  
    return $retval  
  
restart() {  
    $exec -c -q -f $config  
    if [ $? -ne 0 ]; then  
        echo "Errors in configuration file, check with $prog check."  
        return 1  
    fi  
    stop  
    start  
  
reload() {  
    $exec -c -q -f $config  
    if [ $? -ne 0 ]; then  
        echo "Errors in configuration file, check with $prog check."  
        return 1  
    fi  
    echo -n $"Reloading $prog: "  
    $exec -D -f $config -p /var/run/$prog.pid -sf $(cat /var/run/$prog.pid)  
    retval=$?  
    echo  
    return $retval  
  
force_reload() {  
    restart  
  
fdr_status() {  
    status $prog  
  
case "$1" in  
    start|stop|restart|reload)  
        $1  
        ;;  
    force-reload)  
        force_reload  
        ;;  
    checkconfig)  
        check  
        ;;  
    status)  
        fdr_status  
        ;;  
    condrestart|try-restart)  
      [ ! -f $lockfile ] || restart  
    ;;  
    *)  
        echo $"Usage: $0 {start|stop|status|checkconfig|restart|try-restart|reload|force-reload}"  
        exit 2  
esac  
EOF
Service haproxy start
Chkconfig haproxy on
 
5.keepalived
 
yum install  openssl openssl-devel -y
cd /mnt &&  wget http://www.keepalived.org/software/keepalived-1.2.20.tar.gz  &&tar zxf keepalived-1.2.20.tar.gz -C /mnt
cd keepalived-1.2.20
./configure --prefix=/usr/local/keepalived --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-573.22.1.el6.x86_64/
make && make install
ll /usr/local/keepalived/
ln -s  /usr/local/keepalived/sbin/keepalived /usr/sbin/
cat >>/etc/keepalived/keepalived.conf <<EOF
! Configuration File for keepalived
 
global_defs {
   notification_email {
       [email protected] #设置邮件
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id HAProxy_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
}
 
vrrp_script check_haproxy {
   script "/mnt/shell/check_haproxy.sh"
   #interval 2
   #weight 2
}
 
vrrp_instance VI_1 {
    state BACKUP #两边state 都为BACKUP
    interface eth0
    virtual_router_id 78 #id 必须唯一,且不可冲突
    priority 100 #优先级不一样,数字越大,优先级越高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.24
    }
    track_script {
        check_haproxy
    }
}
EOF
service keepalived start
chkconfig keepalived on
 
keepalived 检测haproxy脚本,两种方式取其一:
 
#!/bin/bash
A=`ps -C haproxy --no-header|wc -l`
if [ $A -eq 0 ];then
/etc/init.d/haproxy start
sleep 3
if [ `ps -C haproxy --no-header|wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
 
 
#add new other method
A=`curl -I http://192.168.0.24:8888/stats -u admin:admin|grep HTTP|awk ‘{print $2}‘`
if [ $A -ne 200 ];then
/etc/init.d/haproxy start
sleep 3
if [ `curl -I http://192.168.0.24:8888/stats -u admin:admin|grep HTTP|awk ‘{print $2}‘` -ne 200 ];then
/etc/init.d/keepalived sotp
fi
fi
时间: 2024-10-25 03:56:45

haproxy +keepalived 原创的相关文章

HaProxy+Keepalived+Mycat高可用群集配置

概述 本章节主要介绍配置HaProxy+Keepalived高可用群集,Mycat的配置就不在这里做介绍,可以参考我前面写的几篇关于Mycat的文章. 部署图: 配置  HaProxy安装 181和179两台服务器安装haproxy的步骤一致 --创建haproxy用户 useradd haproxy --解压完后进入haproxy目录 cd haproxy-1.4.25/ --编译安装 make TARGET=linux26 PREFIX=/usr/local/haproxy ARCH=x86

haproxy+keepalived实现高可用负载均衡web集群

haproxy+keepalived实现高可用负载均衡web集群 负载均衡集群的概念 负载均衡是设计分布式系统架构必须要考虑的因素之一,它指的是通过调度分发的方式尽可能将"请求"."访问"的压力负载平均分摊到集群中的各个节点,避免有些节点负载太高导致访问延迟,而有些节点负载很小导致资源浪费.这样,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间的动态分配,以实现负载均衡,从而为企业提供更高性能,更加稳定的系统架构解决方案. 高可用集群的概念

基于HAProxy+Keepalived高可用负载均衡web服务的搭建

一 原理简介 1.HAProxyHAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进当前的架构中, 同时可以保护web服务器不被暴露到网络上.2.KeepalivedKeepalived 是一个基于VRRP协议来实现的LVS服务高

HAproxy+Keepalived负载均衡-高可用web站

haproxy+keepalived负载均衡高可用web站   OS IP 子网掩码 路由网关 Centos6.6 HAproxy Keepalived Eth0:192.168.26.210 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6 HAporxy Keepalived Eth0:192.168.26.211 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6(WE

Haproxy+keepalived 高可用负载

Haproxy+keepalived+apache 一.拓扑图: 二.编译安装haproxy(两台机器一样安装) 解压:tar zxvf haproxy-1.6.4.tar.gz 编译:注意:下边的等号前边的参数必须大写 cd haproxy-1.6.4 make TARGET=linux26 ARCH=x86_64 PREFIX=/usr/local/haproxy make install PREFIX=/usr/local/haproxy 安装后,创建配置文件和启动文件 mkdir -p

高性能业务架构解决方案(HAproxy+Keepalived)

高性能业务架构解决方案(HAproxy+Keepalived) 一. 概况 1.1 应用场景 1.2 LVS/Nginx/HAProxy特点 二. 相关理论 2.1 Keepalived工作原理 2.2 HAproxy工作原理 三. 架构拓扑 四. 资源规划 五. 实施部署 5.1初始化配置 5.2 HAproxy配置 5.3 Keepalived部署 5.3.1 Keepalived的安装 5.3.2 配置keepalived 5.3.3 检测脚本 5.4 后端WEB服务器 5.5 测试 5.

haproxy+keepalived搭建WEB群集

haproxy+keepalived搭建WEB群集 前面已经学习了两款web群集软件Nginx和lvs,他们都有各自的特点,本章将介绍另外一款群集软件haproxy,我们将对其的调度算法.群集环境.以及群集的配置展开讲解. haporxy是目前比较流行的调度工具,之前学习的lvs配置相对来说比较复杂,nginx不能实现健康检查性能也没有haproxy好.官方站点位于htp://haproxy.1wt.eu/. 今天我们将介绍使用haproxy搭建一套web群集 一.案例概述 1.案例前知识点 1

HAProxy + Keepalived + Flume 构建高性能高可用分布式日志系统

一.HAProxy简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理. HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 二.Keepalived简介 它是一个基于VRRP协议来实现的WEB服务高可用方案,

Haproxy+keepalived高可用、负载均衡安装部署方案

1     环境说明 前端两台haproxy+keepalived互为主从,提供高可用:另外基于不同域名访问不同的虚拟ip实现负载均衡 1.1     环境描述 服务器A(主.从):eth0:10.241.51.245   eth1:192.168.1.9 服务器B(从.主):eth2:10.241.51.246   eth1:192.168.1.10 服务器C(web01):eth0:10.241.51.247 服务器D(web02):eth0:10.241.51.248 VIP1:10.24