vlambda博客
学习文章列表

haproxy负载均衡配置


haproxy是可靠、高性能的TCP/HTTP负载均衡器,被用于为多个后端分发流量负载,提升服务的伸缩性。负载均衡器后面配置了多个服务,在某个服务发生故障时,负载均衡器可以很快地选择另一个可用的服务,所以整体的服务可用性得到了提升。


一、haproxy v2.1.0版本的安装(ubuntu系统下)

1、在线安装:

 

 1 apt-get install haproxy



2、源码安装:

  

 1 wget https://github.com/haproxy/haproxy/archive/v2.1.0.tar.gz

  2 tar -C /etc/haproxy -xzf v2.1.0.tar.gz

  3 cd /etc/haproxy

  4 make TARGET=linux-glibc

  5 cp haproxy /usr/sbin/haproxy



(如果没有发现安装包请更新源  apt-get  update 后再安装)

其配置文件默认为

  

 1 /etc/haproxy/haproxy.cfg



二、日志配置不需要日志可跳过该步骤

在此配置开始前,先配置系统日志输出,不然没法看haproxy的日志

  

 1 vim /etc/rsyslog.conf



在文件最底部加入以下代码

  

 1 local0.*    /var/log/haproxy.log


说明:开启haproxy记录日志到syslog。local0有一个指定的守护进程监听请求,并将收到的haproxy日志记录到一个日志文件中。 

注意:启用info级的日志级别意味着HAProxy将记录每一个传入的请求。对于长时间运行的服务器来说,这意味着日志文件早晚会占满硬盘。有一个数据整理策略很重要——每晚使用logrotate等工具截断压缩前一天的日志,删除两周前的日志等。


寻找文件中此部分代码,去掉 module 与 input 前的#

  1 # provides UDP syslog reception

  2 module(load="imudp")

  3 input(type="imudp" port="514")

  4 # provides TCP syslog reception

  5 module(load="imtcp")

  6 input(type="imtcp" port="514")


重启rsyslog

 

 1 /etc/init.d/rsyslog restart



三、haproxy配置SSL穿透(HTTPS透传

使用SSL穿透,我们将让后台服务器处理SSL连接,而非负载均衡器来处理。

在这个配置中,我们需要在前端和后台配置中同时使用TCP模式而不是HTTP模式。HAProxy只会把连接当作信息流来转发到其他服务器,而不会使用在HTTP请求上才能使用的功能。

  

 1 vim /etc/haproxy/haproxy.cfg



以下是一个正常的haproxy代理tcp的配置文件

  1 global

  2     log 127.0.0.1 local0

  3     maxconn 4096

  4     #chroot /usr/share/haproxy

  5     port-将容器导出为tar归档文件。daemon

  6 defaults

  7     log global #日志定义

  8     mode http  #默认负载均衡模式为http

  9     option httplog #启用日志记录HTTP请求

 10     option dontlognull #设置日志记录中不记录空连接

 11     retries 3 #定义连接后端服务器的失败重连次数

 12     option redispatch #服务器故障时,分发到健康的服务器上,恢复正常时,会话又被定向到已恢复的服务器上

 13     maxconn 2000

 14     timeout connect 5000

 15     timeout client 50000

 16     timeout server 50000

 17 listen http-api

 18     mode tcp 

 19     option tcplog

 20     bind *:443

 21     balance roundrobin #基于权重进行的轮叫算法

 22     maxconn 65535

 22     server api01 192.168.2.101:443 maxconn 65535

 22     server api02 192.168.2.102:443 maxconn 65535


这里依然同时绑定80和443端口,以保证正常的HTTP连接和SSL连接都能工作。这里转发一个安全连接事台服务器而不作任何解码,我们需要使用TCP模式(mode tcp)。这也意味着我们需要设置tcp日志而不是默认的http日志(option tcplog)。


四、自动运行的脚本

  1 #!/bin/bash

  2 WORK="/etc/haproxy"

  3 CONFIG_NAME="haproxy.cfg"

  4    

  5 whiletrue;do

  6      count=`ps -elf | grep -e 'haproxy -f' | grep -v grep | cut -d' ' -f9`

  7    

  8     if [ -z $count ] ; then

  9         haproxy -f ${WORK}/${CONFIG_NAME}

 10     fi

 11     sleep 5

 12 done


五、haproxy相关命令

手动启动haproxy命令

  

1 sudo haproxy -f /etc/haproxy/haproxy.cfg



手动关闭haproxy命令

  

1 sudo killall haproxy



重载haproxy配置

  

1 sudo haproxy -f /etc/haproxy/haproxy.cfg -sf



重载haproxy配置(不中断服务)

  

1 sudo haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

 


- 猜你喜欢 -




你点的每个“在看”,我都认真当成了喜欢👇