1.  环境规划:

主机名主机地址角色
node1192.168.188.11复杂均衡调度器
node2192.168.188.12后端服务器1
node3192.168.188.13后端服务器2
node4192.168.188.14测试服务器

2.  Haproxy主配置文件:

[root@node1 ~]# vim /etc/haproxy/haproxy.cfg

global  ##全局配置
  log         127.0.0.1 local2
  chroot      /usr/local/haproxy
  pidfile     /var/run/haproxy.pid
  maxconn     4000
  user        haproxy
  group       haproxy
  daemon
  stats socket /usr/local/haproxy/stats

defaults  ##默认配置
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

listen stats  ##配置haproxy状态页
  mode http  ##访问的协议
  stats hide-version  ##隐藏状态页的haproxy版本
  bind 0.0.0.0:9999  ##状态页的地址和端口
  stats enable  ##表示开启状态页
  log global  ##表示使用全局的日志配置
  stats uri /haproxy-status  ##访问状态页的uri,不写默认是访问" /haproxy?stats "
  stats auth haadmin:123456  ##访问状态页的用户的密码
  stats refresh 30s  ##设置状态页的刷新时间
  stats admin if TRUE  ##启动状态页的管理功能

 3.  Haproxy开启日志功能:

##第一步:
[root@node1 ~]# vim /etc/haproxy/haproxy.cfg

#在global配置项定义:默认是local2
log 127.0.0.1 local{1-7} info  ##基于syslog记录日志到指定设备,级别有
(err,warning,info,debug)

##第二步:
[root@node1 ~]# vim /etc/rsyslog.conf 

$ModLoad imudp
$UDPServerRun 514

# Save haproxy messages also to haproxy.log
local2.*                                                /var/log/haproxy.log

##重启rsyslog.service和haproxy.service
[root@node1 ~]# systemctl restart rsyslog.service
[root@node1 ~]# systemctl restart haproxy.service 

##查看haproxy日志是否开启
[root@node1 ~]# ll /var/log/haproxy.log 
-rw------- 1 root root 115658 Oct 21 21:32 /var/log/haproxy.log

 4.  Haproxy配置文件的配置负载均衡:这里使用子配置文件配置。

        1>.  方式一:通过前后端的方式配置:

[root@node1 ~]# cd /etc/haproxy/conf.d/

[root@node1 conf.d]# vim bftest.cfg

frontend openlab-test-http  ##前端配置的名称
  bind :80,:8080  ##指定HAProxy的监听地址加端口
  mode http  ##访问的协议
  use_backend openlab-test-http-backend  ##定义绑定的后端服务器池
 
backend openlab-test-http-backend  ##定义后端服务器池,名字与前端中配置必须一致
  balance     roundrobin  ##指定负载均衡调度算法
  server web1 192.168.188.12:80 check  ##后端服务器1的地址
  server web2 192.168.188.13:80 check  ##后端服务器2的地址

##server配置的语法:
server 服务器名 服务器地址:访问端口 [weight 权重] check
    check:对指定real进行健康状态检查,如果不加此设置,默认不开启检查

        2>.  方式二:通过frontend+backend方式,即前后端结合的方式配置:

[root@node1 conf.d]# vim listentest.cfg

listen web_port_80
  bind 192.168.188.11:80  ##绑定的访问集群的地址和端口
  mode http  ##访问的协议
  option forwardfor  
  log global  ##表示日志配置使用全局的配置
  balance roundrobin  ##配置负载均衡的算法
  server web1 192.168.188.12:80 weight 2 check  ##后端服务器1
  server web2 192.168.188.13:80 weight 1 check  ##后端服务器2

"option forwardfor"参数的作用:在由 haproxy 发往后端主机的请求报文中添加"X-Forw
arded-For"首部,其值为前端客户端的地址,用于向后端主发送真实的客户端IP。

配置"option forwardfor"参数后,若后端服务器是Nginx则该配置会直接生效;但是若后端服务器
是Apache,则需要对httpd配置文件进行如下配置:

[root@node2 ~]# vim /etc/httpd/conf/httpd.conf
 
<IfModule log_config_module>
.......
    #LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 
combined
    ##将上行修改为:
    LogFormat "%h %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" 
\"%{User-Agent}i\"" combined
.......
</IfModule>

补充:roundrobin:基于权重的轮询动态调度算法,支持权重的运行时调整,不同于lvs中的rr轮训模式,HAProxy中的roundrobin支持慢启动(新加的服务器会逐渐增加转发数),其每个后端backend中最多支持4095个real server,支持对real server权重动态调整,roundrobin为默认调度算法

5. 重启haproxy并配置后端页面:

[root@node1 conf.d]# systemctl restart haproxy.service

##配置访问页面
[root@node2 ~]# echo "`hostname -I`" > /var/www/html/index.html
[root@node3 ~]# echo "`hostname -I`" > /var/www/html/index.html

6.  访问haproxy负载调度器:

[root@node4 ~]# for ((i=1;i<=10;i++))
> do
> curl 192.168.188.11
> done
192.168.188.12 
192.168.188.12 
192.168.188.13 
192.168.188.12 
192.168.188.12 
192.168.188.13 
192.168.188.12 
192.168.188.12 
192.168.188.13 
192.168.188.12

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐