HAproxy部署配置
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部分的结合体
listen admin_stats
bind 0.0.0.0:19088 ##设置监控统计页面的监听的IP和端口
mode http
log 127.0.0.1 local2 err
stats 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 www
bind *: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_blog
default_backend server_default ##表示如果前面都不匹配,则去请求server_default主机
5 backend部分
此部分用于设置后端服务器集群的配置,也是用来添加一组真实服务器,以处理客户端的请求。
backend server_default 定义后端主机,格式为:backend SERVER_NAME
mode http ##实例的运行模式
option redispatch ##次参数用于cookie保持的环境中
option abortonclose ##自动结束当前队列中处理时间较长的进程
balance roundrobin ##定义负载均衡算法,roundrobin为加权轮询算法
cookie SERVERID ##表示允许向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 <name> <address>[:port] [param*]
param为一系列参数,
cookie为当前server指定其cookie值,用于实现基于cookie的会话黏性
weight 设置后端服务器的权重,
check表示启用后端服务器执行健康状态监测,
rise设置从故障状态转换到正常状态需要成功检查的次数,
fall设置后端服务器从从正常状态转换为不可以状态需要检查的次数
disabled:标记为不可用;
redir <prefix>:将发往此server的所有GET和HEAD类的请求重定向至指定的URL
backend server_www
mode http
option redispatch
option abortonclose
balance source ##定义负载均衡算法,source为基于源IP 的算法,可以使同一客户端IP的请求始终被转发至某台特定的后端服务器
cookie SERVERID
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
mode http
option redispatch
option abortonclose
balance roundrobin
cookie SERVERID
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
<VirtualHost 192.168.29.110:80>
DocumentRoot "/data/web1"
<Directory "/data/web1/">
Options Indexes FollowSymLinks
AllowOverride None
Require 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 FollowSymLinks
AllowOverride None
Require 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 FollowSymLinks
AllowOverride None
Require 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)输入用户名密码
(3)登录成功
HAproxy部署配置的更多相关文章
- HAProxy 参数配置
RabbitMQ集群部署完成,通过HAProxy反向代理来提供统一的对RabbitMQ的访问入口. 1.Haproxy提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.(负载均衡策略有很 ...
- 基于MySQL+MHA+Haproxy部署高可用负载均衡集群
一.MHA 概述 MHA(Master High Availability)是可以在MySQL上使用的一套高可用方案.所编写的语言为Perl 从名字上我们可以看到.MHA的目的就是为了维护Master ...
- Jenkins部署配置简介
前段时间研究了一下自动化测试,因而接触到了Jenkins,今天有时间进行一下Jenkins部署配置相关知识的总结分享 前言:由于本次只是实验性研究,采用Windows环境,因此Jenkins可以通过下 ...
- Haproxy ssl 配置方式
通过haproxy redirect请求重定向的方法实现HTTP跳转HTTPS 配置实现http跳转到https,采用redirect重定向的做法,只需在frontend端添加: frontend h ...
- TOMCAT的安装部署配置(配图解)
TOMCAT的安装部署配置 前提已经成功搭建配置JDK 下载好压缩包后,直接解压至某一目录下,目录中不能包含中文 双击安装文件,出现如下界面 点击[NEXT],出现如下界面 点击[I AGREE],出 ...
- PL/SQL安装部署配置(配图解)
PL/SQL安装部署配置 下载好安装包之后,双击exe程序 双击安装程序,出现如下页面 点击[NEXT],出现如下界面 选择[I Accept...],点击[NEXT],出现如下界面 选择安装路径,点 ...
- Haproxy安装配置及日志输出问题
简介: 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载 ...
- JDK的安装及部署配置(配图解)
JDK的安装及部署配置 双击安装文件,出现如下界面 点击[下一步]出现如下界面,更改安装路径(建议安装至D盘), 点击[下一步],出现如下界面,修改文件夹名. 点击[确定],耐心等待 直至出现如下界面 ...
- HAPROXY 配置项/配置实例
HAPROXY 配置项/实例 常用配置选项: OPTION 选项: option httpclose :HAProxy会针对客户端的第一条请求的返回添加cookie并返回给客户端,客户端发送后续请求时 ...
随机推荐
- 【解决】安装compass失败(gem install compass)
原始日期:2016-01-25 16:26 这个问题比较常见. 很多人在安装ruby后再使用gem install compass命令安装compass,发现安装失败. [解决方法:] / ...
- PHP+MySql实现后台数据的读取
我们使用的是PHP 的php_mysqli扩展 首先了解一些基础的用法 1.连接数据库使用 mysqli_connect() 参数:①主机地址 ②MYSQL用户名 ③MYSQL密码 ④选择 ...
- AospExtended K3 Note最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持
AospExtended 最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持 之前用过1629开发版等,体验了很 ...
- 【node】记录项目的开始与完成——pipeline_kafka流式数据库管理项目
前言: 我始终坚信的一点是,学习的效果80%来自总结,甚至全部都是.总结的好处就是让你能翻出你的过往,指出其中的不足,看到未来的改进方法,好的总结更能让知识产生飞跃,所以在工作之余,部署项目之际,总结 ...
- php的laravel数据库版本管理器migration
第一步:连接数据库 打开.env文件.配置DB_HOST DB_PORT DB_DATABASE=LARAVEL DB_USERNAME DB_PASSWORD 注意DB_DATABASE这一项需要自 ...
- php测试题
1. LAMP具体结构不包含下面哪种(A) A:Windows系统 B:Apache服务器 C:MySQL数据库 D:PHP语言 2. 以下哪个SQL语句是正确的(D) A:insert into u ...
- 如何在家自制LED灯?很简单,我来告诉你!
首先LED分凸头.平头和凹头,当中的凹头是没无方向性. 做示宽灯这类晚间才运用的光源,用凹头就好,它没无方向性,可将整个反光碗照亮. 做转向灯等指示性的光源用,准绳上应该用凸头的,它是个聚光镜,投映的 ...
- java excel导出
下面是jsp代码: <li class="btns"><input id="btnExport" class="btn btn-pr ...
- gulp 入门指南
gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率. 在 Web 前端开发工作中有很多"重复工作",比如压缩CSS/JS文件.而这些工作都 ...
- 中文里带半角空格导致的Text换行问题[Unity]
0x01 问题 最近策划反映了个问题,游戏里的多行文本会出现提前换行的问题,如下图所示: 文本错误地提前换行,导致第一行文本后面有大块空白区域 通过观察可以发现,当字符串中带有半角空格,且半角空格后面 ...