zoukankan      html  css  js  c++  java
  • CentOS6.5 下Haproxy服务的安装与配置

    参考网站:

    http://wenku.baidu.com/link?url=57AsCAL8TIv8NC3Vdnpd0hQ4fGNls8RFikjRWna3OaZb6qGHYTdV-4_wQPuzv89a5bq3G8pA9i96X4Mrdbvzl5qr_AeGl0tbHJAVASvKxKu

    http://ilanni.blog.51cto.com/526870/1687054/

    http://johnsz.blog.51cto.com/525379/715922/

    https://www.douban.com/note/275230796/

    http://www.linuxidc.com/Linux/2012-04/59089.htm

    三台虚拟机,Ip地址分别为192.168.178.2(装载Haproxy服务以及httpd服务),

    192.168.178.3(安装httpd服务),192.168.178.4(安装httpd服务)

    1         Haproxy介绍

    1.1         Haproxy原理

    haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

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

    haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。

    事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

    1.2         Haproxy的优点

    (1)免费开源,稳定性也是非常好。单haproxy也跑得不错,稳定性可以与硬件级的F5相媲美。

    (2)根据官方文档,haproxy可以跑满10Gbps,这个数值作为软件级负载均衡器是相当惊人的。

    (3)haproxy支持连接拒绝:因为维护一个连接的打开开销是很低的,有时我们需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。

    (4)haproxy支持全透明代理(已具备硬件防火墙的典型特点):可以用客户端IP地址或者任何其他地址来连接后端服务器。这个特性仅在Linux 2.4/2.6内核打了tcp proxy补丁后才可以使用。这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

    (5)haproxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡。

    (6)自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警。

    (7)HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。

    2         Haproxy安装与配置

    2.1         Haproxy安装

    获取haproxy-1.4.24.tar.gz源码安装包。

    [root@localhost ~]# tar xzvf haproxy-1.4.24.tar.gz

    [root@localhost ~]# cd haproxy-1.4.24

    [root@localhost ~]# make TARGET=linux26 PREFIX=/usr/local/haproxy //26是linux系统内核

    [root@localhost ~]# make install PREFIX=/usr/local/haproxy

    2.2         Haproxy配置

    安装完毕后,进入安装目录配置文件,默认情况下usr/local/haproxy是没有安装目录的,需要将安装目录/usr/local/src/haproxy-1.4.24/examples/下的haproxy.cfg拷贝到usr/local/haproxy目录下,或者在usr/local/haproxy目录下新建haproxy.cfg进行配置。命令如下:

    [root@localhost ~]# cp /usr/src/local/haproxy-1.4.24/examples/haproxy.cfg

    /usr/local/haproxy/haproxy.cfg

    [root@localhost ~]# vim /usr/local/haproxy/haproxy.cfg

    Haproxy的配置文件的含义可参考网站:

    http://wenku.baidu.com/link?url=57AsCAL8TIv8NC3Vdnpd0hQ4fGNls8RFikjRWna3OaZb6qGHYTdV-4_wQPuzv89a5bq3G8pA9i96X4Mrdbvzl5qr_AeGl0tbHJAVASvKxKu

    具体配置可根据自己的需要来进行配置,本文进行的是简单的配置,所以我的配置文件内容如下:

    global

          maxconn 256

          daemon

    defaults

          mode http

          timeout connect 5000

          timeout client  5000

          timeout server  5000

    frontend http-in

          bind *:80

          default_backend servers

    backend servers

          server server1 192.168.1.3 maxconn 32

          server server2 192.168.1.4 maxconn 32

    2.3         日志支持

    根据上面的global和default里的log配置如下:

    命令如下:

    [root@localhost ~]# vim /etc/rsyslog.conf

    在最下边增加 

    local3.*       /var/log/haproxy.log

    local0.*       /var/log/haproxy.log

    [root@localhost ~]#vim /etc/sysconfig/rsyslog

    修改:SYSLOGD_OPTIONS="-r –m 0"

    启日志服务service rsyslog restart

    2.4         设置开机启动

    创建开机启动脚本,

    [root@localhost ~]# vim /etc/rc.d/init.d/haproxy

    内容如下:

    #!/bin/bash

    #

    # haproxy

    #

    # chkconfig: 35 85 15

    # description: HAProxy is a free, very fast and reliable solution

    # offering high availability, load balancing, and

    # proxying for TCP and HTTP-based applications

    # processname: haproxy

    # config: /etc/haproxy.cfg

    # pidfile: /var/run/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/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

    保存后赐予可执行权限 

    [root@localhost ~]# chmod +x /etc/rc.d/init.d/haproxy 

    就可以使用 service haproxy start|stop|restart 来控制服务的启动停止跟重启。

    并通过以下命令加载到开机服务启动列表 

    [root@localhost ~]# chkconfig –add haproxy

    2.5         启动服务

    启动服务:

    [root@localhost ~]#/usr/local/haproxy/sbin/haproxy –f /usr/local/haproxy/haproxy.cfg

    重启服务:

    [root@localhost ~]#/usr/local/haproxy/sbin/haproxy –f /usr/local/haproxy/haproxy.cfg –st

    `cat /usr/local/haproxy/logs/haproxy.pid`

    停止服务:

    [root@localhost ~]# killall haproxy

    3         测试

    虚拟机192.168.178.2命令如下:

    [root@localhost ~]# srevice iptables stop

    [root@localhost ~]# setenforce 0

    [root@localhost ~]# service haproxy start

    [root@localhost ~]# service httpd stop

     

    虚拟机192.168.178.3命令如下

    [root@ xldmysql ~]# srevice iptables stop

    [root@ xldmysqlt ~]# setenforce 0

    [root@ xldmysqlt ~]# service httpd start

    虚拟机192.168.178.4命令如下

    [root@xldwhj ~]# srevice iptables stop

    [root@ xldwhj ~]# setenforce 0

    [root@ xldwhj ~]# service httpd start

    打开浏览器,输入192.168.178.2,点击确定出现如下界面:

     

    这是我在192.168.178.3的机器上所写的网页,为了体现与192.168.178.4的不同,出现上述网页后点击F5刷新,出现下述界面;

     

    可以看出每次刷新访问,在192.168.178.3与192.168.178.4之间交替访问,配置成功。

  • 相关阅读:
    [置顶] duilib优化
    cocos2dx 0.9.2 ccmenu bug
    wince 本地播放器界面
    关于变更设计
    MS SQL系统存储过程览要
    [翻译]IE8下VML的变化
    VS 2010 快捷操作
    .Net Web程序设计——通用的设计元素
    如何高效的清理系统盘空间?
    如何进行SQL性能优化?-借助Profile
  • 原文地址:https://www.cnblogs.com/whutxldwhj/p/5970645.html
Copyright © 2011-2022 走看看