0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HAproxy部署配置方案

马哥Linux运维 来源:博客园Sunzz 2024-10-27 17:16 次阅读

HAproxy部署配置

说明:

haproxy服务器IP:172.16.253.200/16 (外网)、192.168.29.140/24(内网)
博客服务器组IP:192.168.29.130/24、192.168.29.131/24
网站服务器组IP:192.168.29.120/24、192.168.29.121/24
默认服务器组IP:192.168.29.110/24、192.168.29.111/24

一 HAProxy主机配置

[root@local ~]# yum install haproxy -y
[root@local ~]# vim   /etc/haproxy/haproxy.cfg

1 global部分

用来设定全局配置参数,属于进程级的配置,通常和操作系统配置有关。

global
    log         127.0.0.1 local2 info##全局日志配置,local2为日志设备,info为日志级别
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid##指定HAProxy进程的Pid文件,启动进程的用户必须有访问次文件的权限
    maxconn     4000##设定每个进程可接受的最大并发连接数
    user        haproxy##设置运行haproxy进程的用户,可使用UID代替
    group       haproxy##设置运行haproxy进程的组,可使用GID代替
    daemon##设置haproxy进程进入后台运行
   
stats socket /var/lib/haproxy/stats

2 default部分

默认参数的配置部分。在次部分配置的参数值,默认会自动引用到下面frontend、backend、listen部分中,因此,如果某些参数属于公共的配置,只需在default部分添加一次即可。而如果在frontend、backend、和listen部分也配置了与default部分一样的参数,那么default部分的参数对应的值自动被覆盖。

defaults
    mode                    http##设置haproxy实例默认运行模式,有tcp、http、health三个值
    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         5s
    timeout client          10s##设置连接客户端发送数据时的最长等待时间,默认单位为毫秒
    timeout server          10s##设置服务器端回应客户端数据发送的最长等待时间,默认单位为毫秒
    timeout http-keep-alive 10s##持久连接的持久时长
    timeout check           2s##设置对后端服务器的监测超时时间,默认单位为毫秒
maxconn                 3000

3 listen部分

此部分是frontend和backend部分的结合体

listenadmin_stats
bind0.0.0.0:19088##设置监控统计页面的监听的IP和端口
modehttp
log127.0.0.1 local2 err
statsrefresh30s##设置哈haproxy监控统计页面的自动刷新时间
statsuri/haproxy-status##设置haproxy监控统计页面的URL路径,可随意指定,例如“stats uri  /haproxy-status”,就可以通过http://IP:PORT//haproxy-status查看
statsrealmwelcomelogin Haproxy ##设置登录haproxy统计页面是密码框上的提示信息
statsauthadmin:admin##设置登录统计页面的用户名和密码,可同时设置多个,每行一个
statshide-version##用来隐藏统计页面上haproxy的版本信息
statsadminifTRUE##通过设置此选项,可以在监控页面上手工启动或者禁用后端服务器

4 frontend部分

此部分用于设置接收用户请求的前端虚拟节点。frontend可以根据ACL规则直接指定要使用的后端backend。
(1)frontend部分

frontend  www
bind*:80##此选项只能在frontend和listen部分使用,用于定义一个或多个监听的套接字。格式为:bind  [
] interface modehttp##实例的运行模式 optionhttplog##启用日志记录http请求。默认haproxy日志不记录http请求 optionforwardfor##在由haproxy发往后端主机的请求报文中添加“X-Forwarded-For”首部,其值前端客户端的地址;用于向后端主发送真实的客户端IP optionhttpclose##次选项表示在客户端和服务器端完成一次连接请求后,haproxy自动关闭此TCP连接 logglobal##表示使用全局的日志级别,引用global部分定义的log配置

(2)通过haproxy的ACL规则实现智能负载均衡
haproxy通过ACL完成两个主要的功能:

1)通过设置ACL的规则检查客户端请求是否合法。如果符合ACL规则要求,那么将放行,如果不符合规则,则直接中断请求。
2)符合ACL规则要求的请求将被提交到后端的backend服务器集群,进而实现基于ACL规则的负载均衡
3)haproxy的ACL规则通常用在frontend部分中

格式为:acl 自定义的acl名称 acl方法 -i [ 匹配的路径或文件]

acl:为关键字,表示定义ACL规则的开始,后面跟上自定义的ACL名称。
acl方法:这个字段定义ACL的方法,haproxy定义了很多ACL方法,常用的有hdr_reg(host)、hdr_dom(host)、hdr_beg(host)、url_sub、url_dir、path_beg、path_end等
-i:表示不区分大小写,后面跟上要匹配的路径、文件或正则表达式。
说明:与ACL规则一起使用的haproxy参数还有use_backend,use_backend  后面跟实例名,表示在满足ACL规则后去哪里请求哪个backend实例
acl host_wwwhdr_reg(host) -i  ^(www.tb.com|tb.com) ##正则表达式匹配,表示如果开都有www.tb.com或tb.com 
acl host_bloghdr_beg(host) -i blog.##表示如果前缀包含blog.字符,则匹配
use_backend server_www if host_www##表示如果满足host_www 则去请求后端的server_www主机
use_backend server_blog if host_blog
default_backend server_default##表示如果前面都不匹配,则去请求server_default主机

5 backend部分

此部分用于设置后端服务器集群的配置,也是用来添加一组真实服务器,以处理客户端的请求。

backend server_default定义后端主机,格式为:backend  SERVER_NAME
modehttp##实例的运行模式
optionredispatch##次参数用于cookie保持的环境中
optionabortonclose##自动结束当前队列中处理时间较长的进程
balance  roundrobin##定义负载均衡算法,roundrobin为加权轮询算法
    cookieSERVERID##表示允许向cookie中插入SERVERID
option httpchk GET /check_status.html##启用http的服务监测功能,采用GET方式,通过监测check_status,html页面的状态来确定服务器的状态
server default1 192.168.29.110:80 cookie default1 weight 2 check inter 2000 rise 2 fall 3
server default2 192.168.29.111:80 cookie default2 weight 2 check inter 2000 rise 2 fall 3
定义后端主机,格式为:server    
[:port] [param*]
param为一系列参数,
cookie为当前server指定其cookie值,用于实现基于cookie的会话黏性
weight 设置后端服务器的权重,
check表示启用后端服务器执行健康状态监测,
rise设置从故障状态转换到正常状态需要成功检查的次数,
fall设置后端服务器从从正常状态转换为不可以状态需要检查的次数
disabled:标记为不可用;
redir :将发往此server的所有GET和HEAD类的请求重定向至指定的URL
backend server_www
modehttp
optionredispatch
optionabortonclose
balancesource##定义负载均衡算法,source为基于源IP 的算法,可以使同一客户端IP的请求始终被转发至某台特定的后端服务器
    cookieSERVERID
option httpchk GET /check_status.jsp
server www1 192.168.29.120:80 cookie www1 weight 6 check inter 2000 rise 2 fall 3
server www2 192.168.29.121:80 cookie www2 weight 6 check inter 2000 rise 2 fall 3
backend server_blog
modehttp
optionredispatch
optionabortonclose
balanceroundrobin
    cookieSERVERID
option httpchk GET /check_blog.php
server blog1 192.168.29.130:80 cookie blog1 weight 5 check inter 2000 rise 2 fall 3
server blog2 192.168.29.131:80 cookie blog2 weight 5 check inter 2000 rise 2 fall 3

二 后端服务器配置

1 默认服务器配置

(1)虚拟主机配置

[root@local ~]# vim /etc/httpd/conf.d/vhost.conf

        DocumentRoot "/data/web1"

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted


(2)状态监测页配置

[root@local ~]# echo "This is check_status.page ip:192.168.29.110" > /data/web1/check_status.html

(3)默认页面配置

[root@local ~]# echo "This is default page ip:192.168.29.110" > /data/web1/index.html

按照以上方式配置192.168.29.111主机

2 网站服务器配置

(1)虚拟主机配置

[root@local ~]# vim /etc/httpd/conf.d/vhost.conf 

        DocumentRoot "/data/web1"
        ServerName www.tb.com

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted


(2)状态监测页配置

[root@local ~]# echo "This is check_status page ip:192.168.29.120" > /data/web1/check_status.jsp

(3)默认页面配置

[root@local ~]# echo "This is www page ip:192.168.29.120" > /data/web1/index.html

按照以上方式配置192.168.29.121主机

3 博客服务器组

(1)配置虚拟主机

[root@local ~]# vim /etc/httpd/conf.d/vhost.conf 

        DocumentRoot "/data/web1"
        ServerName www.blog.tb.com

    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted


(2)状态监测页配置

[root@local ~]# echo "This is check_status page ip:192.168.29.130" > /data/web1/check_blog.php

(3)默认页面配置

[root@local ~]# echo "This is blog page ip:192.168.29.130" > /data/web1/index.html

按照以上方式配置192.168.29.131主机

三 测试

1 启动haproxy

[root@local ~]# systemctl start haproxy

2 测试

(1)访问网站服务器

[root@local ~]# for i in {1..10} ; do curl www.tb.com ; done
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120
This is www page ip:192.168.29.120

由于有会话粘性,所有都是用一台服务器响应请求
(2)访问blog服务器

[root@local ~]# for i in {1..10} ; do curl blog.tb.com ; done
This is blog page ip:192.168.29.131
This is blog page ip:192.168.29.130
This is blog page ip:192.168.29.131
This is blog page ip:192.168.29.130
This is blog page ip:192.168.29.131
This is blog page ip:192.168.29.130
This is blog page ip:192.168.29.131
This is blog page ip:192.168.29.130
This is blog page ip:192.168.29.131
This is blog page ip:192.168.29.130

可以看到,轮询算法生效了
(3)测试默认服务器

[root@local ~]# for i in {1..10} ; do curl 172.16.253.200 ; done
This is default page ip:192.168.29.110
This is default page ip:192.168.29.111
This is default page ip:192.168.29.110
This is default page ip:192.168.29.111
This is default page ip:192.168.29.110
This is default page ip:192.168.29.111
This is default page ip:192.168.29.110
This is default page ip:192.168.29.111
This is default page ip:192.168.29.110
This is default page ip:192.168.29.111

成功了

3 haproxy状态监测页面

(1)输入http://172.16.253.200:19088/haproxy-status登录状态监测页
(2)输入用户名密码
fd54183a-9408-11ef-a511-92fbcf53809c.png

(3)登录成功

fd60d23c-9408-11ef-a511-92fbcf53809c.png

链接:https://www.cnblogs.com/Sunzz/p/7300777.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP
    IP
    +关注

    关注

    5

    文章

    1646

    浏览量

    149324
  • 服务器
    +关注

    关注

    12

    文章

    9016

    浏览量

    85175
  • 主机
    +关注

    关注

    0

    文章

    985

    浏览量

    35058

原文标题:HAproxy部署配置

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    树莓派安装Haproxy实现***负载均衡

    基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上
    发表于 05-14 15:53

    阿里云企业IPv6部署方案

    具备IPv6访问能力,提供用户快速部署IPv6的解决方案。主要涉及SLB,IPv6转换服务,云解析DNS,和CDN四款产品,相关产品已经于2018年6月上线发布。第二期将对主要云产品进行IPv4
    发表于 07-09 16:18

    安森美半导体开发方案助力客户快速开发及部署物联网设备

    员带来重要的价值。全新感测功能与超低能耗联接和致动器产品的选项相辅相成,可实现领先业界的电池寿命的全新方案类别。更广的云支持、升级的操作系统(OS)和可配置的移动应用程序都表明我们持续增强软件功能以促进快速产品部署的承诺。请按此
    发表于 10-26 08:48

    haproxy实现负载均衡和添加日志的步骤

    219 haproxy -------负载均衡,添加日志,访问控制,动静分离,读写分离
    发表于 03-27 06:54

    HAproxy组成与负载均衡集群

    haproxy负载均衡配置
    发表于 04-25 06:29

    Keepalived+Haproxy如何实现高可用负载综合实验

    Keepalived+Haproxy实现高可用负载综合实验
    发表于 06-02 16:53

    企业云桌面要如何部署

    更高的Clouds共享RDP连接云桌面方案,对于应用复杂的部门部署功能更加强大的Cloudv VDI连接云桌面方案,多种云桌面方案混合部署
    发表于 09-23 10:01

    XenApp 6.5 安全标准和部署方案

    XenApp 6.5 安全标准和部署方案
    发表于 09-08 14:04 9次下载
    XenApp 6.5 安全标准和<b class='flag-5'>部署</b><b class='flag-5'>方案</b>

    一种快速、自动部署OpenStack云平台的解决方案

    提出了一种快速、自动部署OpenStack云平台的解决方案,以提高OpenStack的部署效率。该方案首先创建不同节点类型的镜像模板文件;接着根据节点类型(如网络节点、计算节点)将已制
    发表于 12-28 14:05 0次下载
    一种快速、自动<b class='flag-5'>部署</b>OpenStack云平台的解决<b class='flag-5'>方案</b>

    赛灵思可重配置加速堆栈方案,旨在快速开发和部署加速平台

    赛灵思公司(Xilinx)宣布,在2016全球超算大会(SC 16)上宣布推出一套全新的技术——赛灵思可重配置加速堆栈方案,旨在帮助全球最大的云端服务供应商们快速开发和部署加速平台。专门针对云级
    发表于 07-31 09:08 872次阅读

    将英特尔Quickassist技术与HAProxy的配合使用

    了解如何将HAProxy *与英特尔®QuickAssist技术软件配合使用。
    的头像 发表于 11-12 06:29 2807次阅读

    NVR和VSaaS架构部署方案的优缺点,要如何选择

    部署视频监控时,最终用户通常会考虑的第一个问题是采用本地(NVR)还是云(VSaaS)架构。要选择哪种部署方案,需要了解每种部署方案的优缺点
    发表于 07-15 11:36 1122次阅读

    全面剖析HAProxy 负载均衡器

    HAProxy是什么 HAProxy 是一个免费的负载均衡软件,可以运行于大部分主流的 Linux 操作系统上。 HAProxy 提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富
    的头像 发表于 06-28 09:22 2265次阅读
    全面剖析<b class='flag-5'>HAProxy</b> 负载均衡器

    docker-haproxy HAProxy的Docker映像

    ./oschina_soft/docker-haproxy.zip
    发表于 05-13 10:42 1次下载
    docker-<b class='flag-5'>haproxy</b> <b class='flag-5'>HAProxy</b>的Docker映像

    政务外网IPv6深化部署解决方案

    的困难和问题。二、部署方案1.科学合理规划地址:可按政府区域、部门或按现网vlan等本地属性进行划分。2.网络基础设施升级:对网络交换机、路由器、防火墙等进行配置或替换升级。3.构建IPv6安全体系:
    的头像 发表于 04-24 10:41 853次阅读
    政务外网IPv6深化<b class='flag-5'>部署</b>解决<b class='flag-5'>方案</b>