HAproxy部署配置

HAproxy部署配置

拓扑图
1157397-20170807185146768-742093310.png

说明:

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部分

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

globallog         127.0.0.1 local2 info       ##全局日志配置,local2为日志设备,info为日志级别chroot      /var/lib/haproxypidfile     /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部分的参数对应的值自动被覆盖。

defaultsmode                    http        ##设置haproxy实例默认运行模式,有tcp、http、health三个值log                     global      ##option                  httplogoption                  dontlognulloption http-server-closeoption forwardfor       except 127.0.0.0/8option                  redispatchretries                 3           ##设置后端服务器的失败重试次数timeout http-request    10s     ##timeout queue           1mtimeout connect         5stimeout client          10s     ##设置连接客户端发送数据时的最长等待时间,默认单位为毫秒timeout server          10s     ##设置服务器端回应客户端数据发送的最长等待时间,默认单位为毫秒timeout http-keep-alive 10s ##持久连接的持久时长timeout check           2s      ##设置对后端服务器的监测超时时间,默认单位为毫秒
maxconn                 3000

3 listen部分

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

listen  admin_statsbind    0.0.0.0:19088           ##设置监控统计页面的监听的IP和端口mode    httplog 127.0.0.1 local2 errstats   refresh 30s         ##设置哈haproxy监控统计页面的自动刷新时间stats   uri /haproxy-status ##设置haproxy监控统计页面的URL路径,可随意指定,例如“stats uri  /haproxy-status”,就可以通过http://IP:PORT//haproxy-status查看stats   realm   welcome login\ Haproxy      ##设置登录haproxy统计页面是密码框上的提示信息stats   auth    admin:admin     ##设置登录统计页面的用户名和密码,可同时设置多个,每行一个stats   hide-version            ##用来隐藏统计页面上haproxy的版本信息stats   admin   if  TRUE        ##通过设置此选项,可以在监控页面上手工启动或者禁用后端服务器

4 frontend部分

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

frontend  wwwbind    *:80        ##此选项只能在frontend和listen部分使用,用于定义一个或多个监听的套接字。格式为:bind  [<address>:<port_range>]  interface   <interface>mode    http        ##实例的运行模式option  httplog     ##启用日志记录http请求。默认haproxy日志不记录http请求option  forwardfor  ##在由haproxy发往后端主机的请求报文中添加“X-Forwarded-For”首部,其值前端客户端的地址;用于向后端主发送真实的客户端IP option  httpclose   ##次选项表示在客户端和服务器端完成一次连接请求后,haproxy自动关闭此TCP连接log global      ##表示使用全局的日志级别,引用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_www    hdr_reg(host) -i  ^(www.tb.com|tb.com)  ##正则表达式匹配,表示如果开都有www.tb.com或tb.com acl host_blog   hdr_beg(host) -i blog.          ##表示如果前缀包含blog.字符,则匹配use_backend server_www if host_www      ##表示如果满足host_www 则去请求后端的server_www主机use_backend server_blog if host_blogdefault_backend server_default      ##表示如果前面都不匹配,则去请求server_default主机

5 backend部分

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

backend server_default      定义后端主机,格式为:backend  SERVER_NAMEmode    http            ##实例的运行模式option  redispatch      ##次参数用于cookie保持的环境中option  abortonclose        ##自动结束当前队列中处理时间较长的进程balance  roundrobin     ##定义负载均衡算法,roundrobin为加权轮询算法cookie  SERVERID        ##表示允许向cookie中插入SERVERIDoption 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  <name>  <address>[:port]  [param*]
    param为一系列参数,cookie为当前server指定其cookie值,用于实现基于cookie的会话黏性weight 设置后端服务器的权重,check表示启用后端服务器执行健康状态监测,rise设置从故障状态转换到正常状态需要成功检查的次数,fall设置后端服务器从从正常状态转换为不可以状态需要检查的次数disabled:标记为不可用;redir <prefix>:将发往此server的所有GET和HEAD类的请求重定向至指定的URL
backend server_wwwmode    httpoption  redispatchoption  abortonclosebalance source      ##定义负载均衡算法,source为基于源IP 的算法,可以使同一客户端IP的请求始终被转发至某台特定的后端服务器cookie  SERVERID    option httpchk GET /check_status.jspserver www1 192.168.29.120:80 cookie www1 weight 6 check inter 2000 rise 2 fall 3server www2 192.168.29.121:80 cookie www2 weight 6 check inter 2000 rise 2 fall 3
backend server_blogmode    httpoption  redispatchoption  abortonclosebalance roundrobincookie  SERVERID    option httpchk GET /check_blog.phpserver blog1 192.168.29.130:80 cookie blog1 weight 5 check inter 2000 rise 2 fall 3server 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
<VirtualHost 192.168.29.110:80>DocumentRoot "/data/web1"
<Directory "/data/web1/">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>
</VirtualHost>

(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 
<VirtualHost 192.168.29.120:80>DocumentRoot "/data/web1"ServerName www.tb.com
<Directory "/data/web1/">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>
</VirtualHost>

(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 
<VirtualHost 192.168.29.130:80>DocumentRoot "/data/web1"ServerName www.blog.tb.com
<Directory "/data/web1/">Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>
</VirtualHost>

(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)输入用户名密码
1157397-20170807185214284-998467807.png

(3)登录成功

1157397-20170807185221065-561834858.png

转载于:https://www.cnblogs.com/Sunzz/p/7300777.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javascript验证上传图片大小[前台处理]

2019独角兽企业重金招聘Python工程师标准>>> 需求分析&#xff1a; 在做上传图片的时候&#xff0c;如果不限制上传图片大小&#xff0c;后果非常的严重。那么我们怎样才可以解决一个棘手的问题呢&#xff1f;有两种方式&#xff1a; 1)后台处理&#xff1a; 也就是…

【RK3399Pro学习笔记】十二、ROS参数的使用与编程方法

目录创建功能包参数命令行使用YAML参数文件rosparamC编写程序配置CMakeLists.txt编译并运行python编写程序运行平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | …

Yii2.0 ActiveForm Input Fields

2019独角兽企业重金招聘Python工程师标准>>> 之前5月学习Yii2的时候发现的一个不错的博客内容&#xff0c;这里转载保存。 Use the namespace For ActiveForm Active Form Begin And End Text Input Field TextArea Field Password Input Field HTML5 Email I…

【RK3399Pro学习笔记】十三、ROS中的坐标系管理系统

目录TF功能包能干什么&#xff1f;TF坐标变换如何实现&#xff1f;例程view_framestf_echorviz平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | 一学就会的ROS机…

本地搭建wp,更新升级时需要ftp的解决办法

https://jingyan.baidu.com/article/fd8044fa2e7af35031137af2.html 本地安装完mysql&#xff0c;php&#xff0c;apache后&#xff0c;进行了wordpress的安装。安装完wordpress&#xff0c;发现wordpress已经有了新版本&#xff0c;点击“立即更新”后却跳转到一个填写ftp地址…

【RK3399Pro学习笔记】十四、ROS中tf坐标系广播与监听的编程实现

目录创建功能包如何实现一个tf广播器创建tf广播器代码&#xff08;C&#xff09;如何实现一个tf监听器创建tf监听器代码&#xff08;C&#xff09;配置编译规则编译并运行python编写程序turtle_tf_broadcaster.pyturtle_tf_listener.py运行平台&#xff1a;华硕 Thinker Edge R…

SCOM数据库整理索引计划出错

我们为了提高数据库的访问效率&#xff0c;我们需要对数据库做优化&#xff0c;那么在这里我是希望对我的SCOM的SQL进行索引的整理。当我们在SQL的维护计划中创建了针对SCOM数据库进行重新组织索引的计划后&#xff0c;发现运行总是会失败&#xff0c;这是为什么呢&#xff1f;…

PL/SQL之高级篇

原文地址&#xff1a;http://www.cnblogs.com/sin90lzc/archive/2012/08/30/2661117.html 参考文献&#xff1a;《Oracle完全学习手册》 1.概述 本文主要介绍PL/SQL中的有名程序块&#xff1a;存储过程、函数、包头/包体及触发器的使用。而这些的基础是PL/SQL无名块的编写&…

Charles使用

主要还是移动端的使用技巧 常规使用&#xff1a;同一个wifi&#xff0c;设备开启代理&#xff0c;地址写本机&#xff0c;端口看Charles中的设置 下面说点不怎么常用但是蛮有用的 1.https 这个应该是蛮容易遇到的&#xff0c;设置其实也是蛮简单的 先来看下&#xff0c;未设置之…

JS实现的五级联动菜单效果完整实例

https://www.jb51.net/article/106525.htm 本文实例讲述了JS实现的五级联动菜单效果。分享给大家供大家参考&#xff0c;具体如下&#xff1a; js实现多级联动的方法很多&#xff0c;这里给出一种5级联动的例子&#xff0c;其实可以扩展成N级联动,在做项目的时候碰到了这样一…

【RK3399Pro学习笔记】十五、ROS中launch启动文件的使用方法

目录Launch文件语法<launch><launch><launch><node><node><node>参数设置<param>/<rosparam><param>/<rosparam><param>/<rosparam><arg><arg><arg><remap><remap><…

关于有多少个1的计算

1、题目 输入一个十进制的数&#xff0c;输出 &#xff08;1&#xff09;、给定n&#xff0c;求出从1到n的所有整数中1的个数。&#xff08;暂用用f(n)表示&#xff09; &#xff08;2&#xff09;、求满足nf(n)的最小整数&#xff08;1除外&#xff09;。 #include <ios…

ABP+AdminLTE+Bootstrap Table权限管理系统第八节--ABP错误机制及AbpSession相关

返回总目录:ABPAdminLTEBootstrap Table权限管理系统一期 上一节我们讲到登录逻辑,我做的登录逻辑很简单的,我们来看一下abp module-zero里面的登录代码. #region Login / Logoutpublic ActionResult Login(string returnUrl ""){if (string.IsNullOrWhiteSpace(ret…

P2327 [SCOI2005]扫雷

题目描述 输入输出格式 输入格式&#xff1a; 第一行为N&#xff0c;第二行有N个数&#xff0c;依次为第二列的格子中的数。&#xff08;1< N < 10000&#xff09; 输出格式&#xff1a; 一个数&#xff0c;即第一列中雷的摆放方案数。 输入输出样例 输入样例#1&#xff…

天津海运[600751]股票

2019独角兽企业重金招聘Python工程师标准>>> 天津海运[600751]股票 转载于:https://my.oschina.net/chworld/blog/425583

【RK3399Pro学习笔记】十六、ROS中的常用可视化工具

目录测试rqt_consolerqt_graphrqt_plotrqt_image_viewrqtrvizgazebo平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | 一学就会的ROS机器人入门教程 —— 古月居G…

Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1)

Cocos2d-x 3.2&#xff1a;通过ClippingNode实现一个功能完善的跑马灯公告&#xff08;1&#xff09; 本文转载至深入理解Cocos2d-x 3.x&#xff1a;一步一步通过ClippingNode实现一个功能完善的跑马灯公告&#xff08;1&#xff09; 这篇文章主要是通过一步一步实现一个功能完…

【STC15库函数上手笔记】1、建立工程

目录新建工程添加文件到工程中main.c时钟STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 在STC官网发现了库函数&#xff0c;大受震撼&#xff1a; 宏晶科技官方网站 直接搜“库函数”&#xff0c;目前仅有STC15和STC8系列有库函…

hdu 6086 Rikka with String(AC自动机+状压dp)

题目链接&#xff1a;hdu 6086 Rikka with String 题意&#xff1a; 给你n个只含01的串&#xff0c;和一个长度L,现在让你构造出满足s[i]≠s[|s|−i1] for all i∈[1,|s|] &#xff0c;长度为2L&#xff0c;并且包含给出的n个串&#xff0c;问能有多少种这样的串。 题解&#x…

【STC15库函数上手笔记】2、GPIO

目录硬知识IO口初始化函数测试main.c实验现象STC实验箱4 IAP15W4K58S4 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《STC库函数使用参考》 IO口初始化函数 GPIO_Inilize GPIO_InitTypeDef的定义见于文件"GPIO.H"。 typede…