<code id='cs3he'><strong id='cs3he'></strong></code>
      <dl id='cs3he'></dl>

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

      2. <acronym id='cs3he'><em id='cs3he'></em><td id='cs3he'><div id='cs3he'></div></td></acronym><address id='cs3he'><big id='cs3he'><big id='cs3he'></big><legend id='cs3he'></legend></big></address>
          <i id='cs3he'></i>
          <fieldset id='cs3he'></fieldset>
        1. <tr id='cs3he'><strong id='cs3he'></strong><small id='cs3he'></small><button id='cs3he'></button><li id='cs3he'><noscript id='cs3he'><big id='cs3he'></big><dt id='cs3he'></dt></noscript></li></tr><ol id='cs3he'><table id='cs3he'><blockquote id='cs3he'><tbody id='cs3he'></tbody></blockquote></table></ol><u id='cs3he'></u><kbd id='cs3he'><kbd id='cs3he'></kbd></kbd>
        2. <span id='cs3he'></span>

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

          • 时间:
          • 浏览:101
          • 来源: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