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)
- 猜你喜欢 -
你点的每个“在看”,我都认真当成了喜欢👇