haproxy的学习练习实验及总结

1.什么是haproxy

HAProxy 是法国开发者 威利塔罗 (Willy Tarreau) 2000 年使用 C 语言开发的一个开源软件
是一款具备高并发 ( 万级以上 ) 、高性能的 TCP HTTP 负载均衡器
支持基于 cookie 的持久性,自动故障切换,支持正则表达式及 web 状态统计

实验环境配置:一台haproxy,两台RS,分别为RS1,RS2

IP环境

haproxyeth0,172.25.254.100
RS1eth0,172.25.254.10
RS2eth0,172.25.254.20

下载haproxy

\

打开/etc/haproxy/haproxy.cfg配置文件

global属于全局配置,global下的设置会对全局生效

开启多进程(图片说出了,不是线程是进程,两个不一样的

查看进程

启用多线程

查看线程

打开日志配置文件/etc/rsyslog.conf,更改以下参数

打开udp端口

增加haproxy日志路径,haproxy要用local2,在global全局配置中写了

在haproxy中下载apache,RS1中下载apache,RS2中下载nginx,为后面实验做准备

添加错误页面,为10和20赋予权重

测试权重

关闭RS的apache和nginx,测试错误页面

网页重定向

测试:输入IP172.25.254.100跳转到百度

提权。为下面实验做准备

下载socat

socat工具 对服务器动态权重和其它状态可以利用 socat 工具进行调整, Socat Linux 下的一个多功能的网络工 具,名字来由是Socket CAT ,相当于 netCAT 的增强版 .Socat 的主要特点就是在两个数据流之间建立双向 通道,且支持众多协议和链接方式。如 IP TCP UDP IPv6 Socket 文件等

show info

看权重

更改权重

禁用和自启动服务

针对多进程的处理方法,开启多进程,提权两个stats1和stats2

haproxy的算法

静态算法

static-rr基于权重的轮询调度

first算法,不支持动态更改权重

动态算法

roundrobin,基于权重,可动态调整权重

leastconn 加权的最少连接的动态

其他算法

source,基于源地址的算法

uri算法取模法

url_param取模法

根据name不同来访问

hdr 取模法

根据不同的user-agent来访问

\

状态页访问stats设置端口和密码

访问172.25.254.100:9191/status进入状态页

算法总结

#静态
static-rr--------->tcp/http
first------------->tcp/http
#动态
roundrobin-------->tcp/http
leastconn--------->tcp/http
#以下静态和动态取决于hash_type是否consistent
source------------>tcp/http
Uri--------------->http
url_param--------->http
hdr--------------->http

高级功能

基于cookie的会话保持(仅支持http mode,不支持tcp mode

基于cookie的会话保持

四层IP穿透

把RS1的nginx改为apache

更改RS1的apache配置

更改RS2nginx的配置,加上参数proxy_protocol

更改haproxy配置

ACL的学习

什么是ACL

访问控制列表 ACL Access Control Lists
是一种基于包过滤的访问控制技术
它可以根据设定的条件对经过服务器传输的数据包进行过滤 ( 条件匹配 ) 即对接收到的报文进行匹配和过 滤,基于请求报文头部中的源地址、源端口、目标地址、目标端口、请求方法、URL 、文件后缀等信息内 容进行匹配并执行进一步操作,比如允许其通过或丢弃。

ACL的常用参数

#用acl来定义或声明一个acl
acl <aclname> <criterion> [flags] [operator] [<value>]
acl 名称 匹配规范 匹配模式 具体操作符 操作对象类型
acl test path_end -m sub /a
#ACL名称,可以使用大字母A-Z、小写字母a-z、数字0-9、冒号:、点.、中横线和下划线,并且严格区分大
小写,比如:my_acl和My_Acl就是两个完全不同的acl5.8.1.2 ACL-criterion

实验示例

基于域名的访问,haproxy配置更改

打开C:\Windows\System32\drivers\etc修改增加本地解析hosts

测试:curl域名成功

基于域名目录中的关键字访问

这里我设置的是zhou,可以看到www.zhou.org和www.zhou.com都可以访问

这个是基于ip的访问

基于文件后缀名实现动静分离

RS上创建PHP

haproxy配置

访问172.25.254.100/index.php

hdr包括很多很多检索方法,这里我只实例实验了四个,下面的大家可以自己试一试

hdr string ,提取在一个 HTTP 请求报文的首部
hdr [<name> [ <occ>]] ):完全匹配字符串 ,header 的指定信息, <occ> 表示在多值中使用的值的出
现次数
hdr_beg [<name> [ <occ>]] ):前缀匹配, header 中指定匹配内容的 begin
hdr_end [<name> [ <occ>]] ):后缀匹配, header 中指定匹配内容 end
hdr_dom [<name> [ <occ>]] ):域匹配, header 中的 dom host
hdr_dir [<name> [ <occ>]] ):路径匹配, header uri 路径
hdr_len [<name> [ <occ>]] ):长度匹配, header 的长度匹配
hdr_reg [<name> [ <occ>]] ):正则表达式匹配,自定义表达式 (regex) 模糊匹配
hdr_sub [<name> [ <occ>]] ):子串匹配, header 中的 uri 模糊匹配 模糊匹配 c 报文中 a/b/c 也会匹 配

自定义错误页面

在defaults下添加errorfile 503 /etc/haproxy/errorpage/503.http

其中503.http是我们自定义的页面,可以自定义503错误是的页面

haproxy的四层负载

实验环境。RS1和RS2中下载mariadb数据库

打开RS的/etc/my.cnf.d/mariadb-server.cnf进行配置更改

RS1

RS2

haproxy的配置更改

haproxy的https实现

haproxy的配置更改

listen更改为web-https

证书制作命令

haproxy ~]# mkdir /etc/haproxy/certs/
haproxy ~]# openssl req -newkey rsa:2048 \

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值