本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

【负载均衡】Haproxy的安装与配置教程

发布:TangLu2019-2-13 15:32分类: 负载均衡 标签: 负载均衡 haproxy

HAProxy是一款高可用、负载均衡代理,支持TCP(第四层)和HTTP(第七层),四层和七层网络负载均衡的区别:前者效率更高,后者功能更强。因为四层负载均衡调度器是通过分析IP层及TCP/UDP层来实现负载均衡,代表软件有LVS、F5。而工作在第七层的调度器除了支持四层负载均衡以外,还分析应用层的信息。这样一来不但可以根据VIP加端口来判断负载均衡方式之外,还可根据URL、客户端浏览器等更多条件来决定负载均衡的方式,功能更多,代表软件有Nginx、Haproxy。需要注意的是HAproxy的高可用和Keepalived的高可用有区别,它并不实现VIP自动漂移,而是能够对后端服务器进行探测,并自动下线故障节点相对LVS配置也更简单,只需要保障负载均衡和后端服务器网络可用。


一、安装Haproxy
1、首先将两台后端服务器部署好Web服务,Apache、Nginx都可以。为了实验可以将两台服务器分别放上不同页面(在生产中后端服务器数据是需要一致的),然后启动服务。过程如下(后端服务器都需要做以下操作):
yum install httpd -y 
echo web1 > /var/www/html/index.html
systemctl start httpd.service

2、Haproxy可以通过YUM实现快速安装,也可以编译安装,编译过程:
make TARGET=linux2628 PREFIX=/usr/local/haproxy  #TARGET所指定的是系统内核版本,通过uname -r可以查看,然后在README文件可查询每个内核对应所用到的选项 
make install PREFIX=/usr/local/haproxy

3、如果是YUM安装的话配置文件会自动生成在/etc/haproxy/haproxy.cfg。如果是编译安装的就可以通过复制安装包的模板文件做修改,并且为haproxy创建一个系统用户。Haproxy的日志在/var/log/message里。
useradd -r haproxy
cp ./examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy 
cp ./examples/option-http_proxy.cfg /usr/local/haproxy/haproxy.cfg

二、Haproxy配置文件详解
Haproxy配置文件根据功能和用途分为了5个部分,有些部分并不是必须配置的,下面列出一些基本配置选项:
(1)global部分:设置全局参数,通常是和系统相关的配置
(2)default部分:默认参数配置。该配置内容会被frontend、backend、listen集成,也就是说这些选项也可以在其他部分中单独配置
(3)frontend部分:设置接收用户请求的前端节点信息,有点类似配置nginx的upstream,frontend根据ACL规则指定要使用的后端服务器
(4)backend部分:设置后端服务器,也就是real server

(5)listen部分:这是为了兼容老版本而保留的部分,老版本中没有划分frontend和backend,都是配置在listen里


下面是haproxy.cnf常用配置选项说明:
global
  log    127.0.0.1 local0    #全局日志配置,Haproxy通过rsyslog将日志发到指定日志服务器,这里传给了本机
  maxconn    20000    #设置每个haproxy进程的并发连接数
  nbproc    4    #设置Haproxy启动时的进程数,默认为1,不能超过CPU核数
  uid    200    #运行Haproxy的uid和gid
  gid    200
  daemon    #Haproxy后台运行
  pidfile  /usr/local/haproxy/haproxy.pid

defaults
  mode    http  #运行模式,分tcp(四层)或者http(七层)两种模式,默认是tcp模式
  timeout connect    10s  #成功连接到一台服务器的最长等待时间,不写单位的话默认是毫秒
  timeout client    1m  #客户端发送数据最长等待时间
  timeout server    1m  #服务端回应客户端数据发送的最长时间
  timeout check    10s  #设置每次对后端服务器检测超时的时间
  retries    3  #Haproxy连接后端服务器失败的次数,达到该次数后将标记该后端服务器为不可用并踢出集群

frontend  webserver  #定义前端节点的名字
  bind  *:80    #Haproxy服务所监听的IP与端口
  option  httplog    #Haproxy默认不记录http日志,通过这个配值启用详细日志
  option  dontlognull    #日志中不记录上级负载均衡器发送的用于检测的心跳数据包
  option  forwardfor    except 127.0.0.0/8    #让后端服务器能获得客户端真实IP
  log  global  #使用全局日志的配置
  default_backend  webserver    #Haproxy默认引用的后端服务器组

backend webserver    #定义后端服务器组,可以定义多组
  mode  http  
  balance  roundrobin    #定义负载均衡调度算法,还有static-rr、source、uri等多种算法
  option  redispatch    #在节点请求失败发生切换时保持cookie
  option  httpchk GET /index.html    #检查后端节点页面状态码是否为200,如果异常就不再将请求送给该服务器,除了GET外还可以使用HEAD
  server  server1 192.168.1.100:80 weight 5 check inter 2000 rise 2 fall 3
  server  server2 192.168.1.110:80 weight 5 check inter 2000 rise 2 fall 3
  #weight代表权重,默认为1,最大为256,0不参与负载
  #check代表开启健康检查
  #inter代表健康检查的时间间隔
  #rise代表健康检查通过了多少次认为该服务器可用,fall则相反

listen  admin_stats  #Haproxy状态监控页面配置
  bind 0.0.0.0:9188
  mode http
  log 127.0.0.1 local 0 err
  stats refresh 30s  #监控页面自动刷新时间
  stats uri /status  #监控页面的地址
  stats auth admin:admin123  #登录监控页面的账号密码
  stats hide-version  #隐藏版本号
  stats admin if TRUE  #可在监控页面上手动启动或关闭后端服务器


三、Haproxy简单配置示例,通过该Haproxy实现后端两台节点轮询:
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8  #记录客户端真实IP
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s  #haproxy连接后端服务器超时时间
    timeout client          10m  #客户端和haproxy的非活动超时时间
    timeout server          10m  #haproxy和后端服务器的非活动超时时间
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  test
    bind  *:80
    default_backend             test

backend test
    balance     roundrobin
    server  app1 192.168.145.180:80 weight 1 check inter 2000 fall 3 rise 3
    server  app2 192.168.145.190:80 weight 1 check inter 2000 fall 3 rise 3 
listen mysqlserver  #名称随意写
    bind 0.0.0.0:3306
    balance roundrobin
    server server1 192.168.145.180:3306 weight 1
    server server2 192.168.145.190:3306 weight 1

listen  admin_stats  #配置状态监控页面
  bind 0.0.0.0:8000
  mode http
  stats refresh 30s
  stats uri /status
  stats auth admin:admin123
  stats hide-version
  stats admin if TRUE

启动Haproxy服务后通过浏览器去访问Haproxy配置的服务器IP地址和端口(比如Haproxy服务器的公网IP或者VIP),如果能正常请求到后端服务器的服务则代表配置成功

/usr/local/haproxy/sbin/haproxy -f /etc/haproxy.conf



四、Haproxy日志配置
vim /etc/rsyslog.conf  #Haproxy默认是把日志输出到/var/log/message中,不太方便查阅,所以配置文件中有配置rsyslog
$ModLoad imudp
$UDPServerRun 514
local2.*           /var/log/haproxy.log


#重启服务后查看514端口是否运行,并且是否生成了日志文件
systemctl restart rsyslog.service  


五、Haproxy状态监控

Haproxy自身有提供一个状态监控页面,通过该页面可以看到后端节点的状态,如果宕掉的话会变为红色,不同颜色的含义在页面上也有说明。如图:

haproxy.png

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【负载均衡】Haproxy的安装与配置教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-379.html  [生成短网址]

已有 0/1189 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~