• <tr id='evbv6'><strong id='evbv6'></strong><small id='evbv6'></small><button id='evbv6'></button><li id='evbv6'><noscript id='evbv6'><big id='evbv6'></big><dt id='evbv6'></dt></noscript></li></tr><ol id='evbv6'><table id='evbv6'><blockquote id='evbv6'><tbody id='evbv6'></tbody></blockquote></table></ol><u id='evbv6'></u><kbd id='evbv6'><kbd id='evbv6'></kbd></kbd>
  • <span id='evbv6'></span>
    <ins id='evbv6'></ins>

  • <acronym id='evbv6'><em id='evbv6'></em><td id='evbv6'><div id='evbv6'></div></td></acronym><address id='evbv6'><big id='evbv6'><big id='evbv6'></big><legend id='evbv6'></legend></big></address>

        <fieldset id='evbv6'></fieldset>

        1. <i id='evbv6'><div id='evbv6'><ins id='evbv6'></ins></div></i>

          <dl id='evbv6'></dl>

          <code id='evbv6'><strong id='evbv6'></strong></code>
          <i id='evbv6'></i>

            全面讲解在Linux系统中安装和配置HAProxy的过程

            • 时间:
            • 浏览:32
            • 来源:124软件资讯网

                一、Haproxy观点

                Haproxy提供高可用性、负载平衡以及基于TCP和HTTP应用的署理  ,支持虚拟主机 ,它是免费、快速而且可靠的一种解决方案 。Haproxy特殊适用于那些负载特大的web站点 ,这些站点通常又需要会保持或七层处置惩罚 。Haproxy运行在当前的硬件上  ,完全可以支持数以万计的并发毗连 。而且它的运行模式使得它可以很简朴宁静的整合进您当前的架构中  ,同时可以掩护你的web服务器不被袒露到网络上 。

                二、安装Haproxy

                代码如下:

                [root@node3 app]# tar zxvf haproxy-1.4.24.tar.gz

                [root@node3 app]# mv haproxy-1.4.24 haproxy

                [root@node3 app]# cd haproxy

                [root@node3 hadoop]# uname -a

                Linux node3 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux

                [root@node3 haproxy]# make TARGET=linux24 prefix=/usr/local/haproxy

                gcc -Iinclude -Iebtree -Wall -O2 -g -fno-strict-aliasing -DTPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DNETFILTER -DUSE_GETSOCKNAME -DCONFIG_HAPROXY_VERSION=\"1.4.24\" -DCONFIG_HAPROXY_DATE=\"2013/06/17\" \

                -DBUILD_TARGET='"linux24"' \

                -DBUILD_ARCH='""' \

                -DBUILD_CPU='"generic"' \

                -DBUILD_CC='"gcc"' \

                -DBUILD_CFLAGS='"-O2 -g -fno-strict-aliasing"' \

                -DBUILD_OPTIONS='""' \

                -c -o src/haproxy.o src/haproxy.c

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

                install -d /usr/local/haproxy/sbin

                install haproxy /usr/local/haproxy/sbin

                install -d /usr/local/haproxy/share/man/man1

                install -m 644 doc/haproxy.1 /usr/local/haproxy/share/man/man1

                install -d /usr/local/haproxy/doc/haproxy

                for x in configuration architecture haproxy-en haproxy-fr; do \

                install -m 644 doc/$x.txt /usr/local/haproxy/doc/haproxy ; \

                done

                三、设置Haproxy

                Haproxy设置中分成五部门内容  ,固然这些组件不是必选的  ,可以凭据需要选择作为设置 。

                •global:参数是历程级的  ,通常和操作系统(OS)相关  。这些参数一样平常只设置一次  ,若是设置无误  ,就不需要再次设置举行修改;

                •default:设置默认参数的  ,这些参数可以被使用设置到frontend ,backend  ,listen组件;

                •frontend:吸收请求的前端虚拟节点  ,Frontend可以凭据规则直接指定详细使用后端的backend(可动态选择);

                •backend:后端服务集群的设置  ,是真实的服务器 ,一个Backend对应一个或者多个实体服务器;

                •listen:Frontend和Backend的组合体  。

                编写haproxy.cfg文件:

                代码如下:

                global

                maxconn 51200

                chroot /usr/local/haproxy

                uid 99

                gid 99

                daemon

                #quiet

                nbproc 1 #历程数

                pidfile /usr/local/haproxy/logs/haproxy.pid

                defaults

                mode http #默认的模式mode { tcp|http|health } ,tcp是4层  ,http是7层  ,health只会返回OK

                #retries 2 #两次毗连失败就以为是服务器不行用 ,也可以通事后面设置

                option redispatch #当serverId对应的服务器挂掉后  ,强制订向到其他康健的服务器

                option abortonclose #当服务器负载很高的时间  ,自动竣事掉当前行列处置惩罚比力久的链接

                timeout connect 5000ms #毗连超时

                timeout client 30000ms #客户端超时

                timeout server 30000ms #服务器超时

                #timeout check 2000 #=心跳检测超时

                log 127.0.0.1 local0 err #[err warning info debug]

                balance roundrobin #负载平衡算法

                # option httplog #日志种别,接纳httplog

                # option httpclose #每次请求完毕后自动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现

                # option dontlognull

                # option forwardfor #若是后端服务器需要获得客户端真实ip需要设置的参数  ,可以从Http Header中获得客户端ip

                listen admin_stats

                bind 0.0.0.0:8888 #监听端口

                option httplog #接纳http日志花样

                stats refresh 30s #统计页面自动刷新时间

                stats uri /stats #统计页面url

                stats realm Haproxy Manager #统计页面密码框上提醒文本

                stats auth admin:admin #统计页面用户名和密码设置

                #stats hide-version #隐藏统计页面上HAProxy的版本信息

                listen test1

                bind :12345

                mode tcp

                server t1 192.168.1.101:8881

                server t2 192.168.1.102:8881

                listen test2 :80

                option httpclose

                option forwardfor

                server s1 192.168.1.101:8080 check weight 1 minconn 1 maxconn 3 check inter 40000

                server s2 192.168.1.102:8080 check weight 1 minconn 1 maxconn 3 check inter 40000

                四、启动Haproxy

                复制代码

                代码如下:

                [root@node3 haproxy]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

                [root@node3 app]# ps -ef |grep haproxy |grep -v grep

                root 6950 1 0 19:35 ? 00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

                五、通过剧本来启动与关闭haproxy

                1、编写haproxy剧本

                代码如下:

                [root@node3 ~]# cat /etc/rc.d/init.d/haproxy

                #!/bin/bash

                BASE_DIR="/usr/local/haproxy"

                ARGV="$@"

                start()

                {

                echo "START HAPoxy SERVERS"

                $BASE_DIR/sbin/haproxy -f $BASE_DIR/haproxy.cfg

                }

                stop()

                {

                echo "STOP HAPoxy Listen"

                kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid)

                echo "STOP HAPoxy process"

                kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid)

                }

                case $ARGV in

                start)

                start

                ERROR=$?

                ;;

                stop)

                stop

                ERROR=$?

                ;;

                restart)

                stop

                start

                ERROR=$?

                ;;

                *)

                echo "hactl.sh [start|restart|stop]"

                esac

                exit $ERROR

                2、让剧本随系统自动启动

                代码如下:

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

                [root@node3 ~]# chkconfig --add haproxy

                service haproxy does not support chkconfig

                ----解决上面的问题的措施是在/etc/rc.d/init.d/haproxy中添加下面两句到#!/bin/bash之后

                [root@node3 ~]# cat /etc/rc.d/init.d/haproxy

                #!/bin/bash

                #chkconfig: 2345 10 90

                #description:haproxy

                BASE_DIR="/usr/local/haproxy"

                ARGV="$@"

                start()

                ----其中2345是默认启动级别 ,级别有0-6共7个级别 。

                ----品级0表现:表现关机

                ----品级1表现:单用户模式

                ----品级2表现:无网络毗连的多用户下令行模式

                ----品级3表现:有网络毗连的多用户下令行模式

                ----品级4表现:不行用

                ----品级5表现:带图形界面的多用户模式

                ----品级6表现:重新启动

                ----10是启动优先级  ,90是停机优先级  ,优先级规模是0-100 ,数字越大  ,优先级越低  。

                3、启动与制止haproxy

                代码如下:

                [root@node3 ~]# service haproxy stop

                STOP HAPoxy Listen

                STOP HAPoxy process

                [root@node3 ~]# ps -ef |grep haproxy |grep -v grep

              < p>[root@node3 ~]# service haproxy start

                START HAPoxy SERVERS

                [root@node3 ~]# ps -ef |grep haproxy |grep -v grep

                root 11259 1 0 15:33 ? 00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

                六、haproxy日志设置

                haproxy在默认情形不会记载日志 ,除了在haproxy.conf中的global段指定日志的输出外  ,还需要设置系统日志的设置文件  。下面以centos6.4为例  ,haproxy使用系统自带的rpm报1.4版本

                1、vim /etc/haproxy/haproxy.conf

                代码如下:

                global

                log 127.0.0.1 local3 #local3是装备  ,对应于 /etc/rsyslog.conf中的设置  ,默认接纳info的日志级别

                maxconn 1024

                user haproxy

                group haproxy

                daemon

                pidfile /var/run/haproxy.pid

                defaults

                mode http

                log global

                option httplog

                option dontlognull

                option http-server-close

                option forwardfor except 127.0.0.0/8

                retries 2

                option redispatch

                maxconn 1024

                2、编辑系统日志设置

                代码如下:

                vim /etc/rsyslog.conf

                默认有下面的设置 ,会读取 /etc/rsyslog.d/*.conf目录下的设置文件

                代码如下:

                $IncludeConfig /etc/rsyslog.d/*.conf

                为haproxy建立一个自力的设置文件

                代码如下:

                vim /etc/rsyslog.d/haproxy.conf

                $ModLoad imudp

                $UDPServerRun 514

                local3.* /var/log/haproxy.log

                #若是不加下面的的设置则除了在/var/log/haproxy.log中写入日志外  ,也会写入message文件

                &~

                3、设置rsyslog的主设置文件 ,开启远程日志

                代码如下:

                vim /etc/sysconfig/rsyslog

                SYSLOGD_OPTIONS=”-c 2 -r -m 0″

                #-c 2 使用兼容模式  ,默认是 -c 5

                #-r 开启远程日志

                #-m 0 标志时间戳 。单元是分钟  ,为0时 ,表现禁用该功效

                设置完成后重启haproxy和rsyslog服务

                代码如下:

                /etc/init.d/rsyslog restart

                /etc/init.d/haproxy restart

                4、在红帽5上设置系统日志与红帽6差别  ,红帽5的/etc/rsyslog.conf 不包罗/etc/rsyslog.d/*.conf  ,设置如下

                代码如下:

                #加入haproxy.none表现不把haproxy日志写入message

                $ModLoad imudp

                $UDPServerRun 514

                *.info;mail.none;authpriv.none;cron.none;local3.none /var/log/messages

                local3.* /var/log/haproxy.log