`
音频数据
  • 浏览: 36941 次
文章分类
社区版块
存档分类
最新评论

企业级高可用Web架构之HAProxy+Keepalived

 
阅读更多

细数下来,算是东莞的项目的话,HAProxy+Keepalived我差不多也有三套在线上跑了,另外,这套Web方案也是我的一拍网的备份方案之一,目前也在测试,如果速度和稳定性够强劲的话,我也考虑将LVS+Keepalived换成HAProxy+Keepalived,关于HAProxy的语法和安装步骤请参考我的专题系列文章http://network.51cto.com/art/201101/241997.htm,另外,此篇文章跟刘天斯的不一样,我主要用其作为Web级别的负载均衡(七层应用)。

一、线上跑的HAProxy配置文件,代码如下:

global

        log 127.0.0.1   local0

        maxconn 65535

        chroot /usr/local/haproxy

        uid 99

        gid 99

        daemon

        nbproc 8

        pidfile /usr/local/haproxy/haproxy.pid

        debug

defaults

         log     127.0.0.1       local3

         mode   http

         option httplog

         option httpclose

         option dontlognull

         option forwardfor

         option redispatch

         retries 2

         maxconn 2000

         balance source

         stats   uri     /web-status

         contimeout      5000

         clitimeout      50000

         srvtimeout      50000

listen  www.1paituan.com

        bind *:80

        mode http

        option httplog

        log global

        option httpchk HEAD /index.jsp HTTP/1.0

        server web1  203.93.236.147:80 weight 5  check inter 2000 rise 2 fall 3

        server web2  203.93.236.146:80 weight 3  check inter 2000 rise 2 fall 3

二、HAProxy的启动、关闭和重启脚本,代码如下:

#!/bin/sh

# chkconfig 35 on

# description: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.

# Source function library.

if [ -f /etc/init.d/functions ]; then

  . /etc/init.d/functions

elif [ -f /etc/rc.d/init.d/functions ] ; then

  . /etc/rc.d/init.d/functions

else

  exit 0

fi

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/local/haproxy/conf/haproxy.cfg ] || exit 1

RETVAL=0

start() {

  /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg

  if [ $? -ne 0 ]; then

    echo "Errors found in configuration file."

    return 1

  fi

  echo -n "Starting HAproxy: "

  daemon /usr/local/haproxy/sbin/haproxy -D -f /usr/local/haproxy/conf/haproxy.cfg -p /var/run/haproxy.pid

  RETVAL=$?

  echo

  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/haproxy

  return $RETVAL

}

stop() {

  echo -n "Shutting down HAproxy: "

  killproc haproxy -USR1

  RETVAL=$?

  echo

  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/haproxy

  [ $RETVAL -eq 0 ] && rm -f /var/run/haproxy.pid

  return $RETVAL

}

restart() {

  /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg

  if [ $? -ne 0 ]; then

    echo "Errors found in configuration file, check it with 'haproxy check'."

    return 1

  fi

  stop

  start

}

check() {

  /usr/local/haproxy/sbin/haproxy -c -q -V -f /usr/local/haproxy/conf/haproxy.cfg

}

rhstatus() {

  status haproxy

}

condrestart() {

  [ -e /var/lock/subsys/haproxy ] && restart || :

}

# See how we were called.

case "$1" in

  start)

    start

    ;;

  stop)

    stop

    ;;

  restart)

    restart

    ;;

  reload)

    restart

    ;;

  condrestart)

    condrestart

    ;;

  status)

    rhstatus

    ;;

  check)

    check

    ;;

  *)

    echo $"Usage: haproxy {start|stop|restart|reload|condrestart|status|check}"

    RETVAL=1

esac

exit $RETVAL

三、HAProxy的监控脚本我没有做,这个实施起来也简单,我们可以用curl -s --head http://www.1paituan.com/index.jsp | awk '/HTTP/ {print $2}'的方法,判断是否返回了正常的200代码。

 

四、加上日志支持,代码如下:

#vim /etc/syslog.conf

添加:

local3.*        /var/log/haproxy.log

local0.*        /var/log/haproxy.log

#vim /etc/sysconfig/syslog

修改:

SYSLOGD_OPTIONS="-r -m 0"

service syslog restart

五、大家需要注意的几个地方是:

1)HAProyx采用的是balance source机制,它跟Nginx的ip_hash机制原理类似,是让客户机访问时始终访问后端的某一台真实的web服务器,这样让session就固定下来了;

2)option httpchk HEAD /index.jsp HTTP/1.0 是网页监控,如果HAProxy检测不到Web的根目录下没有index.jsp,就会产生503报错。

3)有网友说HAProxy必须采用listen 203.93.236.141:80这样类似的格式,这样其实不好,做集群时会导致从机启动不了,我们可以用bind *:80的方式代替。

4)HAProxy的并发监控和日志收集分析是下一步考虑的事情。

分享到:
评论

相关推荐

    企业级高可用Web架构之HAPorxy+Keepalived.pdf

    《企业级高可用Web架构:HAProxy与Keepalived深度解析》 在构建企业级高可用Web架构中,HAProxy和Keepalived是两个关键组件,它们共同确保了服务的稳定性和高效率。HAProxy是一款开源的高性能负载均衡器,专门处理...

    keepalived-1.2.24.tar.gz

    在云服务、Web服务器群、数据库集群等领域,Keepalived被广泛应用于构建高可用架构,如搭建HAProxy+Keepalived的负载均衡解决方案,或者MySQL主从复制配合Keepalived实现数据库服务的高可用。 总结,Keepalived是...

    Keepalived权威指南中文.pdf

    Keepalived是一款强大的开源工具,它通过VRRP协议、健康检查机制以及与LVS的集成,为企业级应用提供了高可用性和负载均衡的能力。无论是对于单个服务还是复杂的集群环境,Keepalived都能够提供稳定、可靠的支持。...

    keepalived-2.2.7

    总的来说,Keepalived-2.2.7作为一款强大的高可用性工具,通过其丰富的功能和灵活的配置,为企业级服务提供了坚实的基础,确保了关键业务的持续稳定运行。无论是小型企业还是大型数据中心,都能从中受益,构建出高效...

    haproxy-1.7.5.tar.gz

    haproxy-1.7.5.tar.gz 是一个包含了haproxy 1.7.5版本源代码的压缩包,这个软件是著名的开源负载均衡器和反向...它提供的各种特性,如负载均衡策略、健康检查、SSL支持等,都使得haproxy成为企业级应用的首选工具之一。

    负载均衡haproxy2

    【负载均衡Haproxy2】 Haproxy是一款开源且高性能的代理服务器,它专注于TCP和HTTP...同时,Haproxy支持多种负载均衡算法和会话保持,以及虚拟主机和服务器状态监控等功能,使得它成为企业级网络环境中不可或缺的工具。

    keepalived-the-definitive-guide.pdf.zip_keepalived

    在Linux环境中,Keepalived的核心功能是提供高可用性(High Availability, HA)的网络服务,特别是对于Web服务,如Apache或Nginx等。通过VRRP,Keepalived能够创建虚拟路由器,这些虚拟路由器在网络中表现为单个IP地址...

    基于Linux的重负载Web服务器的架构.pdf

    为了应对高并发请求,可以使用负载均衡器(如HAProxy或Keepalived)来分散请求到多个后端服务器,确保单点故障不会影响整体服务。此外,通过心跳检测和自动故障转移机制,保证了服务的高可用性。 3.3 安全措施 ...

    keepalived附件

    Keepalived通过VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)来实现路由器的高可用性,常被用于构建高可用的Web服务、数据库服务等关键业务系统。 【标签】: Keepalived 在深入探讨Keepalived...

    负载均衡haproxy双机双主3

    部署Haproxy的双机双主架构,可以实现高可用性,确保即使在一台服务器出现故障时,服务仍能正常运行。这通常需要配合心跳监控工具,如Heartbeat或Keepalived,来检测服务器状态并进行切换。 在Heartbeat配置中,两...

    wordpress项目3.0.pptx

    调度架构工程师莫奕华引入了HAProxy和Keepalived,构建高可用集群: 1. HAProxy能实现负载均衡,支持session和cookie功能,提供多种调度算法,并通过url进行健康检查。 2. Keepalived确保高可用性,检测HAproxy状态...

    Linux高端企业群集架构师笔记

    《Linux高端企业群集架构师笔记》是一份深入探讨Linux在企业级应用中的高级技术的文档,涵盖了虚拟化、集群技术、存储技术、高级安全、系统调优以及Nginx优化等多个关键领域。这些主题都是构建高效、稳定且安全的...

    linux web 服务器集群资料 pdf格式

    Linux Web服务器集群是一种高效、可扩展的解决方案,...通过学习这份Linux Web服务器集群资料,读者可以掌握如何设计、部署和管理高效的Web服务集群,应对高并发访问,提升系统可靠性,为企业级网站提供强大的支撑。

    JAVA培训一学习教案.pptx

    7. **CentOS和Tomcat服务器与高可用**:介绍了Linux环境下的Java Web应用部署,特别是CentOS操作系统和Tomcat服务器的使用,以及高可用性解决方案如Haproxy和Keepalived,确保服务的稳定性和高并发下的负载均衡。...

    系统集成运维培训.docx

    对于邮件服务,能配置企业级邮件系统。在数据库方面,了解MySQL的结构,能进行数据操作、权限管理和备份恢复。 以上知识点构成了系统集成运维的核心内容,涵盖了网络基础设施、服务器管理、邮件服务、高可用性架构...

    linux 服务器集群与负载均衡技术

    Linux服务器集群与负载均衡技术是构建高可用性、高性能计算环境的关键技术,广泛应用于大型网站、企业级应用和云计算服务中。本节将深入探讨这一主题,解析其核心概念、架构设计以及实施策略。 首先,我们需要理解...

    linux集群学习资料

    - **硬件负载均衡器**:如F5等专业设备,适用于大规模企业级应用,具有高可靠性和高性能。 - **软件负载均衡器**:如LVS (Linux Virtual Server)、Nginx、HAProxy等开源工具,成本低且灵活度高,适合中小型项目或...

    北大青鸟java课程的学习大纲.docx

    11. **keepalived双活**:实现高可用的负载均衡解决方案。 12. **Haproxy、LVS、Nginx(三选一)**:学习不同的负载均衡技术。 13. **Rpc和Dobbo**:远程调用协议,提高服务间通信效率。 14. **ActiveMQ队列**:消息...

    IT 单词1

    18. **Keepalived**:Keepalived是一个用于网络服务高可用性的工具,常与Nginx、HAProxy等配合使用,实现主备切换。 19. **Session**:在Web开发中,Session用于跟踪用户状态,存储用户在会话期间的信息。 20. **...

Global site tag (gtag.js) - Google Analytics